CSS:不是(:最后一个孩子):在select器之后
我有一个元素列表:
<ul> <li>One</li> <li>Two</li> <li>Three</li> <li>Four</li> <li>Five</li> </ul>
和这样的风格:
ul { list-style-type: none; text-align: center; } li { display: inline; } li:not(:last-child):after { content:' |'; }
输出One | Two | Three | Four | Five |
One | Two | Three | Four | Five |
而不是One | Two | Three | Four | Five
One | Two | Three | Four | Five
任何人都知道如何select除了最后一个元素的所有元素?
你可以在这里看到:not()
select器的定义
如果这是不是select器的问题,你可以设置它们,并覆盖最后一个
li:after { content: ' |'; } li:last-child:after { content: ''; }
或者如果以前可以使用,则不需要最后一个孩子
li+li:before { content: '| '; }
每件事似乎都是正确的 你可能想使用下面的CSSselect器,而不是你使用的。
ul > li:not(:last-child):after
你写的例子在Chrome 11中完全适用于我。 也许你的浏览器不支持:not()
select器?
您可能需要使用JavaScript或类似的工具来完成这个跨浏览器。 jQuery在其select器API中实现:not() 。
您的示例在IE中不起作用,您必须在文档中指定Doctype标头才能在IE中以标准方式呈现您的页面以使用CSS内容:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <head> <link href="style.css" rel="stylesheet" type="text/css"> </head> <html> <ul> <li>One</li> <li>Two</li> <li>Three</li> <li>Four</li> <li>Five</li> </ul> </html>
第二种方法是使用CSS 3select器
li:not(:last-of-type):after { content: " |"; }
但是你仍然需要指定Doctype
第三种方法是使用JQuery,如下所示:
<script type="text/javascript" src="jquery-1.4.1.js"></script> <link href="style2.css" rel="stylesheet" type="text/css"> </head> <html> <ul> <li>One</li> <li>Two</li> <li>Three</li> <li>Four</li> <li>Five</li> </ul> <script type="text/javascript"> $(document).ready(function () { $("li:not(:last)").append(" | "); }); </script>
第三种方法的好处是你不必指定doctype,jQuery将兼顾兼容性。
一个使用CSS的例子
ul li:not(:last-child){ border-right: 1px solid rgba(153, 151, 151, 0.75); }