css动画


前言

css动画优势:不需要⽤js也能写,⽐较流畅,由浏览器去执⾏动画,减少代码量,性能⽐较⾼


一、定义动画的关键帧

关键帧 @keyframes 通过在动画序列中定义关键帧的样式来控制 CSS 动画序列中的中间步骤。和转换 transition 相比,关键帧 keyframes 可以控制动画序列的中间步骤。

@keyframes 动画名称{
	from { Properties:Properties value; }
	百分比 { Properties:Properties value; }
	....
	to { Properties:Properties value; }
}

@keyframes 动画名称{
	0% { Properties:Properties value; }
	百分比 { Properties:Properties value; }
	....
	100% { Properties:Properties value; }
}

二、应用动画 - 简写

animation: 动画名称 时长 动画速度 延迟 执行次数 执行方向;

三、应用动画的各个属性

  1. animation-name: 动画名称;
  2. animation-duration: 动画时长;
  3. animation-timing-function: 定义动画的速度
linear: 线性过渡。等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0)
ease: 快--快。等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0) 
ease-in: 由慢到快。等同于贝塞尔曲线(0.42, 0, 1.0, 1.0) 
ease-out: 由快到慢。等同于贝塞尔曲线(0, 0, 0.58, 1.0) 
ease-in-out: 由慢到快再到慢。等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)
cubic-bezier(number, number, number, number): 特定的贝塞尔曲线类型,4个数值需在[0, 1]区间内
  1. animation-delay: 延迟时间;

  2. animation-iteration-count: 10;//表示动画执行10次 | infinite; // 表示无限次循环
    定义动画执行多少次;

  3. animation-direction: ; // 定义动画的执行方向

normal:默认值,执行完毕之后瞬间恢复最初始状态;
reverse:动画反向执行;
alternate:动画正向执行完毕,在反向执行动画;
注意:设置此属性之后正向算一次动画反向算一次动画,所以如果设置动画执行1次,此属性值不生效;
alternate-reverse:动画先反向执行,在正向执行;
注意:设置此属性之后反向算一次动画正向算一次动画,所以如果设置动画执行1次,只会执行反向一次动画;
  1. animation-fill-mode: 定义动画的终止状态
一个动画执行完毕的默认状态是什么?就是初始状态!
forwards: 应用动画的最终状态;
backwards: 在delay延迟期间,应用你定义的第一帧的状态;
  1. animation-play-state: 控制动画的执行状态
paused 	 指定暂停动画;
running	 指定正在运行的动画;

四、伴随动画而产生的3个事件

  1. animationstart 动画开始事件;
  2. animationiteration 动画反复执行事件;
动画反复执行事件需要指定animation-iteration-count属性,如果值为1,	则不触发反复执行事件!
  1. animationend 动画结束事件;
box.addEventListener('animationstart',function(){
	console.log('start') //动画开始
},false)
box.addEventListener('animationend',function(){
	console.log('end') //动画结束
},false)
box.addEventListener('animationiteration',function(){
	console.log('反复') //动画反复执行
},false)

五、无缝隙滚动案例

无缝隙滚动

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		* {
			margin:0;
			padding:0;
		}
		
		.show{
			width: 600px;
			height: 150px;
			padding: 10px;
			margin: 40px auto;
			border: 2px solid #ccc;
			overflow: hidden;
			position: relative;
		}
		.show .mask{
			position: absolute;
			height: 100%;
			width: 10px;
			right: 0;
			background-color: #fff;
		}
		.list{
			list-style: none;
			height: 150px;
			width: 1200px;
		}
		.list li{
			width: 150px;
			height: 150px;
			border: 1px solid red;
			box-sizing: border-box;
			line-height: 148px;
			text-align: center;
			font-size: 34px;
			font-weight: bold;
			float: left;
		}

		@keyframes move {
			100% {
				transform: translateX(-600px);
			}
		}
		.list{
			animation: move 5s linear;
			animation-iteration-count: infinite;
		}
	</style>
</head>
<body>
	<div class="show">
		<!-- <div class="mask"></div> -->
		<ul class="list">
			<li>1</li>
			<li>2</li>
			<li>3</li>
			<li>4</li>
			<li>1</li>
			<li>2</li>
			<li>3</li>
			<li>4</li>
		</ul>
	</div>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值