为什么这样:元素受到换行影响?

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的问题?

UPDATE

我在http://jsfiddle.net/zmVbH/创建了一个演示

det*_*lor 5

问题是换行符是空格,这会使浮动内容掉线.可以通过在</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.

OP更新

是的,内联块修复了这一点,但它并不那么简单,因为内联块有一些不完整的浏览器支持.

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)