带列的列表对 Webkit/IE 中的错误项目提供悬停效果

List with columns gives hover effect on wrong items in Webkit/IE

今天我 运行 遇到了以下问题:如代码片段所示,使用多列列表时,列表项设置了 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。即使我向 ul 父级添加 margin-bottom: -1px; overflow: hidden; 之类的内容,它似乎也会持续存在。

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

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

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

您必须更改 li 内置:

margin-bottom: 0.4em

收件人:

margin-bottom: 0.39em

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

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