CSS3-3D制作案例分析实战
一、前言
上一节,介绍了基础的CSS3 3D动画原理实现,也举了一个小小的例子来演示,但是有朋友跟我私信说想看看一些关于CSS3 3D的实例,所以在这里为了满足一下大家的需求,同时也为了以后能够更好的巩固CSS3 3D的知识,所以在这里写下这篇博文,希望能够帮助你更好的理解3D的制作和实现原理,同时也欢迎各位小伙伴对文中的错误给予指正
二、入门案例分析
这里先说一说我的规划,我打算先从入门级的案例入手,然后依次递推,最后要达到的效果是,理解完所有的例子的设计思路,基本上CSS3-3D制作就能够随心所欲。
1、矩形图片翻滚效果
这个效果比较简单,所以在这里就不多做解释了,先来复习一下上一节说的要创建一个3D环境,我们需要创建一个“灯光”,“舞台”,“演员”(相当于perspective、preserve-3d、image),不清楚的小伙伴请看这里,具体的代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
div div img{
width:300px;
height:300px;
position:absolute;
/* -webkit-transition: all 0.8s; */
}
div div{
-webkit-transition: all 1s;
}
#img1{
-webkit-transform: translateZ(150px);
/* -webkit-transition: all 0.8s; */
}
#img2{
-webkit-transform: rotateX(-90deg) translateZ(150px);
/* -webkit-transition: all 0.8s; */
}
#img3{
-webkit-transform: rotateZ(180deg) translateZ(-150px);
}
#img4{
-webkit-transform: rotateX(90deg) translateZ(150px);
}
#img5{
-webkit-transform:rotateY(90deg) translateZ(150px);
}
#img6{
-webkit-transform: rotateY(-90deg) translateZ(150px);
}
/* div div:hover{
-webkit-transform: rotateX(270deg);
} */
</style>
</head>
<body>
<div style="margin-left: 100px;height:300px;width:300px;position:absolute;perspective: 1000px;">
<div id="box" style="transform-style: preserve-3d;height:300px;width:300px;position: relative;">
<img id="img1" src="1.jpg" />
<img id="img2" src="2.jpg" />
<img id="img3" src="3.jpg" />
<img id="img4" src="4.jpg" />
<img id="img5" src="5.jpg" />
<img id="img6" src="6.jpg" />
</div>
</div>
<div style="margin-left: 700px;margin-top: 100px;">
<input id="btn1" type="button" value="向上翻转90度" />
<input id="btn2" type="button" name="" value="向左翻转90度" />
<input id="btn3" type="button" value="向右翻转90度" />
<input id="btn4" type="button" name="" value="向下翻转90度" />
</div>
<script type="text/javascript" src="http://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>
<script>
var x=0;
var y=0;
var box=$("#box");
$('#btn1').on("click",function(){
var value=90+x*90;
box.css("-webkit-transform","rotateX("+value+"deg)");
x++;
});
$('#btn2').on("click",function(){
var value=y*90+90;
box.css("-webkit-transform","rotateY("+value+"deg)");
y++;
});
$('#btn3').on("click",function(){
y--;
var value=y*90;
box.css("-webkit-transform","rotateX("+value+"deg)"); });
$('#btn4').on("click",function(){
x--;
var value=x*90;
box.css("-webkit-transform","rotateX("+value+"deg)"); });
</script>
</body>
</html>
分析
虽然这个思路浅显易懂,但是作为本文的第一个例子还是想为大家尽量清晰的分析清楚,
1、首先我们创建了一个“灯光”persepctive用来产生3D变化的效果的
2、然后我们创建了一个“舞台” transform-style: preserve-3d
3、创建“演员”,这里的演员指的是每张的图片,在创建的时候要根据你最终要呈现的形态进行建模,也即是平移旋转之类的操作
脚本的编写:在编写脚本的时候有一点是需要注意的,当你把图片旋转90度的时候,如果第二次还是设置90度,那么这个图片是不会发生变化的,因为图片的变化(旋转)是以初始位置为基准的,所以相对于初始位置两次的90度都是一样的所以没有任何的效果。这个在制作的时候,留意一下即可
下载地址详见文章最后
2、矩形自动旋转效果
按照上面的例子进行整改,要实现自动的旋转其实就是定义一个keyframes的运动规则,然后在把这个keyframes套接到animation中,即可实现CSS自动旋转的功能
部分的CSS3代码
div div{
animation:route 10s infinite ease-in-out;
}
//keyframes运动规则
@-webkit-keyframes route{
0%{
-webkit-transform:rotateX(90deg);
}
25%{
-webkit-transform:rotateX(180deg) rotateY(90deg) rotateZ(90deg);
}
50%{
-webkit-transform:rotateX(270deg) rotateY(180deg) rotateZ(180deg);
}
75%{
-webkit-transform:rotateX(360deg) rotateY(270deg) rotateZ(270deg);
}
}
展示效果:
下载地址详见最后
三、CSS3 3D使用特效制作与分析
1、模拟卡牌翻转效果
这个我就不多说怎样制作了,先上效果,图片是来源于蜗牛的,如有侵犯请告知
这个虽然是归类到3D的范围内,但是在使用的时候由于不需要产生平行四边形的变换效果(这个的具体效果详见博主的另外一篇博文),所以不需要使用perspective这个属性,但是确实需要使用到CSS3 3D常见效果中的翻转属性(rotate[X,Y,Z]),这个的具体原理也是简单,但是在使用的时候有两点是需要注意的。
一、因为旋转是相对于卡牌的整体的旋转,也就是两个面都要旋转,所以hover事件要相对于卡牌整体,如果是相对于某一个面的话,那么会出现一个面旋转,而另外一个面不旋转的现象
二、在制作的过程中使用了一个比较少见的属性:backface-visibility,这个属性是为了见图片的背面设置为不可见,从而达到实现翻转的效果
具体代码见文章最后
2、CSS3 3D轮播
说到CSS3 3D轮播主要我们可以分成这样的三类,一类是自动播放的轮播图,另外一类是响应点击事件的轮播图,第三类是两者的结合,即自动播放又响应点击事件,这里我们主要讨论的是前两者,第三类比较复杂这里我们就不多做解释,以后有机会再来跟大家探讨探讨
2.1 自动轮播图
这个的原理我们已经在前面中多次提到了,但是各位要注意一个地方,在keyframes中设置如:
@keyframes test{
o%,
12.5%:{………………}
}
这样的一种形式可以实现轮播图的短暂停留。
好了看一下效果了:
2.2 CSS3触发轮播图
主要的原理是通过判断点击的次数,然后是给图片父类添加旋转的属性,这样这个功能就实现了,我们对上面的例子进行改进,效果如下所示
四、代码下载
这一次代码进行了迁移,从原本自己的服务器迁移到了git服务器,git的下载地址:https://github.com/leslieSie/CSS3_example/tree/develop
五、总结
如果觉得好的话,请为我的git添加个star,如果有什么错误,希望大家提出宝贵的意见
CSS3-3D制作案例分析实战的更多相关文章
- css3 3d 与案例分析
作者:魔洁 聊到3d那我们就先聊聊空间维度,首先一维,比如一条线就是一个一维空间,连点成线在这个空间里这些点只能前进后退,二维空间就是一个平面,这时点不仅可以前进后退还可以左右移动,3维空间也可以说是 ...
- CSS3系列之3D制作
一.序 博主最近这些天,突发奇想的想研究一下CSS3的东西,从而提升一下CSS的能力,在学习的过程中发现其实CSS3是一个挺复杂的东西,深入的研究,你可能会涉及到初中的光学理论来帮助理解一些概念,同时 ...
- 一款非常棒的纯CSS3 3D菜单演示及制作教程
原文:一款非常棒的纯CSS3 3D菜单演示及制作教程 这段时间比较忙,很久没在这里分享一些漂亮的HTML5和CSS3资源了,今天起的早,看到一款很不错的CSS3 3D菜单,觉得非常上眼,就将它分享给大 ...
- [Mugeda HTML5技术教程之16]案例分析:制作跨屏互动游戏
本节我们将要做一个跨屏互动应用的案例分析,该应用时给一家商场做活动使用的,是一个跨屏爱消除游戏.PC端页面显示在连接在PC的大屏幕上,参与活动的玩家可以用自己的手机扫描PC端页面上的二维码,连接成功后 ...
- [Mugeda HTML5技术教程之15]案例分析:制作移动教育课件
本文档要分析的案例是一个一氧化碳还原氧化铜的教育小课件,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作移动教育课件的方法.Mugeda为移动教育领域和移动数字出版领域提供理想的教 ...
- [Mugeda HTML5技术教程之14]案例分析:制作网页游戏
本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法. (一)游戏规则: 1.开始游戏时,手机出现在最上面一行的任意一格: 2 ...
- CSS3特效----制作3D旋转照片展示区
任务一.制作多背景 提示:上层有一个径向渐变,渐变图像farthest-side ellipse at center, rgba(246,241,232,.85) 39%,rgba(212,204, ...
- 《深入理解Java虚拟机》-----第5章 jvm调优案例分析与实战
案例分析 高性能硬件上的程序部署策略 例 如 ,一个15万PV/天左右的在线文档类型网站最近更换了硬件系统,新的硬件为4个CPU.16GB物理内存,操作系统为64位CentOS 5.4 , Resin ...
- 图解CSS3核心技术与案例实战(1)
前言: 我买了一本<图解CSS3核心技术与案例实战>大漠写的,为了提高自己的自觉性呢,抓紧看书,把读书笔记放在这上面,跟大家一起分享,也为督促自己完成读书计划. 文末有微信公众号,感谢你的 ...
随机推荐
- xml与datatable类型互换
//已测 private DataTable ConvertXMLToDataSet(string xmlData) { StringReader stream = null; XmlTextRead ...
- js => ES6一个新的函数写法
今天在网上参观到一个写法,返回字符串个个字母的个数 var arr='aaabbccaa'; var info = arr.split('').reduce((p, k) => (p[k]++ ...
- Unable to extract 64-bitimage. Run Process Explorer from a writeable directory
Unable to extract 64-bitimage. Run Process Explorer from a writeable directory When we run Process E ...
- cocos2dx骨骼动画Armature源码分析(一)
源码分析一body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-to ...
- Android入门开发时注意的两个问题
android开发中的问题: . 开发应用时要访问网络往往会忘记添加网络权限 <uses-permission android:name="android.permission.INT ...
- MPMoviePlayerController属性,方法,通知整理
属性 说明 @property (nonatomic, copy) NSURL *contentURL 播放媒体URL,这个URL可以是本地路径,也可以是网络路径 @property (nonatom ...
- Mysql数据库的基本概念和架构
数据库 1.键:主键是表中的标志列.一个键可能由几列组成.可以使用键作为表格之间的引用. CustomerID是Customers表的主键,当它出现在其他表,例如Orders表中的时候就称它为外键. ...
- arcTo 画 狐行
<!DOCTYPE HTML><head> <meta charset = "utf-8"> <title>starGirl< ...
- 125个工具与技术(PMBOK2008)
名称 定义 适用场景 适用过程 专家判断 对某方面擅长的人就是专家,找专家协助就是专家判断,专家可能是顾问.干系人.PMO.团队成员 制定项目章程.制定项目管理计划.指导与管理项目执行.监控项目工作. ...
- ORACLE外部表总结
外部表介绍 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件.因此,建立外部表时不会产生段.区.数据块等存储结构,只有与表相关的定义放在数据字典中.外部表 ...