在CSS3中,出现了很多出彩的效果,例如2D、3D以及过度、动画和多列等。这些效果为页面设计添加了很多的可选设计。
1、2D、3D转换
转换,是使元素改变尺寸、形状、位置的一种效果;通过CSS3转换,我们能够对元素进行移动、缩放、转动、拉伸或拉长;可以通过2D、3D元素来转换;
2D转换方法:
translate()、rotate()、scale()、skew()、matrix()
3D转换方法:
rotateX()
rotateY()
<!doctype html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="1.css"> </head> <body> <div>这是一个初始效果</div> <br/> <div class="div2">这是一个改变后的效果</div> <div class="div3">这是一个改变后的效果</div> <div class="div4">这是一个改变后的效果</div> <div class="div5">这是一个改变后的效果</div> <div class="div6">这是一个改变后的效果</div> <div class="div7">这是一个改变后的效果</div> </body> </html>
对应的CSS文件:
div{ width:200px; height: 200px; color: blue; } .div2{ /*这条语句不支持特定浏览器,因此运行可能无效;后面的语句是针对特定浏览器的*/ transform: translate(200px, 100px); /*这是让safari和chrome支持的语句*/ -webkit-transform:translate(100px,100px); /*这是让Ie支持的语句*/ -ms-transform:translate(100px,100px); /*这是让Opera支持的语句*/ -o-transform: translate(100px,100px); /*这是让firefox支持的语句*/ -moz-transform: translate(100px,100px); } .div3{ transform: rotate(100deg); } .div4{ margin-top: 200px; transform: scale(1,2); } .div5{ transform: skew(20deg,20deg); } .div6{ transform: matrix(1, 0, 0, 1, 30, 30); } .div7{ font-size: 50px; transform: rotateX(120deg) rotateY(120deg); }
2、动画过渡
CSS3过渡是元素从一种样式转换成另一种样式,包括动画执行效果的CSS,动画执行的时间
属性:
transition:设置以下4个过渡属性
也可以分别设置这四个属性:
transition-property:过渡的名称
transition-duration:过渡花费的时间
transition-timing-function:过渡效果的时间曲线
transition-delay:过渡效果开始时间
<body> <div>效果展示</div> </body>
对应的CSS文件:
div{ width:100px; height: 100px; background-color: blue; transition: width 2s, height 2s,transform 2s; transition-delay:2s; } div:hover{ width: 200px; height: 200px; transform: rotate(360deg); }
3、动画
通过CSS3,可以进行动画创作,CSS3的动画需要遵循@keynames规则,另外需要规定动画的时长和名称
<body> <div>动画效果</div> </body>
对应的CSS文件:
div{ width: 200px; height: 200px; background-color: red; position: relative; /*animation:anim 5s;*/ /*重复反方向执行动画效果*/ animation: anim 5s infinite alternate; } /*若需浏览器适配,则:*/ /*“@keyframe”改为“@-webkit-keyframes” */ @keyframes anim{ ;} } 50%{background: gold;left: 200px;top:200px} ;top:200px} ;} }
4、多列
CSS3中,可以创建多列来对文本或区域进行布局
属性:
column-count:分列的数量
column-gap:每列中间间隔的距离
column-rule:每列之间间隔的线,包括线的颜色
<body> <div class="div1"> 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 大家好,欢迎进入CSS的世界 </div> </body>
对应的CSS文件:
.div1{ ; -webkit-column-gap: 50px; -webkit-column-rule: 5px outset red; }
5、CSS瀑布流效果
<body> <div class="container"> <div><img src="1.jpg" width="200px" height="auto"><p>这里添加标签</p></div> <div><img src="2.jpg" width="auto" height="150px"></div> <div><img src="3.jpg" width="200px" height="auto"></div> <div><img src="4.jpg" width="300px" height="auto"></div> <div><img src="5.jpg" width="auto" height="150px"></div> <div><img src="6.jpg" width="200px" height="auto"><p>这里添加标签</p></div> <div><img src="7.jpg" width="auto" height="150px"></div> <div><img src="8.jpg" width="200px" height="auto"></div> <div><img src="9.jpg" width="auto" height="150px"><p>这里添加标签</p></div> </div> </body>
对应的CSS文件 :
.container{ -webkit-column-width: 250px; -webkit-column-gap:5px; } .container div{ width: 250px; margin: 5px 0; } .container p{ text-align: center; }