《前端实战总结》之使用CSS3实现酷炫的3D旋转透视

徐小夕 等级 486 0 0

3D动画效果现在越来越普及,已经被广泛的应用到了各个平台,比如阿里云,华为云,webpack官网等。它可以更接近于真实的展示我们的产品和介绍,带来极强的视觉冲击感。所以说,为了让自己更加优秀,css3 3D动画必不可少。

你将学到

  • CSS3 3D 转换的常用API介绍
  • CSS3 3D 应用场景
  • CSS3 3D 实现一个立方体

开始

1.CSS3 3D 转换的常用API介绍

首先先上一张css 3D的坐标系:

《前端实战总结》之使用CSS3实现酷炫的3D旋转透视 接下来我们来介绍几个常用的api:

旋转
  • rotateX()
  • rotateY()
  • rotateZ() 以上几个api分别代表绕x,y,z轴旋转,如下例子为绕x轴旋转的例子:

《前端实战总结》之使用CSS3实现酷炫的3D旋转透视

相关代码如下:

<style>
.d3-wrap {
    position: relative;
    width: 300px;
    height: 300px;
    margin: 120px auto;
    /* 规定如何在 3D 空间中呈现被嵌套的元素 */
    transform-style: preserve-3d;
    transform: rotateX(0) rotateY(45deg);
    transform-origin: 150px 150px 150px;
}

.rotateX {
    width: 200px;
    height: 200px;
    background-color: #06c;
    transition: transform 2s;
    animation: rotateX 6s infinite;
}

@keyframes rotateX {
    0% {
        transform: rotateX(0);
    }
    100% {
        transform: rotateX(360deg);
    } 
}
</style>
<div class="d3-wrap">
    <div class="rotateX"></div>
</div>
位移(Transform)
  • translateX(x) 定义 3D 转化,仅使用用于 X 轴的值
  • translateY(y) 定义 3D 转化,仅使用用于 Y 轴的值
  • translateZ(z) 定义 3D 转化,仅使用用于 Z 轴的值 以上几个api分别代表相对x,y,z轴的位移,如下例子为向z轴位移的例子:

《前端实战总结》之使用CSS3实现酷炫的3D旋转透视 这里我们需要注意的是为了能看出位移的效果,我们需要在父容器上加如下属性:

.d3-wrap {
    transform-style: preserve-3d;
    perspective: 500;
    /* 设置元素被查看位置的视图 */
    -webkit-perspective: 500;
}

当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。 代码如下:

.d3-wrap {
    position: relative;
    width: 300px;
    height: 300px;
    margin: 120px auto;
    transform-style: preserve-3d;
    perspective: 500;
    -webkit-perspective: 500;
    transform: rotateX(0) rotateY(45deg);
    transform-origin: center center;
}

.transformZ {
    width: 200px;
    height: 200px;
    background-color: #06c;
    transition: transform 2s;
    animation: transformZ 6s infinite;
}

@keyframes transformZ {
    0% {
        transform: translateZ(100px);
    }
    100% {
        transform: translateZ(0);
    } 
}
3D缩放
  • scaleX(x) 给定一个 X 轴的3D 缩放转换值
  • scaleY(x) 给定一个 Y 轴的3D 缩放转换值
  • scaleZ(x) 给定一个 Z 轴的3D 缩放转换值 缩放设置和上面的类似,这里就不做过多介绍了。

理论上说以上三种常见变换已经够用了,值得关注的是我们要想让元素呈现出3D效果,以下不可忽视的API也很重要:

《前端实战总结》之使用CSS3实现酷炫的3D旋转透视

2.CSS3 3D 应用场景

css 3D主要应用在网站的交互和模型效果上,比如:

  • 3D轮播图
  • 3D产品介绍
  • 室内3D仿真
  • h5 3D活动页面,比较典型的就是某年淘宝的年终总结H5
  • 3D数据可视化成图
  • 3D模型图 其实如果css 3D用的熟悉了,一些基本的3D模型完全可以用css画出来。

3.CSS3 3D 实现一个立方体

《前端实战总结》之使用CSS3实现酷炫的3D旋转透视

核心思路就是用6个面去拼接,通过设置rotate和translate来调整相互之间的位置,如下:

《前端实战总结》之使用CSS3实现酷炫的3D旋转透视

具体代码如下:

.container {
    position: relative;
    width: 300px;
    height: 300px;
    margin: 120px auto;
    transform-style: preserve-3d;
    /* 为了让其更有立体效果 */
    transform: rotateX(-30deg) rotateY(45deg);
    transform-origin: 150px 150px 150px;
    animation: rotate 6s infinite;
}
.container .page {
    position: absolute;
    width: 300px;
    height: 300px;
    text-align: center;
    line-height: 300px;
    color: #fff;
    background-size: cover;
}
.container .page:first-child {
    background-image: url(./my.jpeg);
    background-color: rgba(0,0,0,.2);
}
.container .page:nth-child(2) {
    transform: rotateX(90deg);
    transform-origin: 0 0;
    transition: transform 10s;
    background-color: rgba(179, 15, 64, 0.6);
    background-image: url(./my2.jpeg);
}

.container .page:nth-child(3) {
    transform: translateZ(300px);
    background-color: rgba(22, 160, 137, 0.7);
    background-image: url(./my3.jpeg);
}

.container .page:nth-child(4) {
    transform: rotateX(-90deg);
    transform-origin: -300px 300px;
    background-color: rgba(210, 212, 56, 0.2);
    background-image: url(./my4.jpeg);
}
.container .page:nth-child(5) {
    transform: rotateY(-90deg);
    transform-origin: 0 0;
    background-color: rgba(201, 23, 23, 0.6);
    background-image: url(./my5.jpeg);
}
.container .page:nth-child(6) {
    transform: rotateY(-90deg) translateZ(-300px);
    transform-origin: 0 300px;
    background-color: rgba(16, 149, 182, 0.2);
    background-image: url(./my6.jpeg);
}

html结构

<div class="container">
    <div class="page">A</div>
    <div class="page">B</div>
    <div class="page">C</div>
    <div class="page">D</div>
    <div class="page">E</div>
    <div class="page">F</div>
</div>

扩展

我们可以基于上面介绍的,给父元素添加动画或者拖拽效果,这样就可以做成更有交互性的3D方块了,比如置骰子游戏vr场景3D相册等等,具体实现我会抽空依次总结出来,记得关注哦~

最后

如果想了解更多webpack,node,gulp,css3,javascript,nodeJS,canvas等前端知识和实战,欢迎在公众号《趣谈前端》加入我们一起学习讨论,共同探索前端的边界。

《前端实战总结》之使用CSS3实现酷炫的3D旋转透视

更多推荐

收藏
评论区

相关推荐

css3实战汇总(附源码)
本文是继上一篇文章用css3实现惊艳面试官的背景即背景动画(高级附源码)(https://juejin.im/post/6844903950123188237)的续篇也是本人最后一篇介绍css3技巧的文章,因为css这块知识难点不是很多,更多的在于去熟悉css3的新特性和基础理论知识。所以写这篇文章的目的一方面是对自己工作中一些css高级技巧的总结,另一
前端开发中79条不可忽视的知识点汇总
过往一些不足的地方,通过博客,好好总结一下。 1.css禁用鼠标事件 css .disabled { pointerevents: none; cursor: default; opacity: 0.6; } 2.get/post的理解和他们之间的区别 http 超文本传输协议(HTTP)的设计目的是保证客户机
《前端实战总结》之使用CSS3实现酷炫的3D旋转透视
3D动画效果现在越来越普及,已经被广泛的应用到了各个平台,比如阿里云,华为云,webpack官网等。它可以更接近于真实的展示我们的产品和介绍,带来极强的视觉冲击感。所以说,为了让自己更加优秀,css3 3D动画必不可少。 你将学到 CSS3 3D 转换的常用API介绍 CSS3 3D 应用场景 CSS3 3D 实现一个立方体 开始 1.CSS
轻松使用纯css3打造有点意思的故障艺术(附React/Vue加强组件版)
前言 很早之前就看到国外很多酷炫的网站在实践"故障艺术", 或者错位动画", 感觉非常有意思, 现在APP端的抖音启动界面有着这种设计的影子, 作为一名用于探索未知的前端工程师, 有必要好好实践一下这一设计. 正文 接下来笔者将带大家使用纯Css3来实现"故障动画", 并将这一特效封装成React/vue组件, 供大家学习和使用. 先来看看实现的效果:
五福背后的 Web 3D 引擎 Oasis Engine 正式开源
五福背后的 Web 3D 引擎 Oasis Engine 正式开源 作者:Oasis 团队 相信大家已经体验了今年支付宝五福的活动,无论是今年的五福首页还是打年兽游戏都是由蚂蚁互动图形引擎(代号:Oasis Engine)驱动的。 Oasis Engine 是蚂蚁集团 Web 3D
轻松教你使用纯css实现水波动画
css3给我们前端开发带来了很便利, 我们可以使用css3 的新特新实现各种形状和动效, 接下来笔者就来带大家介绍如何用css3实现 H5Dooring编辑器(https://github.com/MrXujiang/h5Dooring) 中的水波动画. (https://imghelloworld.osscnbeijing.aliy
轻松教你使用纯css实现H5-Doorin编辑器中的水波动画
css3给我们前端开发带来了很便利, 我们可以使用css3 的新特性实现各种形状和动效, 接下来笔者就来带大家介绍如何用css3实现 H5Dooring编辑器(https://github.com/MrXujiang/h5Dooring) 中的水波动画. (https://imghelloworld.osscnbeijing.aliy
十分钟打造 3D 物理世界 | Aotu.io「凹凸实验室」
十分钟打造 3D 物理世界 by TH(https://github.com/o2team) on 201
教你用Python制作炫酷的词云
相信大家也都通过各种渠道了解了老干妈与鹅厂的爱恨纠缠,当然其中还混入了迷惑行为的“骗子”、吃瓜吃得飞起的“阿里系”以及连称此事与我无关的“某搜索引擎”。 不过这是一篇技术文,所以无心管他到底是谁的老千妈,一心只想给大家介绍这个惊艳的好东西。 (https://imghelloworld.osscnbeijing.aliyuncs.com/4
原来CSS的background还可以这么玩
身为一个前端开发者,背景是开发中的常客。大到整个网站的主题背景,小到一个按钮的背景。CSS 的 background 属性基本上每天开发都会遇到,绝大多数情况下我们都只会使用到了纯色背景或者图片背景。如果你想让你开发的内容看起来更加生动有趣,通过本文让你用纯CSS也可以开发出炫酷的背景。 开始之前在开始之前,先请你回答下面的问题,如果你能全部回答
30个前端开发人员必备的顶级工具
在本文中,我为前端Web开发人员汇总了30种顶级工具,从代码编辑器和代码游乐场到CSS生成器,JS库等等。 (https://imghelloworld.osscnbeijing.aliyuncs.com/2e7966318084a45d05a0926cbd749a02.png) 目录 CSS代码生成器 CSS3 Generator
这款免费插件,让Excel轻松制作酷炫图表​
大家好,我是小五🐶最近我看一篇介绍如何用Excel来制作径向树图\[1\]的文章,在其中学到了一个很有趣的Excel 加载项。大家可能都知道D3.js吧,它是目前最流行的可视化库之一。而我要给大家介绍这款实用且免费的 Excel 加载项——E2D3呢,就能在 Excel 中轻松实现各种D3的优质图表!比如下面这些👇 3D 动态地图通过经纬度等数据,我们可以将
可微渲染 SoftRas 实践
是目前主流三角网格可微渲染器之一。可微渲染通过计算渲染过程的导数,使得从单张图片学习三维结构逐渐成为现实。可微渲染目前被广泛地应用于三维重建,特别是人体重建、人脸重建和三维属性估计等应用中。 安装conda 安装 PyTorch 环境:bashconda create n torch python3.8 yconda activate torchconda
用Python实现武侠小说中的武打动作残影特效
创作背景“飞雪连天射白鹿,笑书神侠倚碧鸳”,相信很多90后知道这副对联的含义,这是武侠小说作家金庸先生的作品合集,说实话在所有的作品中我最喜欢的是倚天屠龙记和天龙八部,应该说基本都喜欢,但是这两部中的爱恨情仇最为突出,倚天屠龙记中周芷若和赵敏,张无忌,再到天龙八部中的乔峰。 说起来武侠小说中的武林高手是真的帅!现在的电影制作技术越来越高超了,武术特效做
无限想象空间,用Python就能玩的3D人体姿态估计
1 前言 姿态估计,一直是近几年的研究热点。 它就是根据画面,捕捉人体的运动姿态,比如 2D 姿态估计: 再比如 3D 姿态估计: 看着好玩,那这玩应有啥用呢? 自动驾驶,大家应该都不陌生,很多公司研究这个方向。 自动驾驶里,就用到了人体行为识别。 通过摄像头捕捉追踪人体的动作变化,根据肢体动作或变化角度判断人体动作行为,