ITPub博客

首页 > > > CSS 3D动画(魔方效果,多重立体图,圆柱效果,齿轮效果)

CSS 3D动画(魔方效果,多重立体图,圆柱效果,齿轮效果)

作者:welchang 时间:2019-12-23 17:02:42 0 删除 编辑

本篇文章给大家带来的内容是关于css实现3d动画特效的代码实例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

属性

perspective :透距离,单位像素(值越小,透明距离越近,效果越明显):设置父元素上

perspective-origin: 

transform-style :指定某元素的子元素是位于三维空间内,取值:flat | preserve-3d


一、写一个简单的立方体

1.一个长方体有6个面,我们写6个div,并用一个父元素包裹起来。

<div class="mofang">    <div class="box mian1">1</div>    <div class="box mian2">2</div>    <div class="box mian3">3</div>    <div class="box mian4">4</div>    <div class="box mian5">5</div>    <div class="box mian6">6</div></div>


2.给.mofang设置宽高,并给他设置视距点位置,preserve-3d属性保留子元素3d转换

.mofang{    width: 100px;    height: 100px;    position: absolute;    top: calc(50% - 50px);    left: calc(50% - 50px);    perspective: 3000px;    perspective-origin:-100% -150%;    transform-style: preserve-3d;}

注:视距越小图形越大,反之越小


3.子元素全部绝对定位

.box{    width: 100px;    height: 100px;    text-align: center;    line-height: 100px;    font-size: 20px;    font-weight: bold;    border: 2px solid black;    position: absolute;


4.开始调整6个子元素的位置

.mian1{     background:  rgba(255, 255, 0, 0.3);    transform:  translateY(50px) rotateX(90deg);}学习Q-q-u-n: ⑦⑧④-⑦⑧③-零①②,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习技巧(从零基础开始到前端项目实战教程,学习工具,全栈开发学习路线以及规划)


效果图如下:


5.一个面写好之后,将其余的面都调整好

/*后*/.mian1{    transform: translateZ(-50px);}/*上*/.mian2{    transform: translateY(-50px) rotateX(90deg);}/*左*/.mian3{    transform: translateX(-50px) rotateY(90deg);}/*前*/.mian4{    transform: translateZ(50px);}/*右*/.mian5{    transform: translateX(50px) rotateY(90deg);}/*下*/.mian6{    transform: translateY(50px) rotateX(90deg);}

效果图如下:

css3D动画可以实现很多效果

下面是我写的一些3D动画效果

demo01

html

<div class="wutai">            <div class="mofang">                <div class="box mian1">                    <div class="box1">1</div>                    <div class="box1">2</div>                    <div class="box1">3</div>                    <div class="box1">4</div>                    <div class="box1">5</div>                    <div class="box1">6</div>                    <div class="box1">7</div>                    <div class="box1">8</div>                    <div class="box1">9</div>                </div>                <div class="box mian2">                    <div class="box2">1</div>                    <div class="box2">2</div>                    <div class="box2">3</div>                    <div class="box2">4</div>                    <div class="box2">5</div>                    <div class="box2">6</div>                    <div class="box2">7</div>                    <div class="box2">8</div>                    <div class="box2">9</div>                </div>                <div class="box mian3">                    <div class="box3">1</div>                    <div class="box3">2</div>                    <div class="box3">3</div>                    <div class="box3">4</div>                    <div class="box3">5</div>                    <div class="box3">6</div>                    <div class="box3">7</div>                    <div class="box3">8</div>                    <div class="box3">9</div>                </div>                <div class="box mian4">                    <div class="box4">1</div>                    <div class="box4">2</div>                    <div class="box4">3</div>                    <div class="box4">4</div>                    <div class="box4">5</div>                    <div class="box4">6</div>                    <div class="box4">7</div>                    <div class="box4">8</div>                    <div class="box4">9</div>                </div>                <div class="box mian5">                    <div class="box5">1</div>                    <div class="box5">2</div>                    <div class="box5">3</div>                    <div class="box5">4</div>                    <div class="box5">5</div>                    <div class="box5">6</div>                    <div class="box5">7</div>                    <div class="box5">8</div>                    <div class="box5">9</div>                </div>                <div class="box mian6">                    <div class="box6">1</div>                    <div class="box6">2</div>                    <div class="box6">3</div>                    <div class="box6">4</div>                    <div class="box6">5</div>                    <div class="box6">6</div>                    <div class="box6">7</div>                    <div class="box6">8</div>                    <div class="box6">9</div>                </div>            </div>


css

<style type="text/css">            html,body{                width: 100%;                height: 100%;                margin: 0;                padding: 0;            }            .wutai{                width: 100%;                height: 100%;                border: 1px solid black;                /* background: black; */                margin: 0 auto;            }            .mofang{                width: 100px;                height: 100px;                /* perspective: 2500px;                perspective-origin:-500% -550%; */                transform-style: preserve-3d;                animation: texiao 10s linear infinite alternate;            }            .box{                width: 90px;                height: 90px;                margin: 100px;                text-align: center;                line-height: 30px;                display: grid;                grid-template-columns: 30px 30px 30px;                grid-template-rows:30px 30px 30px;                position: absolute;            }            .box .box1{                border: 1px solid white;                background: #AACCEE;            }            .box .box2{                border: 1px solid white;                background: #FF9966;            }            .box .box3{                border: 1px solid white;                background: #00FFFF;            }            .box .box4{                border: 1px solid white;                background: #FF0000;            }            .box .box5{                border: 1px solid white;                background: #FFFF00;            }            .box .box6{                border: 1px solid white;                background: blueviolet;            }            /* 后*/            .mian1{                transform: translateZ(-45px);            }            /* 左*/            .mian2{                transform: translateX(-45px) rotateY(90deg);            }            /* 上*/            .mian3{                transform: translateY(-45px) rotateX(90deg);            }            /* 右*/            .mian4{                transform: translateX(45px) rotateY(90deg);            }            /* 下*/            .mian5{                transform: translateY(45px) rotateX(90deg);            }            /* 前*/            .mian6{                transform: translateZ(45px);            }            @keyframes texiao{                0%{transform: translate(0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);}                50%{transform: translate(400px) rotateX(0deg) rotateY(360deg) rotateZ(90deg);}                100%{transform: translate(0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg);}            }        </style>


魔方效果


demo02

html

<div class="wutai">            <div class="mofang">                <div class="box mian1">1</div>                <div class="box mian2">2</div>                <div class="box mian3">3</div>                <div class="box mian4">4</div>                <div class="box mian5">5</div>                <div class="box mian6">6</div>                <div class="xiaomofang">                    <div class="box1 mian7">7</div>                    <div class="box1 mian8">8</div>                    <div class="box1 mian9">9</div>                    <div class="box1 mian10">10</div>                    <div class="box1 mian11">11</div>                    <div class="box1 mian12">12</div>                </div>            </div>        </div>


css

<style type="text/css">            .wutai{                width: 700px;                height: 500px;                border: 1px solid black;                background: black;                margin: 0 auto;                /*******/                perspective: 3000px;                perspective-origin:-100% -150%;                /******/            }            .mofang{                width: 100px;                height: 100px;                position: absolute;                top: calc(50% - 50px);                left: calc(50% - 50px);                /******/                perspective: 3000px;                perspective-origin:-100% -150%;                transition: all 500s linear;                transform-style: preserve-3d;                /******/            }            .box{                width: 100px;                height: 100px;                text-align: center;                line-height: 100px;                /* color: white; */                font-size: 20px;                font-weight: bold;                background: rgba(0,0,0,0.5);                border: 2px solid black;                position: absolute;                /******/                transition: all 10s linear;                /******/            }            .mian1{                transform: translateZ(-50px);            }            .mian2{                transform: translateY(-50px) rotateX(90deg);            }            .mian3{                transform: translateX(-50px) rotateY(90deg);            }            .mian4{                transform: translateZ(50px);            }            .mian5{                transform: translateX(50px) rotateY(90deg);            }            .mian6{                transform: translateY(50px) rotateX(90deg);            }            .xiaomofang{                width: 50px;                height: 50px;                position: absolute;                top: calc(50% - 25px);                left: calc(50% - 25px);                perspective: 3000px;                perspective-origin:-100% -150%;                /******/                transform-style: preserve-3d;                transition: all 100s linear;                /******/            }            .box1{                width: 50px;                height: 50px;                text-align: center;                line-height: 50px;                font-size: 20px;                font-weight: bold;                background: rgba(255,255,255,0.2);                border: 2px solid black;                transform-style: preserve-3d;                position: absolute;            }            .xiaomofang .mian7{                transform: translateZ(-27px);            }            .xiaomofang .mian8{                transform: translateY(-27px) rotateX(90deg);            }            .xiaomofang .mian9{                transform: translateX(-27px) rotateY(90deg);            }            .xiaomofang .mian10{                transform: translateZ(27px);            }            .xiaomofang .mian11{                transform: translateY(27px) rotateX(90deg);            }            .xiaomofang .mian12{                transform: translateX(27px) rotateY(90deg);            }            .mofang:hover .mian1{                transform: translateZ(-170px);                background: #00FFFF;                opacity: 0.7;                color: white;            }            .mofang:hover .mian2{                transform: translateY(-170px) rotateX(90deg);                background: #AACCEE;                opacity: 0.7;                color: white;            }            .mofang:hover .mian3{                transform: translateX(-170px) rotateY(90deg);                background: #DCDCDC;                opacity: 0.7;                color: white;            }            .mofang:hover .mian4{                transform: translateZ(170px);                background: #FF0000;                opacity: 0.7;                color: white;            }            .mofang:hover .mian5{                transform: translateX(170px) rotateY(90deg);                background: #FFD700;                opacity: 0.7;                color: white;            }            .mofang:hover .mian6{                transform: translateY(170px) rotateX(90deg);                background: #FF00FF;                opacity: 0.7;                color: white;            }            .mofang:hover{                transform: rotateX(36000deg);            }            .mofang:hover .xiaomofang{                transform: rotateX(9000deg) rotateY(18000deg) rotateZ(36000deg);            }                </style>



多重立体图


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4830/viewspace-3161353/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-17

  • 博文量
    252
  • 访问量
    17981