html5和css3落实的3D滚动特效,知了堂学员笔记

css3D 的魅力

2018/05/23 · CSS ·
3D

初稿出处: 子慕大作家   

一,转换定义:

对于CSS3新增的质量,大家以为最炫酷的应当最属于3D转换和2D转换以及动画了啊!
上边小编将协调对transform中rotate、translate的明亮和豪门享受一下!

html5和css3贯彻的3D滚动特效,html5css33d滚动

明天给我们带来一款html5和css3贯彻的3D滚动特效。效果图如下:

澳门葡京 1

在线预览   源码下载

贯彻的代码。

html代码:

Html代码  澳门葡京 2

  1. <div class=”container”>  
  2.         <div class=”cube”>  
  3.             <div class=”side side1″>  
  4.             </div>  
  5.             <div class=”side side2″>  
  6.             </div>  
  7.             <div class=”side side3″>  
  8.             </div>  
  9.             <div class=”side side4″>  
  10.             </div>  
  11.             <div class=”side side5″>  
  12.             </div>  
  13.             <div class=”side side6″>  
  14.             </div>  
  15.         </div>  
  16.     </div>  
  17.     <div class=”container container2″>  
  18.         <div class=”cube”>  
  19.             <div class=”side side1″>  
  20.             </div>  
  21.             <div class=”side side2″>  
  22.             </div>  
  23.             <div class=”side side3″>  
  24.             </div>  
  25.             <div class=”side side4″>  
  26.             </div>  
  27.             <div class=”side side5″>  
  28.             </div>  
  29.             <div class=”side side6″>  
  30.             </div>  
  31.         </div>  
  32.     </div>  

 css3代码:

Html代码  澳门葡京 3

  1. body{  
  2.   height:100vh;  
  3. }  
  4. .container{  
  5.   position:absolute;  
  6.   height:100px;  
  7.   width:100px;  
  8.   left:33%;  
  9.   top:50%;  
  10.   -webkit-transform: translateX(-50%) translateY(-50%);  
  11.           transform: translateX(-50%) translateY(-50%);  
  12.   -webkit-perspective:400px;  
  13.           perspective:400px;  
  14. }  
  15. .cube{  
  16.   height:100px;  
  17.   widht:100px;  
  18.   -webkit-transform-origin:50% 50%;  
  19.           transform-origin:50% 50%;  
  20.   -webkit-transform-style:preserve-3d;  
  21.           transform-style:preserve-3d;  
  22.   -webkit-animation:rotate 4s infinite ease-in-out;  
  23.           animation:rotate 4s infinite ease-in-out;  
  24.   
  25. }  
  26. .side{  
  27.   position:absolute;  
  28.   display:block;  
  29.   height:100px;  
  30.   width:100px;  
  31. }  
  32. .side1{  
  33.   background:#41C3AC;  
  34.   -webkit-transform:translateZ(100px);  
  35.           transform:translateZ(100px);  
  36. }  
  37. .side2{  
  38.   background:#FF884D;  
  39.   -webkit-transform:rotateY(90deg) translateZ(100px);  
  40.           transform:rotateY(90deg) translateZ(100px);  
  41. }  
  42. .side3{  
  43.   background:#32526E;  
  44.   -webkit-transform:rotateY(180deg) translateZ(100px);  
  45.           transform:rotateY(180deg) translateZ(100px);  
  46. }  
  47. .side4{  
  48.   background:#65A2C5;  
  49.   -webkit-transform:rotateY(-90deg) translateZ(100px);  
  50.           transform:rotateY(-90deg) translateZ(100px);  
  51. }  
  52. .side5{  
  53.   background:#FFCC5C;  
  54.   -webkit-transform:rotateX(90deg) translateZ(100px);  
  55.           transform:rotateX(90deg) translateZ(100px);  
  56. }  
  57. .side6{  
  58.   background:#FF6B57;  
  59. html5和css3落实的3D滚动特效,知了堂学员笔记。  -webkit-transform:rotateX(-90deg) translateZ(100px);  
  60.           transform:rotateX(-90deg) translateZ(100px);  
  61. }  
  62.   
  63. @-webkit-keyframes rotate{  
  64.   0%{  
  65.     -webkit-transform:rotateX(0deg) rotateY(0deg) rotateZ(0deg);  
  66.   }  
  67.   33.33%{  
  68.      -webkit-transform:rotateX(360deg) rotateY(0deg)  rotateZ(0deg);      
  69.   }  
  70.   66.66%{  
  71.      -webkit-transform:rotateX(360deg) rotateY(360deg)  rotateZ(0deg);  
  72.   }  
  73.   100%{  
  74.      -webkit-transform:rotateX(360deg) rotateY(360deg)  rotateZ(360deg);  
  75.   }  
  76. }  
  77. @keyframes rotate{  
  78.   0%{  
  79.     transform:rotateX(0deg) rotateY(0deg);  
  80.   }  
  81.   50%{  
  82.     transform:rotateX(360deg) rotateY(0deg);      
  83.   }  
  84.   100%{  
  85.     transform:rotateX(360deg) rotateY(360deg);  
  86.   }  
  87. }  
  88. a{  
  89.   font-family:helvetica;  
  90.   color:#428bca;  
  91.   text-align:center;  
  92.   display:block;  
  93. }  
  94.   
  95. .container2{  
  96.   left:66%;  
  97. }  
  98. .container2 .side{  
  99.   border-radius:50%;  
  100. }  

今日给我们带来一款html5和css3落实的3D滚动特效。效果图如下:
在线预览源码下载 完毕的代码。…

前言:

近年玩了玩用css来营造3D效果,写了多少个demo,所以博客总计一下。 
在读书那篇博客在此之前,请先活动领会一下css
3D的性质,例如:transform-style,transform-origin,transform, perspective。

   1,能够改变成分的形象,尺寸,地点

3D坐标演示

澳门葡京 4

坐标

值得注意的是:这些坐标系和我们平昔晓得的分裂,那里的y轴向上方向是负的

而笔者辈的z轴的来头实在正是大家面向浏览器的主旋律。假诺大家的意见在革命的正前方,那么从辛巳革命一层到暗红一层往里面看的趋势正是z轴的趋向。

澳门葡京 5

stacking level

demo1

惊人可变的立方体,先来看望末了效果,自身弄得某个丑,假诺设计师调下色,添加点成分应该会窘迫的多

澳门葡京 6澳门葡京 7

1.  我们先用css完毕2个长方体,二个长方体有5个边,大家写伍个div,并用二个div包裹起来

<div class=”cube-box”> <div class=”cube1 cube”></div>
<div class=”cube2 cube”></div> <div class=”cube3
cube”></div> <div class=”cube4 cube”></div> <div
class=”cube5 cube”></div> <div class=”cube6
cube”></div> </div>

1
2
3
4
5
6
7
8
<div class="cube-box">
    <div class="cube1 cube"></div>
    <div class="cube2 cube"></div>
    <div class="cube3 cube"></div>
    <div class="cube4 cube"></div>
    <div class="cube5 cube"></div>
    <div class="cube6 cube"></div>
</div>

2.  给.cube-box设置宽高以及preserve-3d属性保留子成分3d转换,子成分.cube全体纯属定位

.cube-box{ transform-style: preserve-3d; width: 30px; height: 100px;
position: relative; } .cube{ position: absolute; left: 0; top: 0; }

1
2
3
4
5
6
7
8
9
10
11
.cube-box{
    transform-style: preserve-3d;
    width: 30px;
    height: 100px;
    position: relative;
}
.cube{
    position: absolute;
    left: 0;
    top: 0;
}

3. 
先写壹个面.cube1,宽高百分之百一模一样父成分的宽高,背景象为red,代码和功力如下

.cube1{ width: 100%; height: 100%; background: red; }

1
2
3
4
5
.cube1{
    width: 100%;
    height: 100%;
    background: red;
}

澳门葡京 8澳门葡京 9

4. 
为了今后方便大家看看立体效果,未来大家旋转一下父成分,参与如下代码,效果如下

.cube-box{ transform: rotateX(-30deg) rotateY(45deg); }

1
2
3
.cube-box{
    transform: rotateX(-30deg) rotateY(45deg);
}

澳门葡京 10澳门葡京 11

5. 
.cube1作为第2个因素,大家不要求它旋转,它当作暗中同意面,今后拼接第②个面.cube2,遵照.cube1的写法,可是大家设置为深绿,效果如下,.cube2重叠在.cube1上,由此大家还索要旋转.cube2

.cube2{ width: 100%; height: 100%; background: green; }

1
2
3
4
5
.cube2{
    width: 100%;
    height: 100%;
    background: green;
}

澳门葡京 12澳门葡京 13

6. 
大家前几日试着旋转一下.cube2,变成了之类效果。关于rotate的转动方向这里不表达,不懂的爱侣能够自行查看别的文书档案。

.cube2{ width: 100%; height: 100%; background: green; transform:
rotateY(-90deg); }

1
2
3
4
5
6
.cube2{
    width: 100%;
    height: 100%;
    background: green;
    transform: rotateY(-90deg);
}

澳门葡京 14澳门葡京 15

7.  在用translate3d移动一下呢。  效果如下图,屌屌屌。 
但是难题来了,那里的代码不够利索,translate的值须求手动总计,将来宽是30px,供给活动它的4/815px进展拼接,那个值供给大家手动总结写上去,或许到时候用js总结,太low,笔者盼望只供给用js依据后端数据动态设置父成分.cube-box的宽高,子成分全体自适应就行,那样才更好用。

.cube2{ width: 100%; height: 100%; background: green; transform:
rotateY(-90deg) translate3d(15px,0,15px); }

1
2
3
4
5
6
.cube2{
    width: 100%;
    height: 100%;
    background: green;
    transform: rotateY(-90deg) translate3d(15px,0,15px);
}

澳门葡京 16澳门葡京 17

8. 
所以未来大家要采用另一个属性transform-origin,transform-origin暗许是“center
center 0;”可能说“3/6 四分之二0;”,所以在第七个步骤的时候,大家旋转.cube2的时候是基于它本身中间的地方展开的旋转,我们改造一下,把转换的职责定在要素左侧,也如出一辙达到了效果,代码反而更简单了

.cube2{ width: 100%; height: 100%; background: green; transform-origin:
left top; transform: rotateY(-90deg); }

1
2
3
4
5
6
7
.cube2{
    width: 100%;
    height: 100%;
    background: green;
    transform-origin: left top;
    transform: rotateY(-90deg);
}

澳门葡京 18澳门葡京 19

9.  根据.cube2的不二法门大家给.cube3根据同样的写法旋转,并安装莲灰,效果如下

.cube3{ width: 100%; height: 100%; background: blue; transform-origin:
right top; transform: rotateY(90deg); }

1
2
3
4
5
6
7
.cube3{
    width: 100%;
    height: 100%;
    background: blue;
    transform-origin: right top;
    transform: rotateY(90deg);
}

澳门葡京 20澳门葡京 21

10. 
.cube4就有点差异了,下2个面不供给旋转,只须求把.cube1向Z轴方向移动30px宽的职位,X和Y轴能够用width和height作为基数设置比例,比如width是20px,若是要X轴移动20px,能够设置translateX(百分百),可是Z就只能用实际值了。 
所以那里自个儿没有缓解low的题材,作者只可以手动的写上translateZ的值,可能用js来动态赋值。 
效果如下,即使有更好的方案,能够评论博客告知自身。

.cube4{ width: 100%; height: 100%; background: gray; transform-origin:
right top; transform: translateZ(30px); }

1
2
3
4
5
6
7
.cube4{
    width: 100%;
    height: 100%;
    background: gray;
    transform-origin: right top;
    transform: translateZ(30px);
}

澳门葡京 22澳门葡京 23

11. 
.cube5也正是顶面,大家的顶面和低面都是正方形的,.cube5要是写宽高百分百正是圆柱形了,为了不手动照旧动态写中度,那里运用了另一种写法设置width:百分百;不设置height,设置padding-top:百分百;那样同样使.cube5变成了长方形,定义粉黑灰,延X轴转动90度,代码和效果如下

.cube5{ width: 100%; padding-top: 100%; background: pink;
transform-origin: left top; transform: rotateX(90deg); }

1
2
3
4
5
6
7
.cube5{
    width: 100%;
    padding-top: 100%;
    background: pink;
    transform-origin: left top;
    transform: rotateX(90deg);
}

澳门葡京 24澳门葡京 25

12. 
 最终.cube6和.cube5写法一样,只是大家必要把岗位绝对定位到底层,那时候把.cube类设置为光滑度二分一,方便大家查阅,代码和作用如下

.cube6{ width: 100%; padding-top: 100%; background: black; top: inherit;
bottom: 0; transform-origin: left bottom; transform: rotateX(-90deg); }

1
2
3
4
5
6
7
8
9
.cube6{
    width: 100%;
    padding-top: 100%;
    background: black;
    top: inherit;
    bottom: 0;
    transform-origin: left bottom;
    transform: rotateX(-90deg);
}

澳门葡京 26澳门葡京 27

13. 
大家把每三个面都定义为革命,调整一下每贰个面的水彩值,那样看起来就有眼光的功能

澳门葡京 28澳门葡京 29

14. 
 未来长方体已经写好,大家来点动作效果吧,添加几个div.cube-wapper把刚刚的cube-box再封装一层,让cube-box相对定位到父成分尾部,那样中度变化的时候是提升延伸和减弱,js定时器每隔5秒改变一下box的冲天,效果如下

let boxs = document.getElementsByClassName(‘cube-box’);
setInterval(()=>{ for(let item in boxs){ if(boxs[item].style)
boxs[item].style.height = `${Math.random()*300}px`; } },5000)

1
2
3
4
5
6
let boxs = document.getElementsByClassName(‘cube-box’);
setInterval(()=>{
    for(let item in boxs){
        if(boxs[item].style) boxs[item].style.height = `${Math.random()*300}px`;
    }
},5000)

澳门葡京 30澳门葡京 31

15.  语无伦次啊,怎么尾部依旧有活动? 
原因是我们tranform的rotate写在了.cube-box上,其中度改变的时候,会碰到旋转的熏陶导致地方偏移,因而把.cube-box的tranform写到.cube-wrapper上去便没有那几个难题了。效果如下

澳门葡京 32澳门葡京 33

   2,转换分三种:

语法解释

transform:rotateX(40deg);
//那句话解释该成分绕X轴顺时针旋转40度
tranform:rotateY(40deg);
//该因素绕y轴顺时针旋转40度
transform:rotateZ(-40deg);
//该成分绕z轴逆时针旋转40度
transform:translateX(50px);
//该因素朝x轴的方框向(右)移动50像素
transfrom:translateY(-50px);
//该因素朝y轴的负方向(上)移动50像素
transform:translateZ(50px);
//该因素朝z轴的正方向(朝向大家)移动50像素
transform:translateZ(-50px);
//该因素朝z轴负方向(往显示器中间)移动50像素

下图是以上代码的实例图:

澳门葡京 34

示例图

此处运用到了perspective以此天性,他的中文翻译是“透视”的意思。

澳门葡京 35

透视

澳门葡京 36

透视

语法是:perspective:numbernumber越大,(大家的看法离图像越远)也正是肉眼看图像的相距越远。
本条天性能够 设置在急需定义透视的成分上 也足以 设置在它的父元素上。
学过壁画或然构筑的同窗比较好掌握。

举个栗子:约等于大家看远方的山,大家站的远处的时候会以为这些山相当小非常的矮,不过当但我们站在山脚的时候,咱们又会觉得那座山一点都不小很高,其实他的大小并不曾改变。用一句成语来说正是“以管窥天不见五指山”。
平等的,perspective-origin只有在安装了perspective属性后才能够有效应
perspective-origin的粤语意思是“视角原点”,暗许的是3D成分的骨干。
语法是:perspective-origin: x y; 那里x,y是距离x轴和y轴的相距。

demo2

贰个圆柱体,因为被更换为gif效果有点差,实际运作会好过多。 
这一个的贯彻相比奇葩,在其实场面中差不多一贯不什么卵用,上边小编要么大概说下达成形式吗。

澳门葡京 37澳门葡京 38

1.  或然和demo1大约,先定义包裹层,定义preserve-3d,代码大约如下

<div class=”wrapper”> <div class=”box” id=”circles”>
</div> </div> <style> .wrapper{ transform-style:
preserve-3d; width: 100px; height: 100px; } .box{ width: 100%; height:
100%; position: relative; transform-style: preserve-3d; transform:
rotateX(-73.5deg) rotateY(5deg); } </style>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div class="wrapper">
    <div class="box" id="circles">
    </div>
</div>
 
<style>
.wrapper{
    transform-style: preserve-3d;
    width: 100px;
    height: 100px;
}
.box{
    width: 100%;
    height: 100%;
    position: relative;
    transform-style: preserve-3d;
    transform: rotateX(-73.5deg) rotateY(5deg);
}
</style>

2. 
在box里布置n个div,每叁个<div样式一样设置为border-radius:八分之四和1px的border边框,唯一差异的是它们的translateZ地点紧邻相差1,其实便是把1px的边框依次排列起来形成二个圆柱,那样会须求转移很多div,最终我们依然用js去生成我们要求的div数量。

let circles = document.getElementById(‘circles’); for(let
i=0;i<100;i++){ let div = document.createElement(‘div’); div.style =
`transform: translateZ(${i}px)`; div.className = `circle
${i==0||i==99?’bg’:”}`; circles.appendChild(div); }

1
2
3
4
5
6
7
let circles = document.getElementById(‘circles’);
for(let i=0;i<100;i++){
    let div = document.createElement(‘div’);
    div.style = `transform: translateZ(${i}px)`;
    div.className = `circle ${i==0||i==99?’bg’:”}`;
    circles.appendChild(div);
}

n个1px的div是无缝拼接起来的,为何依旧会有缝隙呢? 
我们想像一张纸画了二个圈,从纸的最薄的一派看,是或不是看不到圈了,假设再转移一点角度,恐怕也不得不看看一丝丝,就是这么些道理。如此方法自身还试了下,写叁个球,那里不传gif了,截图看看效果,github上会有代码可以亲自下载下来看看,效果依旧挺神奇的

澳门葡京 39澳门葡京 40 
 澳门葡京 41
澳门葡京 42
澳门葡京 43
   
  澳门葡京 44

    2D转换:只可以在X,Y轴发生转移:

制作3D立方体

澳门葡京 45

3D

demo3

串挂的卡片效果,效果差不离如下,像是挂在线上的6张照片,还带几许风吹的作用。 
实际也格外简单,依然使用方面demo1的法则旋转卡片,再经过一定把卡片排列,定义2个分外循环的晃动动画,给各类卡片使用差别的岁月,最终绑定点击事件,给成分运用css过渡动画transition。 
过渡动画保障成分改变大概复苏的时候,都能有作用,所以过渡动画很适合用来做交互。 
注意: 进行了3d转换后,要小心成分的可点击区域,用chrome调试工具查看比较规范。

澳门葡京 46澳门葡京 47

    例子:旋转(rotate)、拉伸(scale)、平移(move)、倾斜(skew)

第一步:书写html结构

<div class=”wrap”>
<div class=”box”>
<div class=”cube cube-1″>前</div>
</div>
<div class=”box”>
<div class=”cube cube-2″>后</div>
</div>
<div class=”box”>
<div class=”cube cube-3″>左</div>
</div>
<div class=”box”>
<div class=”cube cube-4″>右</div>
</div>
<div class=”box”>
<div class=”cube cube-5″>上</div>
</div>
<div class=”box”>
<div class=”cube cube-6″>下</div>
</div>
</div>

结语:

css
3d当先百分之五十时候使用情状不多,同时也正如消耗设备品质,如若有时机使用,能在网页中给用户体验带来那么一小点惊喜,也是正确的。

好了,作者领悟大家要求怎么样,仓库地址已经准备好 。

都看看此间了,要不点个赞~

1 赞 1 收藏
评论

澳门葡京 48

    3D转移:除了X,Y轴以外还是能Z轴变化。

其次步:为html结构增添样式

div{box-sizing:border-box;}
//为一体盒子设置3d视角,也正是大家来看的是3个3d的图像,而不是2d的
.wrap{
position: relative;
transform-style: preserve-3d;
}
//参考盒子,约等于cube最原始的位置
.box{
position: relative;
width: 200px;
height: 200px;
border:1px dotted #178eee;
margin: 100px;
float: left;
}
.cube{
position: absolute;
font-size: 40px;
text-align: center;
line-height: 200px;
width: 200px;
height: 200px;
background-color: #178eee;
opacity: 0.6;
}

为各种面设置样式

大家得以分别对五个面进一 一装置
为了区分面,我们为各样面设置两个颜色!
对第几个面设置职责及角度(cube-1)前

.cube-1{
background-color: coral;
transfrom: perspective(1200px) translateZ(100px);
}

对第二个面设置岗位及角度(cube-2)后

.cube-2{
background-color: #ee33cc;
transform:perspective(1200px) translateZ(-100px);
}

对第5个面设置岗位及角度(cube-3)左

.cube-3{
background-color: #33aadd;
transform:perspective(1200px) rotateY(-90deg) translateZ(100px);
}

对第⑥个面设置职分及角度(cube-4)右

.cube-4{
background-color: #aadd44;
transform:perspective(1200px) rotateY(90deg) translateZ(100px);
}

对第多个面设置岗位及角度(cube-5)上

.cube-5{
background-color: #ee172c;
transform:perspective(1200px) rotateX(90deg) translateZ(100px);
}

对第④个面设置岗位及角度(cube-6)上

.cube-6{
background-color:#178eee;
transform:perspective(1200px) rotateX(-90deg) translateZ(100px);
}

最后将box盒子上的position:relative改成absolute,把具备3D成分上的perspective:(1200px)定义到父成分wrap上就足以完结立方体效果了。

注意!!!一经供给对多个成分进行连接的转移(transform),那么就设置在3个transform上,假诺你同一成分上安装第②个transform属性,那么前面包车型大巴就会覆盖掉前贰个。

此间将意见定义在各种具体的成分上,是因为大家在当下操作旋转的时候见到的是各种具体的因素,而不是看完整。最终我们将眼光定义在父成分上,看到的就是完全的功能。

我们试一下将perspective:1200px设置在该因素的父成分上的效应是哪些?

下图是概念在父成分的perspective属性:定义贰个视角,我们见到的正是总体,同一视角看过去自家是同样大小同贰个大方向的成分,就会有不是。

澳门葡京 49

one

上面是每个因素都有和好的一个视角,那么不论是从哪些角度看过去,他都以极度样子。

澳门葡京 50

two

做1个卡通效果!

@keyframes show{
0%{
transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg)
translateZ(-100px);
}
100%{
transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg)
translateZ(-100px);
}
}
.wrap{
animation: show 6s infinite;
}

把动画引入到全方位立方体上,大家的有动画的3D立方体就形成了!

澳门葡京 51

立方体

    如:空间旋转。。。

最终落到实处代码

<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8″>
<title>3D立方体</title>
<style>
div{box-sizing: border-box;}
.wrap{
position: relative;
transform-style: preserve-3d;
margin: 400px;
animation: show 6s infinite;
perspective:(1200px);
}
.box{
position: absolute;
width: 200px;
height: 200px;
}
.cube{
position: absolute;
font-size: 40px;
text-align: center;
line-height: 200px;
width: 100%;
height: 100%;
background-color: #178eee;
opacity: 0.6;
}
.cube-1{
background-color: coral;
transform:translateZ(100px);
}
.cube-2{
background-color: #ee33cc;
transform:translateZ(-100px);
}
澳门葡京,.cube-3{
background-color: #33aadd;
transform: rotateY(-90deg) translateZ(100px);
}
.cube-4{
background-color: #aadd44;
transform: rotateY(90deg) translateZ(100px);
}
.cube-5{
background-color: #ee172c;
transform:rotateX(90deg) translateZ(100px);
}
.cube-6{
transform:rotateX(-90deg) translateZ(100px);
}
@keyframes show{
0%{
transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg)
translateZ(-100px);
}
100%{
transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg)
translateZ(-100px);
}
}
</style>
</head>
<body>
<div class=”wrap”>
<div class=”box”>
<div class=”cube cube-1″>前</div>
</div>
<div class=”box”>
<div class=”cube cube-2″>后</div>
</div>
<div class=”box”>
<div class=”cube cube-3″>左</div>
</div>
<div class=”box”>
<div class=”cube cube-4″>右</div>
</div>
<div class=”box”>
<div class=”cube cube-5″>上</div>
</div>
<div class=”box”>
<div class=”cube cube-6″>下</div>
</div>
</div>
</body>
</html>

有趣味的伙伴们,能够将它复制到本身的html文档中,看看效果哦!
要么关切我们共同调换:

澳门葡京 52

知了堂读书社区

二,转换属性(transform:使用2D,3D):

    1,提示:

    近期浏览器并不是一心协理具备的Transform ,IE玖 、Firefox 和Opera
仅帮忙2D transforms ,相应的CSS定义为:-ms-transform 、-moz-transform 和-o-transform ,而Safari 和Chrome 都辅助2D和3D
transforms ,相应的CSS定义为:-webkit-transform 。

    2,取值:

    transform: none(暗中同意值,表示成分不开始展览转换)

    transform-functions(表示3个只怕多少个转移函数,中间以空格分开):

       解释:CSS3变形是一些职能的晤面,比如移动、旋转、缩放和倾斜效果,每一种效果都被称作为变形函数(Transform Function)

    写法:

    transform:: rotate(angle) scale(x,y)/(0~1的值)skewX(angle)
translate(x,y);

    3,transform-origin()属性:

      1),暗中同意意况,变形的原点在要素的中央点;

       写法:transform-origin : 数值/百分比/关键字(left,right,top,bottom);

       多少个值:表示全体轴的职责

       两个值:表示 X 轴和 Y 轴

       三个值:表示 X 轴、Y 轴和 Z 轴;

    4,2D位移:

      1)translate(平移) 可取值:数值、百分比,也得以是负值

      2)scale(缩放)
可取值:暗中认可值为1,收缩:0 到 1 里边的数值,放大:大于 1
的数值;

      3)rotate(旋转)
可取值:依据原点,将成分依照顺时针旋转给定的角度

      允许负值,成分将逆时针旋转 

      4)skew(倾斜) 
可取值;以原点地方,围绕 X 轴和 Y
轴,也可以遵照一定的角度倾斜,恐怕会变动成分的形象

    5,transform-style属性也是3D效果中时常采用的,

      1)flat值为暗许值,表示拥有子成分在2D平面展现。preserve-3d表示全数子元素在3D空间中展现。

 

      2)借使对几个成分设置了transform-style的值为flat,则该因素的具备子成分都将被平整到该因素的2D平面中开始展览显示。沿着X轴或Y轴方向旋转该因素将导致位李碧华或负Z轴地点的子元素呈现在该因素的平面上,而不是它的眼下可能前面。倘诺对叁个成分设置了transform-style的值为preserve-3d,它意味着不举办平展操作,他的拥有子成分位于3D空间中。

     
transform-style属性须要设置在父成分中,并且超越其余嵌套的变形成分。

       Demo:

       HTML:

       <div class=”wrap”>

       <div class=”spin”>

        <div class=”rotate”>

            <img src=”3d-distance.jpg” alt=”” width=”142″
height=”200″ />

        </div>

        </div>

        </div>

        <div class=”wrap”>

        <div class=”spin”>

        <div class=”rotate three-d”>

            <img src=”3d_axes.png” alt=”” width=”142″ height=”200″
/>

        </div>

        </div>

        </div>

        CSS:

        .wrap {

        width: 500px;

        height: 300px;

        margin: 30px auto;

        position: relative;

        background: url(68.jpg) no-repeat center center;

        background-size: 100% 100%;

        }

 

        .spin {

        width: 142px;

        height: 200px;

        position: absolute;

        top: 50%;

        left: 50%;

        margin-left: -72px;

        margin-top: -101px;

        border: 1px dashed orange;

        cursor: pointer;

        transform-style: preserve-3d;

        }

 

        .rotate {

        background: url(images/cardKingClub.png) no-repeat center;

        background-size: 100% 100%;

        border: 5px solid hsla(50,50%,50%,.9);

        transform: perspective(200px) rotateY(45deg);

        }

       .rotate img{

        border: 1px solid green;

        transform: rotateX(15deg) translateZ(10px);

        transform-origin: 0 0 40px;

        }

        /*变更transform-style的暗中同意值*/

        .three-d {

 

        transform-style: preserve-3d;

        }

 

    

    6,3D转换

       1)perspective 属性(中文意思是:透视,视角)

      
perspective属性设置镜头到成分平面包车型地铁偏离。全体因素都以停放在z=0的平面上。比如perspective(300px)表示,镜头距离成分表面包车型客车岗位是300像素。

       2)特点:

         a,为因素定义 perspective
属性时,其子成分会取得透视效果,而不是因素自个儿

         b,只影响 3D 转换来分

        注意点;暗中同意是3D效果不明明?那是因为镜头离平面太远了,所以旋转效果不显著。试试perspective属性。设置perspect=400px。

       3)3D 位移首要涵盖

          translateZ(z)

          translate3d(x,y,z)

          解释:对于没有rotateX以及rotateY的因素,translateZ的功用就是让要素在协调的前头或近或远(结合黑板上的图);

       4)3D 旋转首要涵盖

          rotateX(deg)

          rotateY(deg)

          rotateZ(deg)

          rotate3d(x,y,z,deg)

       5)3D 缩放首要含有

          scaleZ(z)

          scale3d(x,y,z)

        demo:

        HTML:

        <section id=”darkblue” class=”container”>

        <div class=”box”></div>

        </section>

        CSS:

        .container {

        width: 200px;

        height: 200px;

        margin-bottom: 50px;

        border: 1px solid gray;

        }

       .box {

       width: 100%;

       height: 100%;

       opacity: .75;

       }

       #darkblue {

       perspective: 600px;

       }

       #darkblue .box {

       background-color: darkblue;

       transform: translateZ(50px);

       }

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website