CSS3中的transform(转换)CSS3中的transform(转换)
transform是CSS3中具有颠覆性的特征之⼀,可以实现元素的位移,旋转,变形,缩放等效果.
浏览器⽀持情况
Internet Explorer 10、Firefox、Opera ⽀持 transform 属性。
Internet Explorer 9 ⽀持替代的 -ms-transform 属性(仅适⽤于 2D 转换)。
Safari 和 Chrome ⽀持替代的 -webkit-transform 属性(3D 和 2D 转换)。
Opera 只⽀持 2D 转换。
transform转换分为2D 转换和3D转换,我们先来看看2D 转换!
2D 转换
2D 转换是改变标签在⼆维平⾯上的位置和形状的⼀种技术
2D 转换的使⽤
translate(位移)属性
2D的translate(位移)主要是⽔平,垂直⽅向上的位移
语法
transform:translate(x, y);
transform:translateX(n);
transfrom:translateY(n);
transfrom:translateX(n)translateY(n);
translate(位移)属性使⽤说明
translate最⼤的优点就是不影响其他元素的位置
translate中的100%单位是相对于本⾝的宽度和⾼度来进⾏计算的
⾏内标签没有效果
rotate(旋转)属性
2D的rotate(旋转)指的是让元素在⼆维平⾯内顺时针旋转或者逆时针旋转.
语法
transform:rotate(60deg);
rotate(旋转)属性使⽤说明
rotate(⾓度),括号中正数为顺时针,负数为逆时针.
rotate(旋转)属性的旋转中⼼点
语法
transform-origin: x y;
rotate(旋转)属性的旋转中⼼点使⽤说明
参数x和y中间使⽤空格隔开
xy默认旋转的中⼼点是元素的中⼼(50% 50%),等价于center center
还可以给xy设置像素或者⽅位名词(top,bottom,left,right,center)
scale(缩放)属性
2D的scale(缩放)可以⽤来控制元素的放⼤与缩⼩
语法
transform:scale(x, y);
scale(缩放)属性使⽤说明
括号内x和y之间使⽤逗号进⾏分隔
transform: scale(1, 1): 宽⾼都放⼤⼀倍,相当于没有放⼤
transform: scale(2, 2): 宽和⾼都放⼤了⼆倍
transform: scale(2): 如果只写了⼀个参数,第⼆个参数就和第⼀个参数⼀致
transform:scale(0.5, 0.5): 缩⼩
scale 最⼤的优势就是可以设置转换中⼼点缩放,默认以中⼼点缩放,⽽且不影响其他盒⼦2D 转换综合写法
同时使⽤多个转换语法
transform:translate()rotate()scale();
注意:
综合写法属性的书写顺序会影响到转换的效果
当我们同时有位移和其它的属性的时候,需要将位移放到最前⾯
2D 转换综合案例(包含位移,旋转,缩放,斜切)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>变换</title>
<style type="text/css">
.box1{
width: 200px;
height: 200px;
border: 2px solid #777;
background-color: skyblue;
margin: 50px auto;
transform:translate(0px, 0px);
transition: all 1s ease;
}
.box1:hover{
transform:translate(50px, 50px);
}
.box1:active{
transform:translate(-50px, -50px);
}
.box2{
.box2{
width: 200px;
height: 200px;
border: 2px solid #777;
background-color: red;
margin: 50px auto;
transform:scale(1, 1);
transition: all 2s ease;
}
.box2:hover{
transform:scale(0.5, 0.5);
}
.box3{
width: 200px;
height: 200px;
border: 2px solid #777;
background-color: blue;
margin: 50px auto;
transform:rotate(0deg);
transition: all 1s ease;
}
.box3:hover{
transform:rotate(360deg);
}
.box4{
rotate属性width: 200px;
height: 200px;
border: 2px solid #777;
background-color: greenyellow;
margin: 50px auto 0;
transform:skew(0, 0);
transition: all 500ms ease;
}
.box4:hover{
transform:skew(0deg, -45deg);
}
</style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
<div class="box4"></div>
</body>
</html>
2D学完以后我们插播⼀个重要知识点!
CSS3动画
什么是动画?
动画是CSS3中重点知识之⼀,可通过设置多个节点来精确的控制⼀个或者⼀组动画,从⽽实现复杂的动画效果动画的基本使⽤
1. 定义动画
2. 调⽤我们定义好的动画
可能有⼈会觉得这不是废话嘛?
但是动画其实就是这么简单
动画语法
定义动画
@keyframes 动画名称{
0%{
width: 100px;
}
100%{
width: 200px
}
}
调⽤我们定义好的动画
div{
/* 调⽤动画 */
animation-name:动画名称;
/* 持续时间 */
animation-duration:持续时间;
}
看吧,就是这么简单!
接下来我们再来看看动画序列
0% 是动画的开始,100 % 是动画的完成,这样的规则就是动画序列
在 @keyframs 中规定某项 CSS 样式,就由创建当前样式逐渐改为新样式的动画效果
动画是使元素从⼀个样式逐渐变化为另⼀个样式的效果,可以改变任意多的样式任意多的次数⽤百分⽐来规定变化发⽣的时间,或⽤ from 和 to,等同于 0% 和 100%
⼤家下去可以⾃⼰做⼀个⼩⼩的动画试⼀试!
⽐如实现⼀个200*200的粉⾊格⼦在浏览器屏幕中绕着四周移动⼀圈
动画常见属性
动画简写⽅式
/* animation: 动画名称持续时间运动曲线何时开始播放次数是否反⽅向起始与结束状态 */
animation: name duration timing-function delay iteration-count direction fill-mode
动画使⽤说明
动画简写属性⾥⾯不包含 animation-paly-state
暂停动画 animation-paly-state: paused; 经常和⿏标经过等其他配合使⽤
要想动画⾛回来,⽽不是直接调回来:animation-direction: alternate
盒⼦动画结束后,停在结束位置:animation-fill-mode: forwards
动画速度曲线
animation-timing-function: 规定动画的速度曲线,默认是ease
动画案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>⼆维码扫描</title>
<style>
.box{
width: 200px;
height: 200px;
margin: 100px auto;
background-image:url(./图⽚_20201209174637.jpg);
position: relative;
}
.xian{
width: 180px;
height: 2px;
margin-left: 10px;
background-color: skyblue;
position: absolute;
animation-name: myfirst;
animation-duration: 3s;
animation-timing-function: ease;
animation-direction: alternate;
animation-iteration-count: infinite;
}
@keyframes myfirst{
from{
top: 0;
}
to{
top: 200px;
}
}
</style>
</head>
<body>
<div class="box">
<div class="xian"></div>
</div>
</body>
</html>
好啦!知识点插播完毕,我们继续我们的转换.
3D转换
3D相信⼤家并不陌⽣,3D给我们呈现的效果是近⼩远⼤,物体被遮挡的地⽅不可见等特征提起3D就不得不说到三维坐标系
x 轴:⽔平向右(x 轴右边是正值,左边是负值)
y 轴:垂直向下(y 轴下⾯是正值,上⾯是负值)
z 轴:垂直屏幕(往外边的是正值,往⾥⾯的是负值)
3D转换的使⽤
translate3d(位移)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论