html - 多行内联元素两侧不需要的空间

标签 html css

我有一个水平菜单,其中的按钮可以包含一行或两行文本。对于单行按钮,按钮的宽度等于文本的宽度。但是对于多行按钮,文本两边都会添加额外的空白。

看例子:

menu white space issue

HTML(试过没有换行符和标签之间没有空格,没有帮助):

<ul>
<li><a href="#"><span>Lorem Ipsum</span></a></li>
<li><a href="#"><span>Lorem ipsum dolor sit amet</span></a></li>
<li><a href="#"><span>Lorem Ipsum</span></a></li>
</ul>

CSS:

li {
    display: block;
    float: left;
    max-width: 100px;
    background-color: green;
    text-align: center;
    border-right: 1px solid #fff;
    font-size: 0;
}
li a {
    color: #fff;
    display: block;
}
li a span {
    background-color: red;
    font-size: 16px;
}

说明问题的 fiddle :http://jsfiddle.net/gxy9fa9w/

当然这是一个众所周知的问题,但我尝试的每一个修复都没有帮助:使跨度向左浮动,将 font-size: 0 放在父级上,并将 font- size: 16px on the child, negative box-shadow, various display type on a, span and li... 问题似乎与 a 元素有关:没有,我可以通过使span 向左浮动,但有了它我无法删除这些不需要的空格。

提前致谢。

最佳答案

将此属性添加到 span:

span{
  display:block;
}

因为 span 是内联,所以它不会填充其父级

关于html - 多行内联元素两侧不需要的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27023000/

相关文章:

javascript - 如何在没有 jquery 或需要 main.js 文件的情况下使用 typed.js?

jquery - 避免 jQuery 在响应式导航菜单中覆盖 CSS

javascript - 基于值的 Angular 开关不透明度

css - 如何简化这个 SASS 语句?

javascript - 除非点击移动设备,否则视频海报图片不会显示

javascript - 使用 JavaScript 更改 <frameset> 滚动

javascript - 如何使用 JQuery 正确发现并打印浏览器窗口宽度?为什么行不通?

video - 没有扩展名的html 5视频标签文件

javascript - 使用 Javascript 检测 Opera Mini 浏览器

css - 在没有 JS 的 CSS 动画之后应用样式