文章目录
- 一、CSS3 2D 转换 - 平移 / 旋转 / 缩放
- 二、CSS 2D 转换 - Translate 移动
- 三、Translate 移动代码示例
- 1、基本示例
- 2、脱标测试 ( 百分比平移 )
- 四、Translate 百分比移动实现绝对定位的居中效果
- 1、传统实现方式代码示例
- 2、百分比移动实现绝对定位的居中效果代码示例
一、CSS3 2D 转换 - 平移 / 旋转 / 缩放
CSS3 中的 Transform 转换 , 可以实现 标签元素 的 位移 / 旋转 / 缩放 ;
CSS3 转换的 二维坐标系如下 : 该坐标系是 界面开发的 常用坐标系样式 ;
二、CSS 2D 转换 - Translate 移动
在网页中将 标签元素 沿着 x 轴 和 y 轴 各自移动指定的长度 , 就是 2D 转换中的移动操作 ;
CSS 2D 转换 - Translate 移动 语法如下 : 为 标签元素 设置如下属性值 , 即可实现移动 ;
- x 轴移动语法 :
transform: translateX(x);
- y 轴移动语法 :
transform: translateY(y);
- x / y 轴移动语法 :
transform: translate(x, y);
Translate 移动 语法 : 上述 transform: translate
中可以传入百分比值 , 百分比是相对于元素自身尺寸来说的 ;
/* 水平方向 向右移动 元素自身宽度的 50% 距离 垂直方向 向下移动 元素自身高度的 50% 距离 */ transform: translate(50%, 50%);
复制
移动盒子模型位置的方法 :
- 通过定位样式移动盒子 : 相对定位 relative 样式 , 绝对定位 absolute 样式 ;
- 通过设置盒子外边距 : 外边距 margine 样式 ;
- 2D 转换中的 Translate 移动 ; transform: translate() 样式 ;
Translate 移动 相对于其它方式 移动盒子模型 的优点 : 使用 Translate 移动标签元素 , 不会影响其它元素的位置 , 不会脱标 ;
Translate 只能移动块级元素 , 对于 行内元素 / 行内块元素 是无效的 ;
三、Translate 移动代码示例
1、基本示例
代码示例 :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CSS 2D转换-Translate 移动</title> <style> div { width: 100px; height: 100px; border: 1px solid red; background-color: pink; /* 水平方向向右移动 100 像素 */ /* transform: translateX(100px); */ /* 垂直方向向下移动 100 像素 */ /* transform: translateY(100px); */ /* 水平方向和垂直方向都移动 100 像素 */ transform: translate(100px, 100px); } </style> </head> <body> <div></div> </body> </html>
复制
执行结果 :
2、脱标测试 ( 百分比平移 )
两个标准流盒子放在一起 , 如果为前一个盒子设置 translate 移动 , 该盒子并不会脱标 , 而是继续占有现有位置 ;
后面的标准流盒子的位置并不会发生改变 ;
下面的 translate 中使用了百分比单位 , 该百分比是相对于标签元素自身的尺寸来说的 ;
代码示例 :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CSS 2D转换-Translate 移动</title> <style> div { width: 100px; height: 100px; background-color: pink; } div:first-child { /* 结构伪类选择器 选择 父容器中 第一个 div 标签 */ transform: translate(50%, 50%); } div:last-child { /* 结构伪类选择器 选择 父容器中 最后一个 div 标签 */ background-color: aquamarine; } </style> </head> <body> <div></div> <div></div> </body> </html>
复制
执行结果 :
四、Translate 百分比移动实现绝对定位的居中效果
在之前使用 绝对定位 进行居中设置时 ,
- 首先 , 走到父容器的一半位置 ;
- 然后 , 再往回走子元素的一半距离 ;
此时就可以实现元素居中设置 ;
在设置 第二步 的时候 , 子元素需要往回走一半距离 , 可以使用 Translate 移动 50% 距离实现 ;
1、传统实现方式代码示例
传统实现方式代码示例 :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Translate 百分比移动实现绝对定位的居中效果</title> <style> * { margin: 0; padding: 0; } div { /* 子绝父相 子元素绝对定位 本父容器设置相对定位 */ position: relative; width: 200px; height: 200px; background-color: pink; } p { /* 子绝父相 子元素设置绝对定位 */ position: absolute; left: 50%; top: 50%; width: 100px; height: 100px; background-color: red; /* 往回走子元素一半尺寸 */ margin-top: -50px; margin-left: -50px; } </style> </head> <body> <div> <p></p> </div> </body> </html>
复制
显示效果 :
2、百分比移动实现绝对定位的居中效果代码示例
代码示例 :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Translate 百分比移动实现绝对定位的居中效果</title> <style> * { margin: 0; padding: 0; } div { /* 子绝父相 子元素绝对定位 本父容器设置相对定位 */ position: relative; width: 200px; height: 200px; background-color: pink; } p { /* 子绝父相 子元素设置绝对定位 */ position: absolute; left: 50%; top: 50%; width: 100px; height: 100px; background-color: red; /* 往回走子元素一半尺寸 */ transform: translate(-50%, -50%); } </style> </head> <body> <div> <p></p> </div> </body> </html>
复制
显示效果 :