下面我有一些带有以下伪样式的标题
h2 {
position: relative;
display: inline;
}
h2::before {
content: "";
position: absolute;
background-color: #000;
width: 100vw;
height: 1px;
left: 100%;
margin-left: 20px;
top: 50%;
}
h2::after {
content: "";
position: absolute;
width: 10px;
height: 10px;
top: 50%;
transform: translate(-50%,-50%);
left: 100%;
border-radius: 50%;
border: 1px solid #000;
margin-left: 20px;
}
在Firefox中看起来不错,伪元素将保留在h1文本的第一行之后。
当我在低于500像素的小屏幕上以Chrome响应模式进行测试时,出现了问题。 display:inline
似乎无效。
有什么解决方法可以使Chrome在Firefox中显示我的伪造品吗?
答案 0 :(得分:1)
首先检查此代码,两者的工作原理完全相同 浏览器,
body {
overflow-x: hidden;
}
h2 {
position: relative;
display: inline-block;
clear: both;
float: left;
}
h2::before {
content: "";
position: absolute;
background-color: #000;
width: 100vw;
height: 1px;
left: 100%;
margin-left: 20px;
top: 14px;
}
h2::after {
content: "";
position: absolute;
width: 10px;
height: 10px;
top: 14px;
transform: translate(-50%, -50%);
left: 100%;
border-radius: 50%;
border: 1px solid #000;
margin-left: 20px;
}
<h2>Lorem ipsum dolor sit amet, eiusmod tempor </h2>
<h2>Lorem ipsum dolor sit amet, <br> eiusmod tempor </h2>
<h2>Lorem ipsum dolor sit amet, <br> eiusmod tempor <br> eiusmod tempor</h2>
在两种浏览器中都以两种不同的方式检测到display: inline;
错误。
这导致 ::before
和::after
在两个浏览器中都更改了位置。
我通过将display: inline;
更改为display: inline-block;
来解决此问题,希望对您有所帮助。