html - 具有特定 CSS 的 HTML 列表的奇怪行为

标签 html css

使用这个 CSS:

li { margin-top: -1px;   }
li:before { content: "x"; float:left; }

<!doctype html> , 一个标准 <ul>列表显示了一个变化的模式:

为什么?

删除 margin-top: -1px;或使其为正取消效果:列表正常显示。

这是一个jsfiddle .我检查了 FireFox、Chrome、IE。

列表是

<ul>
    <li>y</li>
    <li>y</li>
    <li>y</li>
</ul>

注意:我的问题不是如何避免它,而是为什么它会发生——理解 CSS 是如何工作的。

最佳答案

float 元素正在裁剪/堆叠。

li:before 上使用 background: red; 可以看到。

Here is the updated fiddle

要么删除 float: left; 要么删除 margin-top: -1px 来修复它。
我建议两者都使用 - float 什么都不做,您可以使用 line-height 而不是 margin-top

关于html - 具有特定 CSS 的 HTML 列表的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45261886/

相关文章:

javascript - Rgba 值未以 ng 样式更新

javascript - jQuery 响应式菜单删除 CSS 背景

javascript - JavaScript 中缺少逻辑

javascript - Bootstrap 让文本看起来像按钮

javascript - 没有 Canvas 的按钮内的圆圈。 html/javascript

html - CSS 文本向右对齐但在换行符处向左对齐

html - 始终获取 2 个 div 以填充包装 div 的宽度

jquery - 如何在页面加载时隐藏 Accordion 并仅在单击元素时显示

html - 如何在 CSS 中在移动设备中垂直对齐 div 标签,在较大屏幕上水平对齐 div 标签?

javascript - 提交多个动态表单