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,如果有什么错误,希望大家提出宝贵的意见

时间: 2024-08-08 06:00:11

CSS3-3D制作案例分析实战的相关文章

css3 3d 与案例分析

作者:魔洁 聊到3d那我们就先聊聊空间维度,首先一维,比如一条线就是一个一维空间,连点成线在这个空间里这些点只能前进后退,二维空间就是一个平面,这时点不仅可以前进后退还可以左右移动,3维空间也可以说是3d,这时点可以前进后退,左右,上下移动.css3里有几个关于3d运动的属性以及值我做一下解释transform-style:preserve-3d;(transform-style是属性)(preserve-3d是值)(这个属性可以把一个处于2维的div变为3d空间,把这个属性比作一个相机的摄像头

CSS3系列之3D制作

废话不多说: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> * { padding: 0px; margin: 0px; } body { background: black; } h1 { color: red; text-align: cen

一款非常棒的纯CSS3 3D菜单演示及制作教程

原文:一款非常棒的纯CSS3 3D菜单演示及制作教程 这段时间比较忙,很久没在这里分享一些漂亮的HTML5和CSS3资源了,今天起的早,看到一款很不错的CSS3 3D菜单,觉得非常上眼,就将它分享给大家,顺便来分析一下实现的源码.下面是效果图: 看了效果图是不是觉得它是一副麻将,对,第一眼我也认为是用CSS3写的麻将特效,结果我错了,它只是长得比较像而已. 另外,你也可以在这里直接查看菜单的DEMO演示. 接下来再分析一下实现这款3D菜单的源代码. 代码主要由HTML和CSS3组成,应该说还是比

css3+jquery制作3d旋转相册&lt;转&gt;

css3+jquery制作3d旋转相册 首先来看一下今天的炫酷效果: 首先分析一下这张图片: 1.每张图片都有倒影 2.这11张图片呈圆形均匀排列 3.可旋转,上下移动(当然这是效果做出来以后,图片是分析不出来的) 那下面就开始吧. 一.准备 新建三个文件夹分别命名为css,js,img分别存放demo.css,jquery.js.demo.js,11张示例图片.新建demo.html将demo.css,jquery.js,demo.js引入. 二.图片倒影制作 1 <div id="wr

CSS3特效----制作3D旋转照片展示区

任务一.制作多背景 提示:上层有一个径向渐变,渐变图像farthest-side ellipse at center,  rgba(246,241,232,.85) 39%,rgba(212,204,186,.5) 100%),底层使用背景图片. 任务二.控制背景图像尺寸 提示:使用background-size,让两层背景都是全屏显示 任务三.给每个列表项添加过渡动画效果 提示:使用transition属性,给每个列表项.item设置变形过渡效果.transition: -webkit-tra

CSS3 3D变形制作视频展示区

<div id="container"> <h1>CSS3 3D变形制作视频展示区</h1> <div class="wrapper"> <div class="item"> <img src="http://pic2.qiyipic.com/image/20140415/4e/32/5f/v_105669963_m_601_180_101.jpg" />

数据分析师之Excel数据处理与分析实战

Excel数据处理与分析实战 课程学习地址:http://www.xuetuwuyou.com/course/191 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介 本门课程详细介绍了 Microsoft Excel 的应用知识,Excel也称为电子表格,是Microsoft office 套装软件的一个重要组成部分.利用它可以进行各种数据的混合运算外,还可以应用于财务会计.统计分析.证券管理.决策管理以及市场营销等众多领域.正因为它具有如此广泛的应用,所以才得

CSS3 3D transform变换

主要是看了这位大佬的文章,http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/,有的很大的收获,在上一个制作3D变形案例中明白了一些原理. 首先一个立体坐标系: 按照我的理解: 1.认识的突破口:rotateX, rotateY, rotateZ 3D transform中有下面这三个方法: rotateX( angle ) rotateY( angle ) ro

超漂亮的CSS3按钮制作教程分享

要求 必备知识 基本了解CSS语法,初步了解CSS3语法知识. 开发环境 Adobe Dreamweaver CS6/Chrome浏览器 演示地址 演示地址 利用CSS3属性制作按钮,我们只需要用到Gradient属性,不用使用任何图片素材和JavaScript代码,仅仅通过CSS就能制作出好看的渐变按钮.按钮的大小可以通过CSS属性就能轻松的修改,而且它可以使用html的很多标签来制作,比如div,button,span,a,input[‘submit’]等等.下列案例就是通过CSS3制作的按