gar*_*uan 7 css webkit pseudo-element
我有一个像这样编码的简单菜单
<ul id="main-menu" class="container">
<li><a href="#">About Us</a></li>
<li><a href="#">Home</a></li>
<li><a href="#">Villas & Yachts</a></li>
<li><a href="#">Islands</a></li>
<li><a href="#">Gallery</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Get In Touch</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
看起来像这样

每个菜单项之间的小点是使用:after伪元素创建的.Eveything工作正常,但我还需要子菜单,这将是嵌套列表.
问题是,当我向这样的菜单添加换行符时
<ul id="main-menu" class="container">
<li><a href="#">About Us</a></li>
<li><a href="#">Home</a></li>
<li><a href="#">Villas & Yachts</a>
<!-- LINE BREAK -->
</li>
<li><a href="#">Islands</a>
<!-- LINE BREAK -->
</li>
<li><a href="#">Gallery</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Get In Touch</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我在Safari和Chrome中得到了这个结果(但不是Firefox)......

在我看来,好像webkit将空白视为'pre'.:after元素的CSS看起来像这样
ul#main-menu li:after
{
content: "\00b7";
width: 61px;
float: right;
text-align: center;
border: rgba(225,225,225,0.25) 1px solid;
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过设置white-space: normal/nowrapul,li和:之后的元素不会影响任何东西.
任何人都可以看到我出错的地方,或者这是Webkit/Firefox的问题?
我在http://jsfiddle.net/zmVbH/创建了一个演示
问题是换行符是空格,这会使浮动内容掉线.可以通过在</a>和之间添加一个空格来重现该问题</li>.尝试制作插入的内容display:inline-block而不是浮动.
ul#main-menu li:after
{
content: "\00b7";
width: 61px;
display:inline-block;
text-align: center;
border: rgba(0,0,0,0.25) 1px solid;
white-space: normal;
}
Run Code Online (Sandbox Code Playgroud)
更新了JSFiddle.
是的,内联块修复了这一点,但它并不那么简单,因为内联块有一些不完整的浏览器支持.
ul#main-menu li:after
{
content: "\00b7";
width: 61px;
float: right;
text-align: center;
border: rgba(225,225,225,0.25) 1px solid;
/* FIX */
display:-moz-inline-stack; /* For older versions of Firefox */
display:inline-block; /* Anything that supports inline-block */
/* IE FIX */
zoom:1;
*display:inline;
}
Run Code Online (Sandbox Code Playgroud)