1、平面转换-平移

取值
- 像素单位数值
- 百分比(参照盒子自身尺寸计算结果)
- 正负均可
技巧
- translate()只写一个值,表示沿着X轴移动
- 单独设置X或Y轴移动距离:translateX()或translateY()

html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.father {
width: 500px;
height: 300px;
margin: 100px auto;
border: 1px solid #000;
}
.son {
width: 200px;
height: 100px;
background-color: pink;
transition: all 0.5s;
}
/* 鼠标移入到父盒子,son改变位置 */
.father:hover .son {
transform: translate(200px, 100px);
/* 取值是百分比:参照盒子自身尺寸计算结果 */
transform: translate(50%, 100%);
transform: translate(-50%, 100%);
/* 只写一个数表示水平方向 */
transform: translate(100%);
transform: translateY(100%);
transform: translateX(100%);
}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>
</html>
2、平移实现居中效果
方法一:

方法二:百分比参照盒子自身尺寸计算结果


3、案例 双开门效果
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
/* 1. 布局:父子结构,父级是大图,子级是左右小图*/
.father {
display: flex;
margin: 0 auto;
width: 1300px;
height: 600px;
background-image: url(../photo/1.jpg);
overflow: hidden;
}
.father .left,
.father .right {
width: 50%;
height: 600px;
background-image: url(../photo/2.jpg);
transition: all .5s;
}
.father .right {
/* right 表示的取到精灵图右面的图片 */
background-position: right 0;
}
/* 2. 鼠标悬停的效果:左右移动 */
.father:hover .left {
transform: translate(-100%);
}
.father:hover .right {
transform: translate(100%);
}
</style>
</head>
<body>
<div class="father">
<div class="left"></div>
<div class="right"></div>
</div>
</body>
</html>