html - Safari:具有绝对位置的 CSS 多列悬停错误?

标签 html css safari css-multicolumn-layout

我有以下简单的 CSS 多列布局:

ul {
  column-count: 3;
}

li {
  display: block;
  position: relative;
}

.hover {
  background-color: rgba(0, 0, 0, .5);
  bottom: 0;
  color: #fff;
  left: 0;
  overflow: hidden;
  position: absolute;
  right: 0;
  top: 100%;
  transition: top .25s ease-in-out;
}

li:hover .hover {
  top: 0;
}

img {
  max-width: 100%;
}
<ul>
  <li><img src="https://picsum.photos/400/50" alt=""></li>
  <li><img src="https://picsum.photos/400/100" alt=""></li>
  <li>
    <img src="https://picsum.photos/400/300" alt="">
    <div class="hover">Lorem ipsum dolor sit amet.</div>
  </li>
</ul>

如果您将鼠标悬停在第三个元素上,则悬停 div 应该与第三个列表元素具有相同的大小并且完全位于相同的位置。这在 Chrome 和 Firefox 中运行良好。

但是,在 Safari 中,悬停 div 也会出现在前两张图片之后的第一列中。

比较:

Chrome:

Chrome Grid Hover

Safari :

Safari Grid Hover

我是否遗漏了什么,或者这只是 Safari 中的一个错误?

我运行的是两种浏览器的最新版本(Chrome 65.0.3325.146 和 Safari 11.0.3)。

最佳答案

你可以试试下面,一般来说这是防止列项被破坏的技巧。

li {
  display: inline-block;
}

ul {
  column-count: 3;
}

li {
  display: inline-block;
  position: relative;
}

.hover {
  background-color: rgba(0, 0, 0, .5);
  bottom: 0;
  color: #fff;
  left: 0;
  overflow: hidden;
  position: absolute;
  right: 0;
  top: 100%;
  transition: top .25s ease-in-out;
}

li:hover .hover {
  top: 0;
}

img {
  max-width: 100%;
}
<ul>
  <li><img src="https://dummyimage.com/400x50" alt=""></li>
  <li><img src="https://dummyimage.com/400x100" alt=""></li>
  <li>
    <img src="https://dummyimage.com/400x300" alt="">
    <div class="hover">Lorem ipsum dolor sit amet.</div>
  </li>
</ul>

关于html - Safari:具有绝对位置的 CSS 多列悬停错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49238310/

相关文章:

javascript - 我在 HTML 中显示 JS 变量时遇到问题

html - 链接显示在每一行,而不是内联

javascript - 从左到右显示图像php

javascript - 将导航固定在滚动条上时如何防止 Chrome 闪烁?

css - Safari Web Inspector 如何知道样式被覆盖的位置

css - 单击 Safari 5.1 选择菜单刷新页面

html - 是否有可能为 html5 进度标签着色?

html - CSS 导航栏不可点击

jquery - 翻转卡效果失败

HTML 选择字体大小