- 此问题在此处已有答案**:
::after and ::before pseudo classes blocking anchor tags(2个答案)
昨天关门了。
我的脚本的标题如下所示:
.tickList {
margin: -0.5em 0.5em;
list-style: none;
list-style-position: outside;
}
.tickList li {
padding-left: 25px;
margin-bottom: -1.5em;
margin-top: -1.5em;
margin-left: -3.5em;
text-align: left;
position: relative;
top: -20px;
}
.tickList li:before {
display: block;
content: "\27A5";
font-size: x-large;
color: #41845B;
position: relative;
left: -1.1em;
top: 25px;
}
<ul class="tickList">
<li>Some text <a href="somelink">link text</a>. More text.</li>
</ul>
现在,如果我在浏览器中查看我的页面,链接文本带有下划线,看起来像一个链接,但是,如果我将鼠标移到它上面,光标不会改变,单击它也没有任何效果。我做了一些测试,结果表明,如果我从样式声明中删除.ticklist li:before
部分(或者实际上只是display:block
部分),那么链接就会按预期工作。为什么这段CSS代码会破坏链接功能呢?
请注意,我没有包含任何外部js包,如jQuery或其他任何包。
3条答案
按热度按时间qij5mzcb1#
:before
元素的宽度实际上是页面的100%,尝试定义一个固定的宽度,你会发现覆盖层不再显示。类似的东西
ijxebb2r2#
有很多方法可以解决这个问题,即插入的before元素位于列表项的顶部。尝试将
pointer-events: none;
添加到您的before规则中。这将防止before元素成为任何指针事件的目标,实际上是将其传递到列表项:或者,您也可以将before元素的z-index设置为-1,这样可以有效地将其移到页面后面。
zazmityj3#
同样的结果也可以用更少的努力来实现: