面试题——需求:在不知道父元素与子元素的宽高时
如何让子元素在父元素内居中?
1.定位 父相子绝
2.子元素 top:50% left:50%
3.子元素 transform: translate(-50%,-50%)
.parent{
height: 500px;
background-color: red;
position: relative;
}
.child{
width: 200px;
height: 200px;
background-color: yellow;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
<div class="parent">
<div class="child"></div>
</div>
旋转变换(需要设置旋转的角度)
旋转有3个方向
延x轴transform:rotateX(30deg) 延x轴旋转30度
延y轴transform:rotateY(30deg) 延y轴旋转30度
延z轴transform:rotateZ(30deg) 延z轴旋转30度
transform:rotate(30deg)延z轴旋转30度
修改旋转的基准点
transform-origin:
默认值:center 元素的正中心
可选值:top left (0 0) 元素左上角
top center (50% 0) 上边线中点
top right (100% 0) 右上角
bottom left (0 100%) 左下角
bottom center (0 100%) 下边线中点
bottom right (0 100%) 右下角
放大与缩小
transform:scaleX(2) 宽度乘以2
scaleY(0.6) 高度乘以0.6
scale(1.5)宽高都乘以1.5 最常见
特殊的:scaleX(-2) 先延X轴翻转,然后宽度乘以2
scaleY(-0.6)先延Y轴翻转,然后高度乘以0.6
scale(-1.5)沿X轴和Y轴都翻转,然后宽高都乘以1.5
动画
设置关键帧
@keyframes changeBgcolor {
0%{
background-color: red;
}
100%{
background-color: yellow;
}
}
div{
background-color: red;
width: 100px;
height: 100px;
animation: changeBgcolor 10s;
}
@keyframes 关键字
changeBgcolor 给动画关键帧取名字
关键帧内必须设置
0% 初始样式
100% 结束样式
在元素的样式中使用动画关键帧可以让这个元素从0%的样式变化到100%的样式,形成动画
此例中,div使用了动画关键帧changeBgcolor,所以div的样式会从红色背景变化到绿色背景。
动画和过渡的区别
1.动画自动播放,过渡需要伪类触发
2.过渡只要来时状态和结束状态
3.动画通过关键帧可以在多个样式间切换
动画的使用
关键帧名称
animation-name: 无默认值
动画执行时间
animation-duration: 无默认值
动画的变化速率
animation-timing-function: 默认值 ease 可选值 linear
动画延迟时间
animation-delay: 默认值 0s
动画执行次数
animation-iteration-count: 默认值1
可选值: 任意大于0的整数
infinite 无限次
是否回到初始样式
animation-fill-mode: 默认值 backwards (回到动画动画执行之前的样式)
可选值:forwords 保持在动画结束节点(100%关键帧)的样式
动画是否自动播放
animation-play-state: 默认值 running 自动播放
可选值:pause 不自动播放
注:非自动播放需要伪类触发播放
动画简写
animation: 动画关键帧名称 执行时间