学习 CSS 之用 CSS 3D 实现炫酷效果
一、前言
把大象关进冰箱需要几步?三步,把冰箱门打开,把大象关进去,把冰箱门关上。
用 CSS 实现 3D 效果需几步?三步,设置透视效果 perspective,改变元素载体为 preserve-3d,对元素进行 3D 转换操作。
perspective 属性决定了我们从什么地方查看元素,定义时的 perspective 属性,它是一个元素的子元素,透视图,而不是元素本身。
再说 3D 转换操作,需要用到的就是 translateX,translateY,translateZ,写到一块就是 translate-3d,除此之外还有 rotateX,rotateY,rotateZ。至于平移和旋转的方向,可以参考下面的三维坐标图:

二、CSS 翻页效果
1.创建透视背景
首先是要创建一个透视背景,也就是一个具有 perspective 属性的 div,这里我给 perspective 的值为800个像素单位。除此之外,还要有一个 div,将所有页面都包括在这个 div 中,这个 div 需要设置 position 为 relative,因为后面的页面都要使用绝对定位,并且要设置 transform-style 属性为 preserve-3d。相关 CSS 代码如下:
.back {
perspective: 800px;
perspective-origin: % %;
overflow: hidden;
margin: 10px;
}
.content {
width: 400px;
height: 400px;
margin: auto;
transform-style: preserve-3d;
position: relative;
}
2.创建页面
在 CSS 类为 content 的 div 中创建多个页面,将除了第一页以外的页面全都“放倒”,即以底边为变换中心,然后在 X 方向上旋转90度,CSS 代码如下:
transform-origin: bottom;
transform: rotateX(90deg);
除此之外,还要设置 transition 属性,页面的 CSS 代码如下:
.page {
width: 360px;
height: 360px;
padding: 20px;
background-color: black;
color: white;
font-weight: bold;
font-size: 300px;
text-align: center;
position: absolute;
}
#p1 {
transform-origin: bottom;
transition: transform 1s linear;
}
#p2,
#p3,
#p4,
#p5,
#p6 {
transform-origin: bottom;
transition: transform 1s linear;
transform: rotateX(90deg);
}
3.添加按钮实现翻页
添加两个按钮用于实现向前翻页和向后翻页。向前翻页时,当前页面在 X 方向上旋转-90度,也就是向前旋转90度倒下了,然后将下一页改为 rotate(0deg) 立起来。向后翻页就是一个逆向的过程了,这里就不再赘述了。控制翻页的 JS 代码如下:
<script>
var curIndex = 1; function previous() {
console.log(curIndex);
if (curIndex === 1) {
return
}
var curPage = document.getElementById("p" + curIndex);
curPage.style.transform = "rotateX(90deg)"; curIndex--;
var prevPage = document.getElementById("p" + curIndex);
prevPage.style.transform = "rotateX(0deg)";
} function next() {
console.log(curIndex);
if (curIndex === 6) {
return
}
var curPage = document.getElementById("p" + curIndex);
curPage.style.transform = "rotateX(-90deg)"; curIndex++;
var nextPage = document.getElementById("p" + curIndex);
nextPage.style.transform = "rotateX(0deg)";
}
</script>
需要注意的是,在向前和向后翻页时,需要对第一页和最后一页进行一个判断。
三、CSS 旋转正方体
1.创建正方体
用 CSS 创建一个旋转的正方体,首先也是要创建一个透视的背景,然后创建六个页面,分别进行平移和旋转操作,构造出一个正方体,CSS 代码如下:
.face {
width: 160px;
height: 160px;
padding: 20px;
color: white;
position: absolute;
transition: transform 1s linear;
}
#f1 {
background-color: aqua;
}
#f2 {
background-color: blue;
transform-origin: right;
transform: rotateY(-90deg)
}
#f3 {
background-color: green;
transform-origin: top;
transform: rotateX(-90deg)
}
#f4 {
background-color: yellow;
transform-origin: bottom;
transform: rotateX(90deg)
}
#f5 {
background-color: red;
transform-origin: left;
transform: rotateY(90deg)
}
#f6 {
background-color: pink;
transform: translateZ(-200px);
}
2.旋转正方体
进行完第一步之后,一个正方体就已经出来了,但是我们还只能看到两个面,这时可以对整体进行一下旋转,就能看到更多的面了。JS 代码如下:
<script>
setInterval(function() {
for (var i = 1; i < 361; i++) {
var ele = document.getElementById("content");
ele.style.transform = "rotate(" + i + "deg)";
}
}, 1000)
</script>
完整代码已上传到 GitHub!
学习 CSS 之用 CSS 3D 实现炫酷效果的更多相关文章
- 仿网易/QQ空间视频列表滚动连播炫酷效果
代码地址如下:http://www.demodashi.com/demo/11201.html 一.准备工作 AndroidStudio 开发环境 需要下载七牛的开源播放器SDK 本例子实现了仿网易/ ...
- 基于skitter的轮播图炫酷效果,幻灯片的体验
概述 包含各种炫酷的轮播切换效果,插件小巧,与其他插件无冲突,可用于移动端和PC端 详细 代码下载:http://www.demodashi.com/demo/11939.html 你还在用原生的js ...
- 用AI制作炫酷效果
PART1:制作第一个效果 步骤一:新建一个800*600的画布. 骤二:从工具栏选“矩形工具”,创建一个800*600的矩形.白色的是画布,浅红色(我的AI之前保留的填充颜色,每个人都不一样)的是你 ...
- Android学习笔记_42_各种图形的炫酷效果的实现和使用
一.文档位置: 这里在android中的图形,在帮助文档的这个页面, android-sdk-windows\docs\guide\topics\resources\drawable-resourc ...
- 3D超炫酷旋转
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 网页样式——各种炫酷效果持续更新ing...
1.evanyou效果-彩带的实现,效果如下 注:这个主要用的是Canvas画布实现的,点击背景绘制新的图形,代码如下: /*Html代码:*/ <canvas id=">< ...
- 【Android开发】安卓炫酷效果集合
1. android-ripple-background 能产生波浪效果的背景图片控件,可以自定义颜色,波浪扩展的速度,波浪的圈数. github地址 2. android-shapeLoadingV ...
- css3使用animation属性实现炫酷效果
animation-name 动画名称,可以有多个值,用逗号隔开,表示绑定了多个动画 animation-name属性为动画指定一个名称 animation-name兼容主流的浏览器,不过还是需要加前 ...
- 【Android】SwipeRefreshLayout的简单使用教程。下拉刷新控件炫酷效果。
作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个最终实现 ...
随机推荐
- maven 多bundle项目
1 环境 eclipse maven jdk1.8 多bundle项目需要一个父项目(聚合模块),起到聚合其他模块的作用,其他模块的管理工具,不包含实际的代码. 新建maven项目-->Crea ...
- [LC] 64. Minimum Path Sum
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...
- python心得二(编码问题)
内容编码 字码发展1.ascii(只识别英文)8位就可以表示所有英文,字符数字,1个字节就可以 2.unicode(万国码)最少两个字节中文三个字节 3.utf-8万国码存在空间浪费英文8位中文24位 ...
- 吴裕雄--天生自然python学习笔记:Python3 MySQL 数据库连接 - PyMySQL 驱动
什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. PyMySQL 遵循 Python 数据库 AP ...
- YY孵化虎牙,陌陌收购探探:你更看好谁?
近日欢聚时代公布了2017第四季财报和全年财报,表现不错.其CFO 金秉表示,虎牙最近向美国证券交易委员会(SEC)提交了注册上市申请书草案文件,可能会在美国IPO上市,以便获取自己的投资者群体以融资 ...
- response读取图片+下载图片
读取图片 import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import ...
- [python每日一练]--0012:敏感词过滤 type2
题目链接:https://github.com/Show-Me-the-Code/show-me-the-code代码github链接:https://github.com/wjsaya/python ...
- 不同浏览器Cookie大小
一.浏览器允许每个域名所包含的 cookie 数:Microsoft 指出 Internet Explorer 8 增加 cookie 限制为每个域名 50 个,但 IE7 似乎也允许每个域名 50 ...
- 简单的java开源图床
出于自用的目的,又找不到Java写的开源的程序,然后使用开源上传组件bootstrap-fileinput用 Spring Boot 写了一个图床 目前支持:七牛云,阿里云 GitHub: https ...
- OpenCV3入门(十一)图像直方图
1.直方图的概念 灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像元的个数.确定图像像素的灰度值范围,以适当的灰度间隔为单位将其划分为若干等级,以横轴表示灰度级,以纵轴表示每一灰度级具有的像素 ...