Sam*_*Sam 503 css layout colors css3 html-lists
想象一下包含一些<li>
项目的简单未排序列表.现在,我已经将子弹定义为方形通过list-style:square;
但是,如果我设置了<li>
项目的颜色,color: #F00;
那么一切都变成了红色!
虽然我只想设置方形子弹的颜色.是否有一种优雅的方式来定义CSS中子弹的颜色......
HTML
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<ul>
Run Code Online (Sandbox Code Playgroud)
CSS
li{
list-style:square;
}
Run Code Online (Sandbox Code Playgroud)
Lea*_*rou 1013
最常见的方法是这样做:
ul {
list-style: none;
padding: 0;
margin: 0;
}
li {
padding-left: 1em;
text-indent: -.7em;
}
li::before {
content: "• ";
color: red; /* or whatever color you prefer */
}
Run Code Online (Sandbox Code Playgroud)
<ul>
<li>Foo</li>
<li>Bar</li>
<li>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
JSFiddle:http://jsfiddle.net/leaverou/ytH5P/
将适用于所有浏览器,包括版本8及更高版本的IE.
Fac*_*ier 88
浏览前一段时间,发现这个网站,你试过这个替代方案吗?
li{
list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAE0lEQVQIW2NkYGD4D8RwwEi6AACaVAQBULo4sgAAAABJRU5ErkJggg==");
}
Run Code Online (Sandbox Code Playgroud)
听起来很难,但你可以在这里制作自己的png图像/模式,然后复制/粘贴你的代码并自定义你的子弹=)仍然优雅?
编辑:
按照@ lea-verou关于另一个答案的想法并应用这种外部源代码增强的理念,我来到另一个解决方案:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
Run Code Online (Sandbox Code Playgroud)i.e.: fa-angle-right []
并使用f的最后一部分...后跟一个这样的数字,font-family
同样:
li:before {
content: "\f105";
font-family: FontAwesome;
color: red; /* or whatever color you prefer */
margin-right: 4px;
}
Run Code Online (Sandbox Code Playgroud)
就是这样!现在你也有自定义项目符号提示=)
mdt*_*thh 47
我只是像这样解决这个问题,它应该适用于所有浏览器:
HTML:
<ul>
<li><span>Foo</span></li>
<li><span>Bar</span></li>
<li><span>Bat</span></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
CSS:
ul li{
color: red
}
ul li span{
color: blue;
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*lex 45
CSS 3 Lists模块的当前规范确实指定了::marker
伪元素,它将完全符合您的要求; FF经过测试不支持::marker
,我怀疑Safari或Opera是否拥有它.IE当然不支持它.
所以现在,唯一的方法是使用图像list-style-image
.
我想你可以li
用a 包装一个内容,span
然后你可以设置每个的颜色,但这对我来说似乎有些晦涩.
Rah*_*sai 42
一种方法是使用li:before
with content: ""
并将其设计为inline-block
元素.
这是一个有效的代码片段:
ul {
list-style-type: none; /* no default bullets */
}
ul li {
font-family: Arial;
font-size: 18px;
}
ul li:before { /* the custom styled bullets */
background-color: #14CCBB;
border-radius: 50%;
content: "";
display: inline-block;
margin-right: 10px;
margin-bottom: 2px;
height: 10px;
width: 10px;
}
Run Code Online (Sandbox Code Playgroud)
<ul>
<li>Swollen joints</li>
<li>Pain in hands and knees</li>
<li>Redness around joints</li>
<li>Constant fatigue</li>
<li>Morning stiffness in joints</li>
<li>High fevers</li>
<li>Rheumatoid nodules, which develop around joints</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
Jos*_*tos 24
然而,另一种解决方案是使用带有的:before
伪元素border-radius: 50%
.这适用于所有浏览器,包括IE 8及更高版本.
使用该em
单元可以响应字体大小的变化.您可以通过调整jsFiddle窗口的大小来测试它.
ul {
list-style: none;
line-height: 1em;
font-size: 3vw;
}
ul li:before {
content: "";
line-height: 1em;
width: .5em;
height: .5em;
background-color: red;
float: left;
margin: .25em .25em 0;
border-radius: 50%;
}
Run Code Online (Sandbox Code Playgroud)
您甚至可以使用它box-shadow
来创建一些漂亮的阴影,这些content: "• "
解决方案看起来不太好看.
小智 18
我试过这个,事情对我来说很奇怪.(CSS停止工作后,:after {content: "";}
本教程中,我发现,你可以通过只使用彩色子弹的一部分,color:#ddd;
在li
项目本身.
这是一个例子.
li{
color:#ff0000;
list-style:square;
}
a {
text-decoration: none;
color:#00ff00;
}
a:hover {
background-color: #ddd;
}
Run Code Online (Sandbox Code Playgroud)
小智 17
我使用jQuery:
jQuery('li').wrapInner('<span class="li_content" />');
Run Code Online (Sandbox Code Playgroud)
&与一些CSS:
li { color: red; }
li span.li_content { color: black; }
Run Code Online (Sandbox Code Playgroud)
也许是矫枉过正,但如果您正在为CMS编码而且您不想让您的编辑在每个列表项中添加额外的跨度,那么就会很方便.
Phi*_*ger 10
我建议给LI
a background-image
和padding-left
.该list-style-image
属性在跨浏览器环境中很复杂,并且添加额外的元素(例如span)是不必要的.所以你的代码最终会看起来像这样:
li {
background:url(../images/bullet.png) 0 0 no-repeat;
list-style:none;
padding-left:10px;
}
Run Code Online (Sandbox Code Playgroud)
您可以做的最简单的事情就是将内容包装<li>
在一个<span>
或等效的内容中,然后您可以单独设置颜色.
或者,您可以使用所需的子弹颜色制作图像,并使用list-style-image
属性进行设置.
Lea Verou解决方案的变体与多行条目中的完美缩进可能是这样的:
ul{
list-style: none;
position: relative;
padding: 0;
margin: 0;
}
li{
padding-left: 1.5em;
}
li:before {
position: absolute;
content: "•";
color: red;
left: 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在为这个问题添加我的解决方案.
我不想使用图像和验证器会惩罚你在CSS中使用负值,所以我这样做:
ul { list-style:none; padding:0; margin:0; }
li { padding-left:0.75em; position:relative; }
li:before { content:"•"; color:#e60000; position:absolute; left:0em; }
Run Code Online (Sandbox Code Playgroud)
小智 5
我知道这篇文章有点迟到,但供参考......
CSS
ul {
color: red;
}
li {
color: black;
}
Run Code Online (Sandbox Code Playgroud)
子弹颜色在ul标签上定义,然后我们将li颜色切换回来.