You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用CSS3动画实现覆盖层右滑以显示图片及加载Logo

实现覆盖层向右滑动显示Logo的CSS3动画方案

嘿,我来帮你搞定这个加载器的滑动效果!你的思路没问题,只需要补全动画关键帧、调整定位属性就能实现想要的效果,咱们一步步来:

核心原理

要让覆盖层向右滑动露出下方的Logo,需要通过CSS3的@keyframes定义动画的起始和结束状态,再把动画绑定到伪元素上,同时调整定位确保元素位置正确。

修改后的完整代码

<div class="outer">
  <div class="underlay">
    <img src="logo.png" alt="loading logo">
  </div>
</div>
.underlay {
  width: 300px;
  height: 300px;
  margin-left: 300px;
  margin-top: 15%;
  position: relative; /* 关键:让伪元素相对它定位 */
  overflow: hidden; /* 确保覆盖层滑出后不显示在容器外 */
}

.underlay:before {
  content: "";
  width: 100%; /* 用100%代替固定值,适配容器大小 */
  height: 100%;
  position: absolute;
  top: 0;
  left: 0; /* 初始位置覆盖整个Logo */
  z-index: 99;
  background: rgba(0, 0, 0, 0.9);
  /* 绑定动画 */
  animation-name: slide;
  animation-duration: 1.5s; /* 滑动时长,可按需调整 */
  animation-timing-function: ease-in-out; /* 动画缓动效果,更自然 */
  animation-fill-mode: forwards; /* 动画结束后保持最后状态 */
}

/* 定义滑动动画的关键帧 */
@keyframes slide {
  0% {
    left: 0; /* 初始位置:完全覆盖Logo */
  }
  100% {
    left: 100%; /* 结束位置:完全滑到容器右侧外面 */
  }
}

关键调整点说明

  • .underlay添加position: relative:让伪元素的绝对定位基于这个父容器,而不是整个页面,避免位置偏移。
  • 把伪元素的宽高改成100%:这样不管容器大小怎么变,覆盖层都能完全覆盖Logo,比固定值更灵活。
  • 补全@keyframes slide:明确动画从左到右的位置变化,实现滑动效果。
  • 添加动画属性:animation-duration控制滑动速度,animation-fill-mode: forwards确保动画结束后不会回弹到初始位置,animation-timing-function让滑动过程更顺滑。

如果想调整滑动的快慢,只需要修改animation-duration的数值就可以啦~

内容的提问来源于stack exchange,提问作者Ahtsham Ul Haq

火山引擎 最新活动