• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 实例详解之怎样使用css实现3D穿梭效果

实例详解之怎样使用css实现3D穿梭效果

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了css穿梭效果,3D穿梭效果等相关知识,希望对您有所帮助

本篇文章给大家带来了怎样使用css来实现星际3D穿越效果的问题,希望对大家有帮助。


实例详解之怎样使用css实现3D穿梭效果


使用 CSS 3D 实现星际 3D 穿梭效果

这个技巧,我在 奇思妙想 CSS 3D 动画 | 仅使用 CSS 能制作出多惊艳的动画? 也有提及过,感兴趣的可以一并看看。

假设我们有这样一张图形:


实例详解之怎样使用css实现3D穿梭效果


这张图先放着备用。在使用这张图之前,我们会先绘制这样一个图形:

<div class="g-container">  <div class="g-group">      <div class="item item-right"></div>      <div class="item item-left"></div>         <div class="item item-top"></div>      <div class="item item-bottom"></div>       <div class="item item-middle"></div>      </div></div>
body {  background: #000;}.g-container {  position: relative;}.g-group {  position: absolute;  width: 100px;  height: 100px;  left: -50px;  top: -50px;  transform-style: preserve-3d;}.item {  position: absolute;  width: 100%;  height: 100%;  background: rgba(255, 255, 255, .5);}.item-right {  background: red;  transform: rotateY(90deg) translateZ(50px);}.item-left {  background: green;  transform: rotateY(-90deg) translateZ(50px);}.item-top {  background: blue;  transform: rotateX(90deg) translateZ(50px);}.item-bottom {  background: deeppink;  transform: rotateX(-90deg) translateZ(50px);}.item-middle {  background: rgba(255, 255, 255, 0.5);  transform: rotateX(180deg) translateZ(50px);}

一共设置了 5 个子元素,不过仔细看 CSS 代码,其中 4 个子元素都设置了 rotateX/Y(90deg/-90deg),也就是绕 X 轴或者 Y 轴旋转了 90°,在视觉上是垂直屏幕的一张平面,所以直观视觉上我们是不到的,只能看到一个平面 .item-middle。

我将 5 个子 item 设置了不同的背景色,结果如下:


实例详解之怎样使用css实现3D穿梭效果


现在看来,好像平平无奇,确实也是。

不过,见证奇迹的时候来了,此时,我们给父元素 .g-container 设置一个极小的 perspective,譬如,设置一个 perspective: 4px,看看效果:

.g-container {  position: relative;+ perspective: 4px;}// ...其余样式保持不变

此时,画风骤变,整个效果就变成了这样:


实例详解之怎样使用css实现3D穿梭效果


由于 perspective 生效,原本的平面效果变成了 3D 的效果。接下来,我们使用上面准备好的星空图,替换一下上面的背景颜色,全部都换成同一张图,神奇的事情发生了:


实例详解之怎样使用css实现3D穿梭效果


由于设置的  perspective 非常之下,而每个 item 的 transform: translateZ(50px) 设置的又比较大,所以图片在视觉上被拉伸的非常厉害。但是整体是充满整个屏幕的。

接下来,我们只需要让视角动起来,给父元素增加一个动画,通过控制父元素的 translateZ() 进行变化即可:

.g-container{  position: relative;  perspective: 4px;  perspective-origin: 50% 50%;}.g-group{  position: absolute;  // ... 一些定位高宽代码  transform-style: preserve-3d;  + animation: move 8s infinite linear;}@keyframes move {  0%{    transform: translateZ(-50px) rotate(0deg);  }  100%{    transform: translateZ(50px) rotate(0deg);  }}

看看,神奇美妙的星空穿梭的效果就出来了,Amazing:


实例详解之怎样使用css实现3D穿梭效果


美中不足之处在于,动画没能无限衔接上,开头和结尾都有很大的问题。

当然,这难不倒我们,我们可以:

通过叠加两组同样的效果,一组比另一组通过负的 animation-delay 提前行进,使两组动画衔接起来(一组结束的时候另外一组还在行进中)

再通过透明度的变化,隐藏掉 item-middle 迎面飞来的突兀感

最后,可以通过父元素的滤镜 hue-rotate 控制图片的颜色变化

我们尝试修改 HTML 结构如下:

<div class="g-container">  <div class="g-group">      <div class="item item-right"></div>      <div class="item item-left"></div>         <div class="item item-top"></div>      <div class="item item-bottom"></div>       <div class="item item-middle"></div>      </div>  <!-- 增加一组动画 -->  <div class="g-group">      <div class="item item-right"></div>      <div class="item item-left"></div>         <div class="item item-top"></div>      <div class="item item-bottom"></div>         <div class="item item-middle"></div>      </div></div>

修改后的核心 CSS 如下:

.g-container{  perspective: 4px;  position: relative;  // hue-rotate 变化动画,可以让图片颜色一直变换  animation: hueRotate 21s infinite linear;}.g-group{  transform-style: preserve-3d;  animation: move 12s infinite linear;}// 设置负的 animation-delay,让第二组动画提前进行.g-group:nth-child(2){  animation: move 12s in
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 实例详解之怎样使用css实现3D穿梭效果

相关文章

  • DEDECMS LOOP标签的用法及调用
  • Photoshop制作漂亮的钢板字
  • CSS如何实现渐变提示框(tooltips)
  • html5以及jQuery实现本地图片上传前的预览代码实例讲解
  • Photoshop设计立体效果的网站推荐图标
  • Photoshop打造快速坠入水的文字特效
  • 实例详解thinkphp6搭建后端api接口
  • 解决微信video、audio 无法自动播放的问题
  • Flex中对表格中某列的值进行数字格式化保留两位小数
  • 看看Vue中如何封装一个自动化注册全局组件

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • Photoshop设计绚丽魔幻效果的艺术字
    • 解决JavaScript中数组排序sort不发生改变
    • 用PHP将女友照片转成可爱的动漫头像!
    • WordPress如何将发表的文章时间显示为XX天前
    • 帝国cms批量替换字段值SQL语法
    • 聊聊laravel怎么快速生成 Services?
    • 手把手教你怎么在小程序中使用字体图标
    • Javascript中window.close如何不提示弹窗
    • thinkphp5与laravel的区别是什么
    • Photoshop绘制玻璃质感的APP软件图标

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有