当前位置:  开发笔记 > 前端 > 正文

在不使用span的情况下更改HTML列表的项目符号颜色

如何解决《在不使用span的情况下更改HTML列表的项目符号颜色》经验,为你挑选了6个好方法。

我想知道是否有办法改变列表中子弹的颜色.

我有一个这样的列表:

  • House
  • Car
  • Garden

我不可能在li中插入任何内容,例如'span'og a'p'.那么我能以某种聪明的方式改变子弹的颜色而不是文本吗?



1> Marc..:

我管理这个没有添加标记,而是使用li:before.这显然具有所有限制:before(没有旧的IE支持),但它似乎适用于IE8,Firefox和Chrome经过一些非常有限的测试.子弹样式也受到unicode内容的限制.

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


2> rahul..:

如果您可以使用图像,那么您可以这样做.如果没有图像,您将无法仅更改项目符号的颜色,也无法更改文本.

使用图像

li { list-style-image: url(images/yourimage.jpg); }

看到

列表样式图像

不使用图像

然后,您必须编辑HTML标记并在列表中包含一个范围,并使用不同的颜色为li和span着色.



3> Jon Surrell..:

我们可以结合list-style-image使用svgS,我们可以在CSS内联!这种方法提供了令人难以置信的"子弹"控制,它可以成为任何东西.

要获得一个红色圆圈,只需使用以下css:

ul {
  list-style-image: url('data:image/svg+xml,');
}

但这只是一个开始.这允许我们用这些子弹做任何我们想要的疯狂事情.圆形或矩形很容易,但你可以随身携带的任何东西都svg可以粘在那里!看看下面的靶心示例:

ul {
  list-style-image: url('data:image/svg+xml,');
}
ul ul {
  list-style-image: url('data:image/svg+xml,');
}
ul ul ul {
  list-style-image: url('data:image/svg+xml,');
}
ul ul ul ul {
  list-style-image: url('data:image/svg+xml,');
}
ul.bulls-eye {
  list-style-image: url('data:image/svg+xml,');
}
ul.multi-color {
  list-style-image: url('data:image/svg+xml,');
}
  • Big circles!
    • Big rectangles!
    • b
      • Small circles!
      • c
        • Small rectangles!
        • b
  • b
  • Bulls
  • eyes.
  • Multi
  • color


4> jessica..:

建立@Marc的解决方案 - 由于子弹角色以不同的字体和浏览器呈现不同,我使用以下css3技术和border-radius来制作一个我可以更多控制的子弹:

li:before {
    content: '';
    background-color: #898989;
    display: inline-block;
    position: relative;
    height: 12px;
    width: 12px;
    border-radius: 6px;
    -webkit-border-radius: 6px;
    -moz-border-radius: 6px;
    -moz-background-clip: padding;
    -webkit-background-clip: padding-box;
    background-clip: padding-box;
    margin-right: 4px;
    top: 2px;
}


很好的解决方案.我建议将border-radius更改为50%,以便在高度/宽度变化时更灵活一些.

5> 小智..:

我知道这是一个非常非常古老的问题,但我正在玩这个,并提出了一种我没见过的方式.为列表指定一种颜色,然后使用::first-line选择器覆盖文本颜色.我不是专家,所以也许我错过了这种方法有问题,但似乎有效.

li {
  color: blue;
}

li::first-line {
  color: black;
}
  • House
  • Car
  • Garden


6> ddilsaver..:

建立@Marc和@jessica解决方案 - 这是我使用的解决方案:

li { 
   position:relative;
}
li:before {
      content:'';
      display: block;
      position: absolute;
      width: 6px;
      height:6px;
      border-radius:6px;
      left: -20px;
      top: .5em;
      background-color: #000;
}

em用于字体大小,所以如果你设置你的top值,.5em它将始终放在你的第一行文本的中点.我left:-20px之所以使用,是因为这是浏览器中子弹的默认位置:parent padding/2

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有