[CSS3] 学习笔记-CSS动画特效

时间:2021-09-04 03:58:56

在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;
 }