<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>transform</title> <style> *{margin:0;padding:0;list-style: none;} html,body{ background: #000; } .list{ overflow: hidden; padding: 40px; } .list li{ width:200px; height:140px; line-height: 140px; font-size: 40px; font-weight: 800; text-align: center; color: #fff; background: orange; float: left; margin:10px; } /*rotate(angle) 定义 2D 旋转,在参数中规定角度。*/ .list .rotate:hover{ transform:rotate(20deg); } /* rotateX(angle) 定义沿着 X 轴的 3D 旋转。 */ .list .rotateX:hover{ transform:rotateX(20deg); } .list .rotateY{ background: url(1.jpg) 0 0 no-repeat; background-size:cover; } /* rotateY(angle) 定义沿着 Y 轴的 3D 旋转。 */ .list .rotateY:hover{ transform:rotateY(40deg); } /* rotateZ(angle) 定义沿着 Z 轴的 3D 旋转。 */ .list .rotateZ:hover{ transform:rotateZ(20deg); } /*translate(x,y) 定义 2D 移动。*/ .list .translate:hover{ transform:translate(20px,30px); } /*translateX(length) 定义对象X轴的平移*/ .list .translateX:hover{ transform:translateX(20px); } /*translateY(length) 定义对象Y轴的平移*/ .list .translateY:hover{ transform:translateY(20px); } /*translateZ(length) 定义对象3D 移动Z轴的平移*/ .list .translateZ:hover{ transform:rotateY(45deg) translateZ(45px); } .list .translateZ{ transform:rotateY(45deg); } /*translate3d(x,y,z) 定义 3D 移动。*/ .translate3d:hover{ transform:rotateY(45deg) translate3d(20px,30px,50px); } .scale:hover{ transform:scale(1.2,1.5); } .scaleX:hover{ transform:scaleX(0.8); } .scaleY:hover{ transform:scaleY(1.5); } .scaleZ:hover{ transform:scaleZ(1.5);/* 平面图形没效果 */ } .scale3d:hover{ transform:scale3d(0.8,1.2,0.2); } /*skew(x , y) 定义沿着 X 和 Y 轴的 2D 扭曲转换*/ .skew:hover{ transform: skew(30deg,30deg); } /*skewX(angle) 定义沿着 X 轴的 2D 扭曲转换*/ .skewX:hover{ transform: skewX(30deg); } /*skewY(angle) 定义沿着 Y 轴的 2D 扭曲转换*/ .skewY:hover{ transform: skewY(30deg); } </style> </head> <body> <ul class="list"> <li class="rotate">rotate</li> <li class="rotateX">rotateX</li> <li class="rotateY">rotateY</li> <li class="rotateZ">rotateZ</li> <li class="translate">translate</li> <li class="translateX">translateX</li> <li class="translateY">translateY</li> <li class="translateZ">translateZ</li> <li class="translate3d">translate3d</li> <li class="scale">scale</li> <li class="scaleX">scaleX</li> <li class="scaleY">scaleY</li> <li class="scaleZ">scaleZ</li> <li class="scale3d">scale3d</li> <li class="skew">skew</li> <li class="skewX">skewX</li> <li class="skewY">skewY</li> </ul> </body> </html>
二、CSS3 过渡
1、过渡效果语法
用transform&transition写立方体3d动画:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>transform&transition</title> <style> *{margin:0;padding:0;list-style: none;} body{/* 舞台元素 */ perspective:1000px;/* 视距 */ } ul{ position: relative; width:200px; height:200px; margin:50px auto 0; background-color: transparent; transform-style:preserve-3d;/* 设置子元素有3d属性 */ transform:rotateX(-20deg) rotateY(30deg); transition: all 2s ease-in 0.5s; } ul:hover{ transform:rotateX(-120deg) rotateY(140deg); /*transition: all 2s ease-in 0.5s;*/ } ul li{ width:200px; height:200px; background-color: #ccc; opacity: 0.5; line-height: 200px; text-align: center; font-size: 40px; font-weight: 800; color: #fff; position: absolute; top:0; left: 0; } ul li:nth-child(1){/*前*/ background-color: #F11805; transform:translateZ(100px); } ul li:nth-child(3){/*后*/ background-color: #F8F608; transform:rotateY(180deg) translateZ(100px); } ul li:nth-child(2){ background-color: #45F808; transform:rotateY(90deg) translateZ(100px); } ul li:nth-child(4){ background-color: #08F1F8; transform:rotateY(-90deg) translateZ(100px); } ul li:nth-child(5){ background-color: #DA08F8; transform:rotateX(90deg) translateZ(100px); } ul li:nth-child(6){ background-color: #8B08F8; transform:rotateX(-90deg) translateZ(100px); } </style> </head> <body> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> </ul> </body> </html>
}
animation&动画&关键帧:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>animation</title> <style> *{margin:0;padding:0;list-style: none;} #box{ width:100px; height:100px; border-radius: 50%; background: red; position: absolute; top:50px; left:50px; /* animation-name:run1; animation-duration: 2s; animation-timing-function:ease-in; animation-delay:1s; animation-iteration-count:5; */ /*animation-direction:reverse;*//*反向*/ /* animation-direction:alternate; *//*轮流反向*/ /*animation-fill-mode:forwards;*/ /*animation-fill-mode:backwards;*/ /*animation-fill-mode:both;*/ /*animation-play-state:paused;*/ animation:run2 2s ease-in 0.5s infinite reverse forwards; } /* 关键帧 */ @keyframes run1{ from{top:50px;left:50px;background: red} to{top:50px;left:650px;background: green} } @keyframes run2{ 0% {top:50px;left:50px;background:red;}/* 25% {top:50px;left:650px;background:orange;} 50% {top:450px;left:650px;background:yellow;} 75% {top:450px;left:50px;background:blue;} */ 100% {top:450px;left:450px;background: green;} } </style> </head> <body> <button id="run">running</button> <button id="stop">paused</button> <div id="box"></div> </body> <script> var box=document.getElementById('box'); var run=document.getElementById('run'); var stop=document.getElementById('stop'); run.onclick=function(){ box.style.animationPlayState='running';//播放动画 } stop.onclick=function(){ box.style.animationPlayState='paused';//暂停动画 } </script> </html>
animation 不需要触发任何事件
transform&animation_动心:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>transform&animation</title> <style> *{margin:0;padding:0;list-style: none;} html,body{ background: pink; } .heart{ overflow: hidden; width:200px; height:150px; padding: 70px; background-color: #000; margin:50px auto 0; } .heart li{ width:100px; height:150px; float: left; background-color: red; border-radius: 50% 50% 0 0; } .heart li:nth-child(1){ transform-origin:right bottom; transform:rotate(46deg) scale(1); animation:tiao1 0.5s linear infinite; } .heart li:nth-child(2){ transform-origin:left bottom; transform:rotate(-46deg) scale(1); animation:tiao2 0.5s linear infinite; } @keyframes tiao1{ 0%{transform:rotate(46deg) scale(1);} 50%{transform:rotate(46deg) scale(1.3);} 100%{transform:rotate(46deg) scale(1);} } @keyframes tiao2{ 0%{transform:rotate(-46deg) scale(1);} 50%{transform:rotate(-46deg) scale(1.3);} 100%{transform:rotate(-46deg) scale(1);} } </style> </head> <body> <ul class="heart"> <li></li> <li></li> </ul> </body> </html>transform&animation_旋转圆柱:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>旋转圆柱</title> <style> *{margin:0;padding:0;list-style: none;} body{background: #000; perspective:1000px;/*视距*/ } ul{ width:206px; height:306px; position: relative; margin:150px auto; transform-style:preserve-3d; /* 设置子元素有3d属性 */ /*transform:rotateX(-72deg) rotateY(0deg) rotateZ(43deg);*/ animation: run1 2s linear infinite forwards; } @keyframes run1{ 0%{transform:rotateY(0deg) rotateZ(30deg);} 100%{transform:rotateY(360deg) rotateZ(30deg);} } ul li{ width:200px; height:300px; opacity: 0.8; position: absolute; top:0; left:0; border:3px solid #ccc; } ul li img{ float: left; width:200px; height:300px; } ul li:nth-child(1){ transform:translateZ(200px); } ul li:nth-child(4){ transform:rotateY(-180deg) translateZ(200px); } ul li:nth-child(2){ transform:rotateY(60deg) translateZ(200px); } ul li:nth-child(5){ transform:rotateY(-120deg) translateZ(200px); } ul li:nth-child(3){ transform:rotateY(120deg) translateZ(200px); } ul li:nth-child(6){ transform:rotateY(-60deg) translateZ(200px); } </style> </head> <body> <ul> <li><img src="images/yz1.jpeg" alt=""><p>1</p></li> <li><img src="images/yz2.jpeg" alt=""><p>2</p></li> <li><img src="images/yz3.jpg" alt=""><p>3</p></li> <li><img src="images/yz4.jpeg" alt=""><p>4</p></li> <li><img src="images/yz5.jpeg" alt=""><p>5</p></li> <li><img src="images/yz6.jpg" alt=""><p>6</p></li> </ul> </body> </html>