html - 行内 block 列表项中不需要的边距

标签 html css

<分区>

我有以下 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'));

“边距”不会出现在新元素周围:

Unwanted margins

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

最佳答案

这是由 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 .

希望对您有所帮助:)

关于html - 行内 block 列表项中不需要的边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4969082/

相关文章:

html - 如何只允许在主要部分滚动? (HTML 和 CSS)

javascript - 循环 javascript 计时器忽略网页刷新

javascript - 从 Javascript 更改 CSS 规则集

javascript - 与 Thymeleaf 一起使用时切换按钮出现问题

javascript - 如何将 div View 的动画滚动到特定的 x 和 y 坐标

html - 是否可以在 li 标签中使用不同的列表说明符

html - 文章页面中的 H1 - 站点标题或文章标题?

javascript - 放置一个 div 作为 :after of another

javascript - 如何临时给:hover elements加上大纲

ios - 在 xamarin.ios 中使用带有 nativecss 组件的模糊过滤器