html - 为什么悬停时不透明度的变化会使第二行的 flex children 移动/改变?

标签 html css flexbox

嘿伙计们看看这个例子。 (看全屏)你可以看到元素在悬停时改变不透明度。

然而,flex-wrap 到第二行的 flex items 似乎随着相同的悬停移动或改变高度......它看起来像弹跳效果。除了不透明度,应该没有什么不同。我试过在我的过渡中只针对不透明度,试过 flex: 0 0 23%;所以链接不应该改变大小,但仍然会得到相同的结果。

基本上,因为我添加了不透明度悬停/过渡,第二行 flex 元素在悬停时弹跳。

这是怎么回事?

.nav-dropdown {
  display: block;
  width: 100%;
  max-width: 980px;
  padding: 30px;
  background-color: #fbfbfb;
}

.nav-dropdown-image-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.image-link {
  flex: 0 1 23%;
  margin-bottom: 20px;
}

.image-link a {}

.image-link a img {
  display: block;
  width: 100%;
  margin-bottom: 8px;
  opacity: 1;
  transition: 0.3s;
}

.image-link a img:hover {
  opacity: 0.9;
}
<div class="nav-dropdown">
  <div class="nav-dropdown-image-links">
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
  </div>
</div>

最佳答案

使用下面的样式

.image-link * {
    -webkit-backface-visibility: hidden;
}

link解释我们为什么需要它。

.nav-dropdown {
  display: block;
  width: 100%;
  max-width: 980px;
  padding: 30px;
  background-color: #fbfbfb;
}

.nav-dropdown-image-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.image-link {
  flex: 0 1 23%;
  margin-bottom: 20px;
}

.image-link a {}

.image-link a img {
  display: block;
  width: 100%;
  margin-bottom: 8px;
  opacity: 1;
  transition: 0.3s;
}

.image-link a img:hover {
  opacity: 0.9;
}
.image-link * {
    -webkit-backface-visibility: hidden;
}
<div class="nav-dropdown">
  <div class="nav-dropdown-image-links">
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
    <div class="image-link">
      <a href="https://placeholder.com">
        <img src="http://via.placeholder.com/260x168">
      </a>
    </div>
  </div>
</div>

关于html - 为什么悬停时不透明度的变化会使第二行的 flex children 移动/改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50515050/

相关文章:

html - 在 IE 7/8 中旋转父元素时子元素被剪裁

html - 垂直对齐 Bootstrap 3 中的整行

jquery - 如何为 html 选择标签(跨浏览器)创建自定义设计(带图像)?

html - 显示 :table/table-cell across browsers 的不同行为

css - React Native 中行高的样式非常不寻常

css - 将 2 个内联列垂直放置到背景中间

android - 正确处理禁用/只读文本框的可访问性

javascript - 如何用普通的旧 JavaScript 读取 Angular 表达式

html - 在 div 上应用悬停效果,但不在 h2 上应用

html - 如何垂直和水平定位 SVG 图像中心?