37. 悬停时的图像叠加效果 & 鼠标光标渐变跟踪

文化   2024-10-13 11:52   中国香港  

悬停时的图像叠加效果

在悬停时显示一个图像叠加效果。

  • 使用 ::before::after 伪元素分别创建叠加层的顶部和底部条。设置它们的 opacitytransformtransition 以产生所需的效果。
  • 使用 <figcaption> 作为叠加层的文本。设置 display: flexflex-direction: columnjustify-content: center 以将文本居中到图像中。
  • 使用 :hover 伪选择器来更新所有元素的 opacitytransform,并显示叠加层。
<figure class="hover-img">
  <img src="https://picsum.photos/id/200/440/320.jpg"/>
  <figcaption>
    <h3>悬停<br/>文本</h3>
  </figcaption>
</figure>
.hover-img {
  background-color#000;
  color#fff;
  display: inline-block;
  margin8px;
  max-width320px;
  min-width240px;
  overflow: hidden;
  position: relative;
  text-align: center;
  width100%;
}

.hover-img * {
  box-sizing: border-box;
  transition: all 0.45s ease;
}

.hover-img::before,
.hover-img::after {
  background-colorrgba(0000.5);
  border-top32px solid rgba(0000.5);
  border-bottom32px solid rgba(0000.5);
  position: absolute;
  top0;
  bottom0;
  left0;
  right0;
  content'';
  transition: all 0.3s ease;
  z-index1;
  opacity0;
  transformscaleY(2);
}

.hover-img img {
  vertical-align: top;
  max-width100%;
  backface-visibility: hidden;
}

.hover-img figcaption {
  position: absolute;
  top0;
  bottom0;
  left0;
  right0;
  align-items: center;
  z-index1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  line-height1.1em;
  opacity0;
  z-index2;
  transition-delay0.1s;
  font-size24px;
  font-family: sans-serif;
  font-weight400;
  letter-spacing1px;
  text-transform: uppercase;
}

.hover-img:hover::before,
.hover-img:hover::after {
  transformscale(1);
  opacity1;
}

.hover-img:hover > img {
  opacity0.7;
}

.hover-img:hover figcaption {
  opacity1;
}

这个技巧创建了一个引人入胜的图像叠加效果,当用户将鼠标悬停在图像上时,会显示额外的信息。这通常用于图片库、产品展示或任何你想要提供关于图像的额外上下文的地方。

以下是关键点:

  1. HTML 结构使用一个 <figure> 元素作为整个组件的容器,包含图像本身和 <figcaption> 元素。<figcaption> 包含在悬停时出现的叠加文本。

  2. .hover-img 选择器设置整个组件的基本样式。它设置背景颜色、文本颜色、显示类型、边距和尺寸。overflow: hidden 确保任何超出容器边界的内容都会被隐藏。position: relative 为伪元素和 <figcaption> 建立了一个定位上下文。

  3. .hover-img * 选择器将 box-sizing: border-box 应用于所有子元素,确保内边距和边框包含在元素的宽度和高度内。它还为所有属性应用了一个 transition,以创建平滑的悬停效果。

  4. .hover-img::before.hover-img::after 选择器创建叠加层的顶部和底部条。它们最初是透明的(opacity: 0)并且被缩放(transform: scaleY(2))。当悬停时,它们淡入并缩放到其正常大小,创建一个有趣的显示效果。

  5. .hover-img img 选择器设置图像本身的样式。vertical-align: top 确保图像与其容器的顶部对齐。max-width: 100% 确保图像适合容器。backface-visibility: hidden 是一个常用的技巧,可以防止在应用 3D 变换时图像闪烁。

  6. .hover-img figcaption 选择器设置叠加文本的样式。它使用 position: absolutetop, bottom, left, right 属性将其定位在图像的中心。display: flex, flex-direction: columnjustify-content: center 将文本垂直和水平居中。opacity: 0 最初隐藏文本,transition-delay: 0.1s 创建一个轻微的延迟,以便在显示文本之前,条纹有时间出现。

大迁世界
掘金LV8,思否10万+的作者。一个热爱前端的创业者。
 最新文章