

案例一 鼠标经过盒子时旋转可见
<style>
div {
/* 内容溢出时被修剪 */
overflow: hidden;
width: 200px;
height: 200px;
border: 1px solid olive;
margin: 10px 10px;
/* 加个浮动 */
float: left;
}
div::before {
content: "哈哈";
display: block;
background-color: cyan;
width: 100%;
height: 100%;
transition: all 1s;
transform-origin: left bottom;
transform: rotate(180deg);
}
/* 鼠标经过div 里面的before 复原 */
div:hover::before {
transform: rotate(0deg);
}
</style>
案例二 鼠标经过分页按钮放大效果
<style>
li {
float: left;
width: 40px;
height: 40px;
line-height: 40px;
text-align: center;
border-radius: 50%;
border: 1px solid green;
margin: 10px;
list-style-type: none;
cursor: pointer;
transition: all 0.4s;
}
li:hover {
transform: scale(1.2);
}
</style>
相关知识点
一、2D转换
- 2D转换之移动 translate
- 移动盒子的位置:定位、盒子的外边距、2D转换移动
- 2D移动是2D转换里面的一种功能,可以改变元素在页面中的位置,类似定位。
语法:
transform: translate(x, y);或者分开写
transform: translateX(n);
transform: translateY(n);
<style>
div {
width: 100px;
height: 100px;
background-color: pink;
transform: translate(100px, 0px);
transform: translateX(100px);
transform: translateY(100px);
}
</style>
重点:
- 定义2D转换中的移动,沿着X和Y轴移动元素
- translate最大优点:不会影响到其他元素的位置
- translate中的百分比单位是相对于自身元素的translate:(50%,50%);
- 对行内标签没有效果
常用场景:盒子中的子元素居中 ”定位+translate“
<style>
div {
position: relative;
width: 400px;
height: 400px;
background-color: pink;
transform: translate(100px, 0px);
transform: translateX(100px);
transform: translateY(100px);
}
/* 盒子div中的p居中 */
p {
position: absolute;
top: 50%;
left: 50%;
width: 200px;
height: 200px;
background-color: aqua;
transform: translate(-50%, -50%); //盒子往上、往左走盒子的一半
}
</style>
- 2D转换之旋转 rotate
- 2D转换指的是让元素在2维平面内顺时针旋转或者逆时针旋转。
- 语法:transform:rotate(度数)
- 重点:
- rotate里面跟度数,单位是deg,比如rotate(45deg);
- 角度为正时,顺时针,负时,为逆时针
- 默认旋转的中心点是元素的中心点
用法:
/* 设置了圆角图片鼠标滑过时旋转360° */
<style>
img {
width: 150px;
/* 添加圆角边框 */
border-radius: 50%;
border: 5px solid black;
transition: all 0.3s;
}
img:hover {
transform: rotate(360deg);
}
</style>
<body>
<img src="yuan.png" alt="">
</body>
3,2D转换中心点 transform-origin 设置元素转换的中心点
- 语法 transform-origin:x y;
- 重点
- 注意后面的参数x和y用空格隔开
- x y默认转换的中心点是元素的中心点(50% 50%)
- 还可以给x y设置像素或者方位名词(top bottom left right center)
- 用法:
<style>
div {
width: 200px;
height: 200px;
background-color: blue;
/* auto 左右空白自适应 */
margin: 100px auto;
transition: all 1s;
/* 1.可以跟方位名词 */
/* transform-origin: left bottom; */
/* 2.默认的是 50% 50% 等价于center center*/
/* 3.可以是px像素 */
transform-origin: 50px 50px;
}
div:hover {
transform: rotate(360deg);
}
</style>
4,2D转换之缩放scale
- 语法:
transform:scale(x,y);
- 注意:
- 注意其中的x和y用逗号分隔
- transform:scale(1,1):宽和高都放大一倍,相对于没有放大
- transform:scale(2,2):宽和高都放大了2倍
- transform:scale(2):只写一个参数,第二个参数则和第一个参数一样,相当于scale(2,2)
- transform:scale(0.5,0.5):缩小
- scale缩放最大的优势:可以设置转换中心点缩放,默认以中心点缩放的,而且不影响其它盒子
5,2D转换之综合写法
注意:
- 同时使用多个转换,其格式为;transform:translate() rotate() scale()…等
- 其顺序会影响转换效果(先旋转会改变坐标轴方向)
- 当同时有位移及其他属性的时候,位移要放到最前面
661

被折叠的 条评论
为什么被折叠?



