美文网首页
CSS 实现 Turbo 官网 3D 网格线背景动画

CSS 实现 Turbo 官网 3D 网格线背景动画

作者: StoneHui | 来源:发表于2023-07-17 17:02 被阅读0次

转载请注明出处,点击此处 查看更多精彩内容

预览效果

查看 Turbo 官网 时发现它的背景动画挺有意思,就自己动手实现了一下。下面对关键点进行解释说明,查看完整代码及预览效果请 点击这里

简单说明原理:使用 mask-image 遮罩绘制网格,使用 perspectiverotate 动画设置 3D 纵深效果,并添加位移动画即可。

DOM 结构

<div class="container">
  <div class="lines"></div>
</div>
  • .container 容器用来做 3D 变换。
  • .lines 用来绘制网格线并执行动画。

绘制网格线

.lines {
  ...,
  background-image: linear-gradient(90deg, var(--left-line-color) 45%, transparent 50%, var(--right-line-color) 55%);
  -webkit-mask-image: linear-gradient(90deg, #000 2px, transparent 0), linear-gradient(180deg, #000 2px, transparent 0);
  mask-image: linear-gradient(90deg, #000 2px, transparent 0), linear-gradient(180deg, #000 2px, transparent 0);
  -webkit-mask-size: var(--grid-size) var(--grid-size);
  mask-size: var(--grid-size) var(--grid-size);
}
  • background-image 绘制一个从左向右渐变的背景。
  • mask-image 绘制水平和垂直的线条做遮罩。
  • mask-size 设置单个遮罩的尺寸,即网格尺寸。

3D 变换

配置 3D 变换使网格拥有从远处延伸到近前的效果。

.container {
  ...,
  perspective: 1000px;
}

.lines {
  transform: rotateX(75deg);
}

添加动画

@keyframes move {
  from {
    transform: rotateX(75deg) translateY(0);
  }

  to {
    transform: rotateX(75deg) translateY(var(--grid-size));
  }
}

.lines {
  transform: rotateX(75deg) translateY(0);
  animation: move 1s linear infinite;
}

设置动画 Y 轴移动一个网格的长度,并无限循环。

其他

设置顶部和底部遮罩,遮挡住顶部杂乱的线条,并使底部拥有淡出的效果。

.container::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,  var(--bg-color) 50%, transparent);
  z-index: 1;
}

.container::after {
  content: "";
  position: absolute;
  inset: calc(100% - var(--grid-size)) 0 0;
  height: var(--grid-size);
  background: linear-gradient(180deg, transparent, var(--bg-color));
  z-index: 1;
}

相关文章

  • 页面滚动动画-wow.js及Animate.css

    Animate.css 官网 简介Animate.css是一个纯CSS动画库,官方给出了70多种动画特效,使用简单...

  • 图像库 libjpeg-turbo 编译与实践

    今天的主题就是 libjpeg-turbo 。 它的官网地址如下: https://libjpeg-turbo.o...

  • 滴滴官网首页3d地球动画

    最近有个页面的效果需求,要实现一个 3D 地球的动画效果,在寻找效果参考时看到 didiGlobel 官网的效果很...

  • 3D立方体

    CSS3确实很强大,很多高大上的动画都可以实现,这里来实现下3D立方体,效果图如下: html 其实,实现3D立方...

  • animate动画类型

    各种动画类型,具体可查看animate.css[https://animate.style/]官网。 1.boun...

  • 前端开发入门到实战:动画优雅降级的简单总结

    CSS动画优雅降级的简单总结 CSS动画相关属性 transition:兼容性 transform 3D:兼容性 ...

  • CSS3

    一、CSS3 css:层叠样式表。 css3的组成模块:选择器盒模型背景和边框文字特效2D/3D转换动画多列布局用...

  • 随手收集

    one div实现icon one div 实现动态天气 css实现文字3D CSS实现文本干扰效果 CSS实现文...

  • animate.css不生效

    问题描述 按照vue官网添加动画并未成功 产生原因 animate.css版本问题,官网上使用的版本为3.5.1,...

  • css3动画和js动画的比较

    css实现动画:animation transition transformjs实现动画: setInterval...

网友评论

      本文标题:CSS 实现 Turbo 官网 3D 网格线背景动画

      本文链接:https://www.haomeiwen.com/subject/fxpgudtx.html