CSS3 制作网页动画

文档:http://www.runoob.com/cssref/css3-pr-transform.html

一、CSS3变形:

      每个效果都可以称为变形(transform),它们可以分别操控元素发生平移、旋转、缩放、倾斜等变化;

      语法:

transform:[transform-function] *;

    变形函数

          translate():平移函数,基于X、Y坐标重新定位元素的位置

         语法:

translate(tx,ty);

          

          translateX(tx) 表示只设置X轴的位移;

          translateX(ty) 表示只设置Y轴的位移;

   效果:

  

 源码:

li a:hover{
		      
		       background: rgba(242, 88, 6, 0.87);
		        border-radius: 6px;  /*圆角*/
		         /*2D位移==>设置a元素在鼠标移入时向右下角移动4px,8px*/
               transform: translate(4px,8px);
               -webkit-transform: translate(4px,8px);
              
              /*-webkit-transform: translateX(4px);*/
              /*-webkit-transform: translateY(-8px);*/
		
		}

 

        scale():缩放函数,可以使任意元素对象尺寸发生变化

      语法:

scale(sx,sy);

         scale()函数可以只接收一个值,也可以接收两个值,只有一个值时,第二个值默认和第一个值相等

              scaleX(sx):表示只设置X轴的缩放

              scaleY(sy):表示只设置Y轴的缩放

 效果:

  

源代码:

li a:hover{
		      
		       background: rgba(242, 88, 6, 0.87);
		        border-radius: 6px;  /*圆角*/
		         /*2D缩放==>设置a元素在鼠标移入时放大1.5倍显示*/
		        /*transform: scale(1.5);*/
		       
		       /*transform: scaleX(2);*/
		       
		       /*transform: scaleY(2)*/
		      
		      transform: scale(0.5);
              
		
		}

 

   rotate():旋转函数,取值是一个度数值

   语法:

rotate(a);

效果:

原来:

旋转效果:


 源代码:

 img:hover{
        	 /*定义动画的状态,鼠标移入旋转并放大图片1.5倍*/
        	transform: rotate(270deg) scale(1.5);
        	
        }

         skew():倾斜函数,取值是一个度数值

   语法:

skew(ax, ay);

skewX(ax):表示只设置X轴的倾斜

skewY(ay):表示只设置Y轴的倾斜

效果:

  

源代码:

li a:hover{
		      
		       background: rgba(242, 88, 6, 0.87);
		        border-radius: 6px;  /*圆角*/
		         /*2D倾斜==>设置a元素在鼠标移入时向左下角倾斜*/
		        transform: skew(40deg,-20deg);
		       /*transform: skewX(40deg);*/
		      /*transform: skewY(-20deg);*/
		}

小结:

rotate( )函数只是旋转,而不会改变元素的形状
skew( )函数是倾斜,元素不会旋转,会改变元素的形状

二、CSS3过渡

      transition呈现的是一种过渡,是一种动画转换的过程,如渐现、渐弱、动画快慢等 CSS3 transition的过渡功能更像是一种“黄油”,通过一些CSS的简单动作触发样式平滑过渡

 语法:

transition:[transition-property过渡或动态模拟的CSS属性
            transition-duration完成过渡所需要的时间
            transition-timing-function指定过渡函数
            transition-delay过渡开始出现的延迟时间 ] 

 过渡属性( transition-property )

     定义转换动画的CSS属性名称

               IDENT:指定的CSS属性(width、height、background-color属性等)

                  all:指定所有元素支持transition-property属性的样式,一般为了方便都会使用all

过渡所需的时间( transition-duration )

     定义转换动画的时间长度,即从设置旧属性到换新属性所花费的时间,单位为秒(s)

 过渡动画函数( transition-timing-function )

     指定浏览器的过渡速度,以及过渡期间的操作进展情况,通过给过渡添加一个函数来指定动画的快慢方式

         ease:速度由快到慢(默认值)

         linear:速度恒速(匀速运动)

        ease-in:速度越来越快(渐显效果)

        ease-out:速度越来越慢(渐隐效果)

        ease-in-out:速度先加速再减速(渐显渐隐效果)

过渡延迟时间( transition-delay )

        指定一个动画开始执行的时间,当改变元素属性值后多长时间去执行过渡效果

       正值:元素过渡效果不会立即触发,当过了设置的时间值后才会被触发

       负值:元素过渡效果会从该时间点开始显示,之前的动作被截断

       0:默认值,元素过渡效果立即执行

伪类触发 :hover :active :focus :checked

transition实现过渡动画的使用步骤:

  1.      在默认样式中声明元素的初始状态样式
  2.      声明过渡元素最终状态样式,如悬浮状态
  3.      在默认样式中通过添加过渡函数,添加一些不同的样式

效果:   

 

源代码:

<style type="text/css">
			div {
				background-color: red;
				width: 200px;
				height: 200px;
				border-radius: 100px;
				 /*指定动画过渡的CSS属性 过渡时间 过渡动画 延迟时间*/
				transition:background-color 1s ease-in-out 1s;

			}
			
			div:hover{
				background:yellowgreen;
			}
		</style>

 

效果

源代码:

<style type="text/css">
		 ul li {
            float: left;  /*左浮动*/
            margin: 30px;  /* 外边距*/
            list-style: none; /*去掉小黑点*/
        }
        
        #box img{
        	transition:all 0.9s ease-in-out 0s;
        	-webkit-transition:all 0.9s ease-in-out 0s;
        }
        
        #box img:hover{ /*鼠标移上放大2倍,旋转360度*/
        
        	transform: scale(2) rotate(360deg);
        	-webkit-transform: scale(2) rotate(360deg);
        }

		</style>
	</head>
	<body>
		<h2>顺时针旋转360度放大1.2倍</h2>
		<ul id="box">
		    <li><a href="#"><img src="images/rss.png" /></a></li>
		    <li><a href="#"><img src="images/delicious.png" /></a></li>
		    <li><a href="#"><img src="images/facebook.png" /></a></li>
		    <li><a href="#"><img src="images/twitter.png"/></a></li>
		    <li><a href="#"><img src="images/yahoo.png" /></a></li>
		</ul>

	</body>

 

  三、CSS3动画

    animation动画简介 animation实现动画主要由两个部分组成

  1.  通过类似Flash动画的关键帧来声明一个动画
  2.  在animation属性中调用关键帧声明的动画实现一个更为复杂的动画效果

  语法:

animation:animation-name动画名称
 	 	animation–duration 动画时间
 	 	animation-timing-function动画函数
  	 	animation-delay  动画延迟时间
  		animation-iteration-count 播放次数
    	animation-direction  动画方向
		animation-play-state  播放的状态
 		animation-fill-mode;动画开始之前和结束之后发生的操作

    动画的播放次数(animation-iteration-count)
          值通常为整数,默认值为1
          特殊值infinite,表示动画无限次播放
    
    动画的播放方向(animation-direction)
        normal,动画每次都是循环向前播放
        alternate,动画播放为偶数次则向前播放
    
    动画的播放状态(animation-play-state)
        running将暂停的动画重新播放
        paused将正在播放的元素动画停下来
        
    动画发生的操作(animation-fill-mode)
        forwards表示动画在结束后继续应用最后关键帧的位置
        backwards表示会在向元素应用动画样式时迅速应用动画的初始帧
        both表示元素动画同时具有forwards和backwards的效果

 

设置关键帧:

 语法:

@keyframes  IDENT  {
   from {/*CSS样式写在这里*/}
   percentage {/*CSS样式写在这里*/}
   to {/*CSS样式写在这里*/}
}

   如:

@keyframes my{
   0% {width:0;}
   33% {width:23px;}
   66% {width:46px;}
   100% {width:69px;}
 }

效果:

源代码:

div{
				width:100px;
				height: 100px;
				background:coral;
				 /*调用动画*/
				/*my:关键帧动画名称*/
				animation: my 1.5s linear infinite;
				-webkit-animation: my 1.5s linear infinite;
			}
			
			  /*创建动画关键帧*/
			 @keyframes my{
			 	0%{
			 		width: 0px;
			 		transform: translateX(100px);
			 	}
			 	35%{
			 		width: 25px;
			 		transform: translateX(150px);
			 	}
			 	
			 	70%{
			 		width: 55px;
			 		transform: translateX(200px);
			 	}
			 	
			 	100%{
			 		width: 100px;
			 		transform: translateX(250px);
			 	}
			 }
			 
			 @-webkit-keyframes name{
			 	0%{
			 		width: 0px;
			 		transform: translateX(100px);
			 	}
			 	35%{
			 		width: 25px;
			 		transform: translateX(200px);
			 	}
			 	
			 	70%{
			 		width: 55px;
			 		transform: translateX(400px);
			 	}
			 	
			 	100%{
			 		width: 100px;
			 		transform: translateX(600px);
			 	}
			 }

 

 

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值