如何为引号中的单独单词着色

How do I color separate words that are in quotation marks

我正在开一家商店,我做了一个“可用颜色”部分,但我希望能够用不同的颜色为单独的单词着色,在 Javascript、css 或 HTML,或者有可能

<button onclick="getColors()">Colors Available</button>
<script>

    function getColors(){
        if(!document.getElementById('colors_ava')){
            let colors_ava = document.createElement('div');
            colors_ava.id = 'colors_ava';
            document.body.appendChild(colors_ava);
            colors_ava.innerText = "Rich Navy  -  True Red  -  Dark Geen  -  Olive Drab Green  -  Patriot Blue";
        }
    }
</script>

您可以使用 util 方法创建带有样式的跨度。

function getColors() {
  function createSpan(str, color) {
    const span = document.createElement("span");
    span.style.color = color;
    span.style.marginRight = "20px";
    span.textContent = str;
    return span;
  }
  if (!document.getElementById("colors_ava")) {
    let colors_ava = document.createElement("div");
    colors_ava.id = "colors_ava";
    document.body.appendChild(colors_ava);
    colors_ava.append(createSpan("Red color - ", "red"));
    colors_ava.append(createSpan("Blue color - ", "blue"));
    // colors_ava.innerText = "Rich Navy  -  True Red  -  Dark Geen  -  Olive Drab Green  -  Patriot Blue";
  }
}
<button onclick="getColors()">Colors Available</button>

您可以保留原始字符串,然后将其拆分为破折号以提取颜色。然后将每种颜色放入其自己的 span 元素中,并使用适当的颜色设置样式。

请注意,有些颜色与 CSS 颜色匹配,而有些则不匹配,因此此代码段使用 CSS 变量来定义它们,代码为每个条目设置变量值。

由于破折号(及其周围的 space)是视觉线索而不是颜色列表中的完整字符,因此此代码段在元素内容和填充之后用伪元素替换了它们。您可能希望根据所需的最终结果来更改此选项。

function getColors() {
  if (!document.getElementById('colors_ava')) {
    let colors_ava = document.createElement('div');
    colors_ava.id = 'colors_ava';
    document.body.appendChild(colors_ava);
    let str = "Rich Navy  -  True Red  -  Dark Geen  -  Olive Drab Green  -  Patriot Blue";
    let str2 = str.replace(/\s/g, ''); //get rid of all the spaces
    let arr = str2.split('-'); //each color goes into an item of an array
    let arr2 = str.split('-'); //as above but with spaces still there in the colors
    for (let i = 0; i < arr.length; i++) {
      const span = document.createElement('span');
      span.style.color = 'var(--' + arr[i] + ')';
      span.innerText = arr2[i];
      colors_ava.appendChild(span);
    }
  }
}
:root {
  --RichNavy: #535E8D;
  --TrueRed: red;
  --DarkGreen: darkgreen;
  --OliveDrabGreen: olivedrab;
  --PatriotBlue: #343A57;
}

span::after {
  content: '-';
  padding: 0 1em;
  color: black;
}

span:last-child::after {
  content: '';
  padding: 0;
}
<button onclick="getColors()">Colors Available</button>