【问题标题】:Change the color of a bullet in a html list?更改 html 列表中项目符号的颜色?
【发布时间】:2008-09-16 20:23:47
【问题描述】:

我想要的只是能够将列表中项目符号的颜色更改为浅灰色。它默认为黑色,我不知道如何更改它。

我知道我可以只使用一张图片;如果我能帮上忙,我宁愿不这样做。

【问题讨论】:

  • 我会自己使用图像并避免额外的标记。这可能是更有效的解决方案
  • 谁在乎这样的“额外”标记......说真的,你这样做不会有任何损失。

标签: html css html-lists


【解决方案1】:

项目符号从文本中获取颜色。因此,如果您想在列表中使用与文本不同颜色的项目符号,则必须添加一些标记。

将列表文本包装在一个跨度中:

<ul>
  <li><span>item #1</span></li>
  <li><span>item #2</span></li>
  <li><span>item #3</span></li>
</ul>

然后稍微修改你的样式规则:

li {
  color: red; /* bullet color */
}
li span {
  color: black; /* text color */
}

【讨论】:

  • 正是我需要的!我有一个链接列表,并且这些链接已经应用了不同的颜色样式。
  • 这不是最好的方法。例如,当您有一个带有所见即所得编辑器的 cms 时,这将不起作用。 元素不会被渲染。您可能想要的是使用 :before 和 :after 并忽略 Bullits 本身。这实际上是一种非常糟糕的做法。
  • @KoenHoutman,在撰写本文时(2008 年),它是唯一得到合理支持的技术。即使在今天,这也不是一个坏习惯,并且仍然是具有最广泛浏览器支持的技术,尽管我同意今天(在大多数情况下)我会选择使用:before,如下面的 Marc 回答中所示。
  • 由于您只是更改文本的显示方式,因此b 标签会更合适。
【解决方案2】:

我没有添加标记,而是使用 li:before 来管理它。这显然具有:before 的所有限制(不支持旧的 IE),但经过一些非常有限的测试后,它似乎可以与 IE8、Firefox 和 Chrome 一起使用。它在我们的控制器环境中工作,想知道是否有人可以检查这个。项目符号样式也受到 unicode 的限制。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <style type="text/css">
    li {
      list-style: none;
    }

    li:before {
      /* For a round bullet */
      content:'\2022';
      /* For a square bullet */
      /*content:'\25A0';*/
      display: block;
      position: relative;
      max-width: 0px;
      max-height: 0px;
      left: -10px;
      top: -0px;
      color: green;
      font-size: 20px;
    }
  </style>
</head>

<body>
  <ul>
    <li>foo</li>
    <li>bar</li>
  </ul>
</body>
</html>

【讨论】:

  • 与公认的答案相比,这是 CSS3 更现代的方式
【解决方案3】:

这在 2008 年是不可能的,但很快就会(希望如此)成为可能!

根据The W3C CSS3 specification,您可以使用::marker 伪元素完全控制在列表项之前生成的任何数字、字形或其他符号。 将此应用于投票最多的答案的解决方案:

<ul>
  <li>item #1</li>
  <li>item #2</li>
  <li>item #3</li>
</ul>

li::marker {
  color: red; /* bullet color */
}
li {
  color: black /* text color */
}

JSFiddle Example

但请注意,截至 2016 年 7 月,此解决方案只是 W3C 工作草案的一部分,尚不适用于任何主流浏览器。

如果您想要此功能,请执行以下操作:

【讨论】:

    【解决方案4】:
    <ul>
      <li style="color: #888;"><span style="color: #000">test</span></li>
    </ul>
    

    这种方法的最大问题是额外的标记。 (跨度标签)

    【讨论】:

    • 由于您只是更改文本的显示方式,因此b 标签会更合适。
    • 在编写此代码时,b 标签正处于被弃用的中间,以支持强标签。但是是的,你是对的,现在 b 标签会更合适。
    【解决方案5】:

    您好,也许这个答案已经晚了,但它是实现这一目标的正确答案。

    好吧,事实是你必须指定一个内部标签来使 LIst 文本显示为通常的黑色(或者你想要的任何东西)。但是,您也可以使用 CSS 重新定义任何标签和内部标签。因此,最好的方法是使用 SHORTER 标记进行重新定义

    使用这个 CSS 定义:

    li { color: red; }
    li b { color: black; font_weight: normal; }
    .c1 { color: red; }
    .c2 { color: blue; }
    .c3 { color: green; }
    

    还有这个html代码:

    <ul>
    <li><b>Text 1</b></li>
    <li><b>Text 2</b></li>
    <li><b>Text 3</b></li>
    </ul>
    

    您会得到所需的结果。您还可以使每个光盘的颜色不同:

    <ul>
        <li class="c1"><b>Text 1</b></li>
        <li class="c2"><b>Text 2</b></li>
        <li class="c3"><b>Text 3</b></li>
     </ul>
    

    【讨论】:

    • 你应该使用 。此外, 已被弃用。
    • 计数器指向@the_drow,不推荐使用 stackoverflow.com/questions/1348683/…
    • 设置应用于特定选择器的默认颜色解决了我的问题。谢谢你的提示。
    【解决方案6】:

    只需在图形程序中做一个项目符号并使用list-style-image

    ul {
      list-style-image:url('gray-bullet.gif');
    }
    

    【讨论】:

    • OP 明确不想使用图片,但我在寻找替换子弹的通用方法时遇到了这个问题。所以我认为这个答案很完整。
    • 这是一个带有 SVG 圆圈的,可以轻松上色的:list-style-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Ccircle cx='256' cy='256' r='256' fill='#ff0000' /%3E%3C/svg%3E");
    【解决方案7】:

    使用 span(或其他一些元素)将列表项中的文本包装起来,并将项目符号颜色应用于列表项并将文本颜色应用于 span。

    【讨论】:

      【解决方案8】:

      根据W3C spec

      列表属性...不允许作者为列表标记指定不同的样式(颜色、字体、对齐方式等)...

      但是上面列表中带有跨度的想法应该可以正常工作!

      【讨论】:

        【解决方案9】:
        <ul>
        <li style="color:#ddd;"><span style="color:#000;">List Item</span></li>
        </ul>
        

        【讨论】:

          【解决方案10】:

          如果您有很多页面并且不需要自己编辑标记,则可以使用 Jquery。

          这是一个简单的例子:

          $("li").each(function(){
          var content = $(this).html();
          var myDiv = $("<div />")
          myDiv.css("color", "red"); //color of text.
          myDiv.html(content);
          $(this).html(myDiv).css("color", "yellow"); //color of bullet
          });
          

          【讨论】:

            【解决方案11】:

            对于 2008 年的问题,我想我可能会添加一个更新的最新答案,说明如何更改列表中项目符号的颜色。

            如果您愿意使用外部库Font Awesome gives you scalable vector icons,并且与Bootstrap's helper classes(例如text-success)结合使用,您可以制作一些非常酷且可自定义的列表。

            我已经扩展了下面the Font Awesome list examples page 的摘录:

            使用fa-ulfa-li 轻松替换无序列表中的默认项目符号。

            <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" />
            <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
            
            <ul class="fa-ul">
              <li><i class="fa-li fa fa-circle"></i>List icons</li>
              <li><i class="fa-li fa fa-check-square text-success"></i>can be used</li>
              <li><i class="fa-li fa fa-spinner fa-spin text-primary"></i>as bullets</li>
              <li><i class="fa-li fa fa-square text-danger"></i>in lists</li>
            </ul>

            Font Awesome (mostly) supports IE8,如果你使用older version 3.2.1,只支持IE7。

            【讨论】:

              【解决方案12】:

              如果我们为每个元素设置颜色,它也可以工作,例如: 我现在在左边添加了一些边距。

              <article class="event-item">
                  <p>Black text here</p>
              </article>
              
              .event-item{
                  list-style-type: disc;
                  display: list-item;
                  color: #ff6f9a;
                   margin-left: 25px;
              }
              .event-item p {
                  margin: 0;
                  color: initial;
              }
              

              【讨论】:

                【解决方案13】:

                您可以使用 CSS 来实现这一点。通过以您选择的颜色和样式指定列表,您还可以将文本指定为不同的颜色。

                按照http://www.echoecho.com/csslists.htm 的示例进行操作。

                【讨论】:

                  【解决方案14】:
                  <ul style="color: red;">
                  <li>One</li>
                  <li>Two</li>
                  <li>Three</li>
                  </ul>
                  
                • 一个
                • 两个
                • 三个
                • 【讨论】:

                    【解决方案15】:

                    只需使用 CSS:

                    <li style='color:#e0e0e0'>something</li>
                    

                    【讨论】:

                    • 是的,我也是这么想的...但是样式 li 颜色会改变文本和项目符号的颜色。
                    【解决方案16】:

                    您需要通过 CSS 设置“列表样式”,并为其指定颜色:值。示例:

                    ul.colored {list-style: color: green;}
                    

                    【讨论】:

                      猜你喜欢
                      • 2015-09-11
                      • 2014-11-01
                      • 2016-03-17
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2016-06-07
                      • 1970-01-01
                      相关资源
                      最近更新 更多