H5新特性 - CSS动画2D / 3D 、自定义动画 及 动画库

本文探讨了CSS动画的2D和3D效果,包括旋转、位移、缩放和倾斜等。同时介绍了如何通过transform属性和transition来创建过渡效果。在3D动画部分,讲解了开启3D属性的方法。此外,文章还详细阐述了自定义动画(关键帧动画)的制作和应用,并提到了如何使用animation属性来绑定动画。最后,讨论了引入和使用动画库来实现更复杂的动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CSS动画2D / 3D 及动画库 自定义动画 及 动画库

一个元素只有一个transform属性;后面增加的transform属性会覆盖前面的属性
执行元素,添加过渡效果

transition:all,2s;

这里是引用

添加hover, hover中写动画效果

div{
	width: 100px;
    height: 100px;
	background: red;
	margin-top: 20px;
	text-align: center;
	line-height: 100px;

    /*过渡*/
    transition: all 2s;
}

div:hover{
   transform: rotateZ(190deg) scale(2,2);
        
}

CSS动画2D

  • 旋转 单位是 度 deg
  <div style="transform: rotateZ(-30deg)">旋转</div>
  • 位移 单位是 像素 px
<div style="transform: translateX(150px)">位移</div>
  • 缩放
    正常比例是 1
    大于1 为放大
    小于1 为缩小
    没有单位
  <div style="transform: scale(1.5,1.5)">缩放</div>
  • 倾斜 单位是 度
   <div style="transform: skewX(45deg)">倾斜X</div>
    <div style="transform: skewY(45deg)">倾斜Y</div>
    <br><br>
    <div style="transform: skew(30deg,30deg)">倾斜</div>
  • 文字反倾斜的方式
    没有实际意义上的反倾斜,只是倾斜相反的角度
<div style="transform: skewX(45deg)">
    <p style="transform: skewX(-45deg)">倾斜</p>
</div>

CSS动画3D

3D动画实际上,是在2D动画的基础上开启属性
transform-style: preserve-3d;(开启3D)
perspective: 400px;(景深)

  • 自定义旋转中心
    transform-origin: left;
.xc{
		position: absolute;
		left: 400px;
		top: 500px;
		margin-bottom: 20px;
		transform-style: preserve-3d;
		perspective: 400px;
	}
	.xc-bottom{
		position: absolute;
		text-align: center;
		line-height: 150px;
		color: #EF4153;
	}
	.xc-left{
		position: absolute;
		width: 75px;
		background-color: #EF4153;
		transform-origin: left;
		transition: all 1s;
	}
	.xc-right{
		position: absolute;
		width: 75px;
		left: 75px;
		background-color: #EF4153;
		transform-origin: right;
		transition: all 1s;		
	}
	.xc:hover>.xc-left{
		transform: rotateY(-180deg);
	}
	.xc:hover>.xc-right{
		transform: rotateY(180deg);				
	}
	
	<div class="xc">
		<div class="xc-bottom">你瞅啥</div>
		<div class="xc-left"></div>
		<div class="xc-right"></div>		
	</div>

自定义动画
自定义动画(也叫关键帧动画): 其中,制作动画和绑定动画两个过程缺一不可

  • 备注:
    1) 衣服可以制作很多件
    2) 同一件衣服也可以给多个人穿

制作动画 (做衣服)
@keyframes 声明自定义动画的关键词 后面需要写自定义动画的名称,空格间隔
from{ } 相当于 0%
to{ } 相当于 100%

 @keyframes myAnimation{
    	0%{}
    	25%{
			transform: translateX(400px);
    	}
    	50%{
        	transform: translate(400px,400px);
    	}
   	 	75%{
        	transform: translate(0px,400px);
    	}
    	100%{
        	transform: translate(-200px,600px);
     	}
    }

绑定动画 (穿衣服)
绑定动画 (穿衣服)

  • animation 属性是一个简写属性,用于设置六个动画属性:
  • animation-name :动画名称 必填
    animation-duration: 动画执行所需的时间 必填
    animation-timing-function: 动画执行的速度曲线 可选 默认值 ease
    animation-delay:动画开始之前的延迟 可选 默认值 0s
    animation-iteration-count : 动画执行的次数 可选 默认值1 没有单位 infinite:无限次
    animation-direction: 规定是否轮流反向播放 (注意:播放次数至少为2) 可选 默认不反向,alternate:反向播放

注意:请始终规定 animation-duration 属性,否则时长为 0,就不会播放动画了

.ball{
    animation: myAnimation 3s ease-in-out 4s infinite alternate;
}

示例:

<style type="text/css">
		*{
			margin: 0px;
			padding: 0px;
		}
		.all{
			width: 500px;
			height: 400px;
			border: 1px solid ;
			position: relative;
			top: 100px;
			left: 400px;
		}
		.ball1{
			width: 100px;
			height: 100px;
			border-radius: 50%;
			background-color: #F59646;
			position: absolute;
			animation: move 6s ease 1s infinite alternate;
		}
		.ball2{
			width: 100px;
			height: 100px;
			border-radius: 50%;
			background-color: #FF1919;
			position: absolute;
			animation: move 6s ease 4s infinite alternate;
		}
		@keyframes move{
			0%{}
			25%{
				transform: translateX(400px);
			}
			50%{
				transform: translate(400px,300px);
			}
			75%{
				transform: translate(0px,300px);
			}
		}	
	</style>
	
	<div class="all">
		<div class="ball1"></div>
		<div class="ball2"></div>
	</div>

动画库

  • 引入动画库
    实际的代码根据自己的文件 animate.min.css 位置确定
<link rel="stylesheet" type="text/css" href="动画库/animate.min.css"/>

需要自定义动画库的动画使用时:

// 自定义的参数 样式
	.cover1{
	
	}
	// 修改的是动画的总时间 延迟时间
	.animated{
		animation: filp 1s linear 7s 1;
	}
	
	// 需要替换的动画效果名称
	.flip{
	}
	<div class="cover1 flip animated"> </div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值