我有以下HTML:

    <ul>
        <li>
        <div>first</div>
        </li>
        <li>
        <div>first</div>
        </li>
        <li>
        <div>first</div>
        </li>
        <li>
        <div>first</div>
        </li>
    </ul>

和以下CSS规则:

        ul {
            padding: 0;
            border: solid 1px #000;
        }
        li {
            display:inline-block;
            padding: 10px;
            width: 114px;
            border: solid 1px #f00;
            margin: 0;
        }

        li div {
            background-color: #000;
            width: 114px;
            height: 114px;
            color: #fff;
            font-size: 18px;
        }

出于某种奇怪的原因,在Firefox和Chrome中,列表项的周围都有空白.看看firebug,列表项根本没有任何空白,但它们之间似乎有一个空白.

如果稍后我使用以下命令通过javascript添加更多列表项

$('<li><div>added via js</div></li>').appendTo($('ul'));

新元素周围不会出现"边距":

不需要的边距

你知道这里到底发生了什么事吗?

推荐答案

这是由display: inline-block;

li {
    display: inline-block;
    padding: 10px;
    width: 114px;
    border: solid 1px #f00;
    margin: 0;
}

把它改成float: left;.

我以为是填充物,但仔细一看,发现是显示屏:)

Example here美元.


further research之后,我发现inline-block是一种依赖于空格的方法,并在每个元素的右侧呈现4px的边距.

为了避免这种情况,你可以在一行中同时运行所有的li个标签,或者像这样将结束标签和开始标签放在一起:

<ul>
        <li>
            <div>first</div>
        </li><li>
            <div>first</div>
        </li><li>
            <div>first</div>
        </li><li>
            <div>first</div>
        </li>
</ul>

Example here美元.

希望有帮助:)

Css相关问答推荐

如何在CSS calc()中使用反向百分比/无单位计算?

如何让CSS过渡应用时宽度增加,而不是减少?

如何使重复线性渐变适合字体大小?

当面板以Angular 上升时如何定位下拉面板

如何在JavaFX中设置分隔符的样式?

将数据从react组件发送到css文件

覆盖现有像素的混合

同时实现渐变文本和闪光文本效果是否可行?

动态覆盖 Vuetify 类

CSS 不要 Select 包含混合内容的 div 中的第一个元素

在 CSS 中如何使用 100% 和最大内容之间的最大值

普通流,流布局,块和内联布局有什么区别?

Angular Material 中的样式垫 Select

如何保持标题静态,滚动时始终位于顶部?

让 div 占据 100% 身体高度,减go 固定高度的页眉和页脚

如何在 Firefox 和 Opera 中zoom HTML 元素?

CSS - 悬停穿过元素以激活悬停在被覆盖的元素上

可变高度的 CSS 浮动 div

使用 CSS go 除图像之间的空间

仅使用 CSS 交换 DIV 位置