transform位移形变
总结:
transition过渡动画
transition:过渡属性 过渡时间 过渡的速度变化 过渡的动画延迟时间;
transition语法格式:transition: property duration timing-function delay;
代码示例:transition:width 2s ease-in 500ms;
知识点一:transition-property 规定设置过渡效果的 CSS 属性的名称。
知识点二:transition-duration 规定完成过渡效果需要多少秒或毫秒。默认值是 0不会有效果。
知识点三:transition-timing-function 规定速度效果的贝塞尔曲线。
知识点四:transition-timing-function 的特殊值
接受两个参数的步进函数。第一个参数必须为正整数,指定函数的步数。第二个参数取值可以是start或end,
指定每一步的值发生变化的时间点。第二个参数是可选的,默认值为end。
知识点五:transition-delay 定义过渡效果何时开始,单位是秒或者毫秒。
案例:
可以为同一元素的多个属性定义过渡效果。
transition:border-color .5s ease-in .1s, background-color .5s ease-in .1s, color .5s ease-in .1s;
拆分方式:
transition-property:border-color, background-color, color;
transition-duration:.5s, .5s, .5s;
transition-timing-function:ease-in, ease-in, ease-in;
transition-delay:.1s, .1s, .1s;
具体案例
1.过渡动画
效果图如下:
关键代码如下:
/*过渡动画*/
/*
transition:过渡属性 过渡的时间 过渡的时候速度变化 过渡的动画的延迟时间
* */
transition: background 5s ease-in 5s;
/*
linear 线性速度
ease 默认(先慢加快再慢)
ease-in 先慢后快
ease-out 先块后慢
ease-in-out(先慢加快再慢)
* */
transition:transform 3s ease-in-out;
}
.main2:hover .div2{
transform: translate(600px,0);
}
2.加载动画
效果图如下:
关键代码如下:
<style type="text/css">
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
.loading{
width: 500px;
height: 300px;
margin: 100px auto;
}
.loadingItem{
float: left;
width: 100px ;
height: 300px;
padding: 20px;
}
.loadingItem span{
display:inline-block;
width:100%;
height:100%;
background:skyblue;
animation: changeColor 5s infinite;
}
.loadingItem:nth-child(1){
animation: loading 1s infinite;
}
.loadingItem:nth-child(2){
animation: loading 1s 0.1s infinite;
}
.loadingItem:nth-child(3){
animation: loading 1s 0.2s infinite;
}
.loadingItem:nth-child(4){
animation: loading 1s 0.3s infinite;
}
.loadingItem:nth-child(5){
animation: loading 1s 0.4s infinite;
}
@keyframes loading{
0%{
transform: scale(1);
background: skyblue;
}
25%{
transform: scale(1,1.8);
background: purple;
}
50%{
transform: scale(1);
background: pink;
}
}
@keyframes changeColor{
0%{
background: skyblue;
}
50%{
background: salmon;
}
100%{
background: skyblue;
}
}
</style>
3.动画
效果图如下:
关键代码如下:
<style type="text/css">
.div1{
width: 200px;
height: 200px;
background: deepskyblue;
/*
animation:动画的关键帧名字 动画时间周期 动画的速度 动画的延迟时间 动画的次数 是否保留最后一帧
*/
/*这是综合设置*/
animation: moveAnimation 5s linear 3 forwards;
/*animation-name: moveAnimation;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 3s;
animation-iteration-count: 3;
animation-fill-mode: forwards; */
}
@keyframes moveAnimation{
0%{
transform: translate(0,0);
}
25%{
transform: translate(500px,0);
}
50%{
transform: translate(500px,500px);
}
75%{
transform: translate(0,500px);
}
100%{
transform: translate(0,0);
}
}
</style>
4.垂直上下居中
效果图如下:
关键代码如下:
/*第一种方式*/
left: 50%;
top: 50%;
/*借用margin-top和margin-left*/
margin-left: -50px;
margin-top: -50px;
/*第二种方式*/
/*left: calc(50% - 50px);
top: calc(50% - 50px);*/
5.往返运动
效果图如下:
关键代码如下:
<style type="text/css">
.div1{
width: 100px;
height: 100px;
background: skyblue;
animation: wangfan 3s infinite alternate;
/*动画的方向,normal,alternate,alternate-reverse*/
/*
alternate:奇数次按照正常运行,偶数次逆着运行
alternate-reverse:奇数次逆行,偶数次顺行
* */
animation-direction: alternate-reverse;
}
@keyframes wangfan{
from{
transform: translate(0,0);
}
to{
transform: translate(500px,0);
}
}
</style>
6.表单样式
效果图如下:
关键代码如下:
<style type="text/css">
.div1{
width: 200px;
height: 200px;
background: #ccc;
margin: 0 auto;
transition: all 2s;
}
/*选中后面的同级元素*/
#input1:checked ~ .div1{
background: skyblue;
border-radius: 20px;
box-shadow:0 0 50px skyblue;
animation: xuanzhuan 2s linear infinite;
}
@keyframes xuanzhuan{
from{
transform: rotate(0deg);
}
to{
transform: rotate(360deg);
}
}
#input2:checked ~ .div1{
background: salmon;
border-radius: 100px;
box-shadow: 0 0 20px salmon,0 0 50px yellow;
}
.btn{
text-align: center;
}
.btn label{
display: inline-block;
width: 200px;
height: 80px;
text-align: center;
line-height: 80px;
border-radius: 20px;
background: salmon;
margin: 20px 30px;
}
</style>
</head>
<body>
<div class="btn">
<label for="input1">男</label>
<label for="input2">女</label>
</div>
<hr />
<!--
属性hidden可以将输入框隐藏起来
-->
<input type="radio" id="input1" name="sex" value="男" hidden="hidden" />
<input type="radio" id="input2" name="sex" value="女" hidden="hidden" />
<hr />
<div class="div1">
<div class="tt">
</div>
</div>
</body>
7.一个魔方具体案例
效果图如下:
关键代码如下:
.main{
perspective: 1000px;
transform-style: preserve-3d;
}
.mofang{
width: 200px;
height: 200px;
margin: 100px auto;
position: relative;
transition: all 5s;
transform-style: preserve-3d;
transform: rotate3d(-1,1,0,0deg) scale3d(1,1,1);
}
.mofang div{
width: 200px;
height: 200px;
position: absolute;
top: 0;
left: 0;
/*opacity透明度设置:完全透明是0,完全不透明是1*/
opacity: 0.6;
border: 1px solid #ccc;
transition: all 5s;
}
.front{
background: url(img/1.png);
background-size: 100% 100%;
transform: translateZ(100px);
}
.back{
background: url(img/2.jpg) ;
background-size: 100% 100%;
/*transform: translateZ(-100px);*/
transform: rotateY(180deg) translateZ(100px);
}
.left{
background: url(img/3.jpg) ;
background-size: 100% 100%;
transform: rotateY(90deg) translateZ(100px);
}
.right{
background: url(img/4.jpeg) ;
background-size: 100% 100%;
transform: rotateY(-90deg) translateZ(100px);
}
.top{
background: url(img/5.jpeg) ;
background-size: 100% 100%;
transform: rotateX(90deg) translateZ(100px);
}
.bottom{
background: url(img/6.jpg);
background-size: 100% 100%;
transform: rotateX(-90deg) translateZ(100px);
}
.main:hover .mofang{
transform: rotate3d(-1,1,0,360deg) scale3d(2,2,2);
}
/*.main:hover .mofang{
transform:scale3d(2,2,2);
}*/
/*.main:hover .top{
transform: rotateX(90deg) translateZ(200px);
}*/
#zhengmian:checked ~ .main .mofang{
transform: rotate3d(-1,1,0,0deg) scale3d(1,1,1);
}
#xuanzhuan:checked ~ .main .mofang{
animation: xuanzhuan 2s infinite alternate;
}
@keyframes xuanzhuan{
from{
transform: rotate3d(-1,1,0,0deg) scale3d(1,1,1);
}
to{
transform: rotate3d(-1,1,0,360deg) scale3d(2,2,2);
}
}
8.滑块开关
效果图如下:
关键代码如下:
<style type="text/css">
.kuaiguan{
width: 400px;
height: 200px;
margin: 0 auto;
display: block;
border: 1px solid #ccc;
position: relative;
}
.huakuai{
width: 200px;
height: 200px;
display: block;
background: pink;
position: absolute;
left: 0;
top: 0;
z-index: 10;
transition: all 1s;
}
.kuaiguan .before{
display: block;
position: absolute;
width: 200px;
height: 200px;
left: 0;
top: 0;
font-size: 100px;
font-weight: 700;
line-height: 200px;
text-align: center;
color: #fff;
transition: all 1s;
}
.kuaiguan .after{
display: block;
position: absolute;
width: 200px;
height: 200px;
right: 0;
top: 0;
font-size: 100px;
font-weight: 700;
line-height: 200px;
text-align: center;
color: #666;
transition: all 1s;
}
#toggle:checked ~ .kuaiguan .huakuai{
transform: translate(200px,0);
background: deepskyblue;
}
#toggle:checked ~ .kuaiguan .before{
color: #666;
}
#toggle:checked ~ .kuaiguan .after{
color: #fff;
}
</style>
9.火影动画效果制作
效果图如下:
关键代码如下:
.mingren{
width:400px;
height: 200px;
background: url(img/mingren.png);
/*如果要实现游戏技能的动画,那么需要用到steps属性*/
animation: mingren 2s infinite steps(16);
}
@keyframes mingren{
from{
background-position: 0 0;
}
to{
background-position: 0px -3072px;
}
}
.zuozhu{
width:400px;
height: 100px;
background: url(img/zuozhu.png);
animation: zuozhu 2s infinite steps(13);
position: absolute;
}
@keyframes zuozhu{
from{
background-position: 0 0;
}
to{
background-position: 0 -2496px;
}
}
10.总结
- End -