html - 带列的列表对 Webkit/IE 中的错误元素提供悬停效果

标签 html css google-chrome webkit css-multicolumn-layout

今天我遇到了以下问题:如代码片段所示,使用具有多列的列表时,列表项具有 margin-bottom设置为它们,Chrome 不会正确呈现列的底部,将悬停事件发送到错误的 <li>当悬停在底部下方时。

要查看此效果,只需将鼠标悬停在最左侧列中底部元素的底部即可。它简要突出显示单个像素的第 4 个元素,然后突出显示第 3 个元素。

ul {
  columns: 3;
  margin: 0;
  padding: 0;
}

li {
  list-style: none;
  background: #6F6;
  margin-bottom: .4em;
  cursor: pointer;
}

li:hover {
  background: #CFC;
}
<ul>
  <li>Lorem</li>
  <li>Ipsum</li>
  <li>Dolor</li>
  <li>Sit</li>
  <li>Amet</li>
  <li>Consectetur</li>
  <li>Adipiscing</li>
  <li>Elit</li>
</ul>

这似乎只发生在 Chrome(稳定版,69.0.3497.100)和 Safari(以及 Internet Explorer 10 和 11)中,而不是在 FF/Edge 中。即使我添加类似 margin-bottom: -1px; overflow: hidden; 的内容,它似乎也会持续存在到 ul parent 。

我的问题是:有没有什么方法可以防止这种情况发生,而不(显着)改变元素的外观?

编辑:根据要求,这是某人发送的演示,说明了片段中的效果:Weird behaviour of list

编辑 2:将 gif 更改为片段,并添加了有关浏览器版本 (Chrome 69.0.3497.100) 和 IE10/IE11 的信息。 IE 的有趣之处在于,这种效果不再是单个不可见的像素行,而是受影响的可见像素条。请参见下图。 IE version of this bug

最佳答案

你必须改变 li 内置:

margin-bottom: 0.4em

收件人:

margin-bottom: 0.39em

问题仅在以下情况发生:列为 3,边距为 0.4em(6.400px),因此在此版本的 Chrome 中会产生一些圆形问题;/

测试后:0.39em 是 (6.240px) 并且工作正常。

关于html - 带列的列表对 Webkit/IE 中的错误元素提供悬停效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52579968/

相关文章:

Javascript |用于替换当前窗口位置的链接/书签

html - 如何在圆的边缘放置图标

php - 如果它们具有相同的名称,则回显 fetch_array 行

javascript - 从服务器读取txt文件,并将其写入网站

javascript - 是否可以获得有关浏览器颜色的信息?

css - Chrome Zoom 作为媒体查询

javascript 更改事件行为

javascript - 确定启动全屏 iframe 小部件?比。嵌入式?

google-chrome - SVG feGaussianBlur 和 feColorMatrix 滤镜在 Chrome 中不起作用?

javascript - 我必须调用 sendResponse 吗?