为啥使用 :before 高度时,WebKit 上的对齐标记列表不同?
Posted
技术标签:
【中文标题】为啥使用 :before 高度时,WebKit 上的对齐标记列表不同?【英文标题】:Why alignment mark list is different on WebKit when using :before height?为什么使用 :before 高度时,WebKit 上的对齐标记列表不同? 【发布时间】:2017-01-25 15:27:30 【问题描述】:代码:http://jsbin.com/maropaxivo/1/edit?html,css,output
查看示例代码 Firefox 和 Chrome 浏览器。为什么对齐标记列表不同?
li:before
height: 20px;
content: " ";
display: block;
background-color: #ccc;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<ol>
<li>123</li>
<li>123</li>
<li>123</li>
<li>123</li>
<li>123</li>
</ol>
</body>
</html>
【问题讨论】:
【参考方案1】:所以我对这个问题进行了更多调查:
-
这是它现在的行为方式 - 请注意,
before
是 block
元素,而 li
的内容是 inline
。
li:before
height: 20px;
content: " ";
display: block;
background-color: #ccc;
<body>
<ol>
<li>123</li>
<li>123</li>
<li>123</li>
<li>123</li>
<li>123</li>
</ol>
</body>
-
如果我通过将文本包装在
div
中使这两个项目成为块元素,我们的行为相同。
li:before
height: 20px;
content: " ";
display: block;
background-color: #ccc;
<body>
<ol>
<li>
<div>123</div>
</li>
<li>
<div>123</div>
</li>
<li>
<div>123</div>
</li>
<li>
<div>123</div>
</li>
<li>
<div>123</div>
</li>
</ol>
</body>
-
如果我将
before
元素更改为 inline-block
,我们最终将在 Firefox 和 Chrome 中看到相同的行为:
li:before
height: 20px;
content: " ";
display: inline-block;
width: 100%;
background-color: #ccc;
<body>
<ol>
<li>123</li>
<li>123</li>
<li>123</li>
<li>123</li>
<li>123</li>
</ol>
</body>
-
如果我将
before
元素更改为 inline-block
,并将内容保留为 block
,我们将再次在 Firefox 和 Chrome 中看到相同的行为:
li:before
height: 20px;
content: " ";
display: inline-block;
width: 100%;
background-color: #ccc;
<body>
<ol>
<li>
<div>123</div>
</li>
<li>
<div>123</div>
</li>
<li>
<div>123</div>
</li>
<li>
<div>123</div>
</li>
<li>
<div>123</div>
</li>
</ol>
</body>
评论:
因此,每当before
是inline-block
(上述情况3 和4)甚至inline
时,我们都会在Firefox 和Chrome 中看到相同的行为。
在 Firefox 中,数字与第一个内联元素对齐。
在Chrome中,就算是块元素也没关系。
我坚信这种行为是因为list-item
显示的用户代理(浏览器)实现存在细微差别。
结论:
使用inline-block
,您将不会遇到这种差异。
让我知道您对此的反馈。谢谢!
编辑:
因此,如果您希望它看起来像您的代码在两个浏览器中的 Firefox 实现,您可以将 before
绝对 relative
设置为 li
:
li
position: relative;
margin-top: 25px;
li:before
height: 20px;
content: " ";
display: block;
width: 100%;
background-color: #ccc;
position:absolute;
top: -20px;
<body>
<ol>
<li>123</li>
<li>123</li>
<li>123</li>
<li>123</li>
<li>123</li>
</ol>
</body>
【讨论】:
我觉得 Firefox 用的更真实。我们可以像 Firefox 一样为这两种浏览器设置吗? 查看上面的更新答案...让我知道您对此的看法...谢谢!以上是关于为啥使用 :before 高度时,WebKit 上的对齐标记列表不同?的主要内容,如果未能解决你的问题,请参考以下文章
MARGIN-BEFORE MARGIN-AFTER MARGIN-START MARGIN-END
为啥 QWebkit 在 -webkit-scrollbar css 中使用时不解析 file:// 和 qrc://?
如何为 :before 和 :after 伪元素启用 -webkit-animation/transition-property?
margin-before: 1em; margin-after: 1em;margin-start:0px;margin-end: 0px;