translate()

基线 广泛可用

此功能已得到很好的确立,并且可以在许多设备和浏览器版本中使用。它自以下时间起在所有浏览器中都可用 2015年9月.

translate() CSS 函数 在水平和/或垂直方向上重新定位元素。其结果是 <transform-function> 数据类型。

试试看

此转换以二维向量 [tx, ty] 为特征。其坐标定义了元素在每个方向上移动的距离。

语法

css
/* Single <length-percentage> values */
transform: translate(200px);
transform: translate(50%);

/* Double <length-percentage> values */
transform: translate(100px, 200px);
transform: translate(100px, 50%);
transform: translate(30%, 200px);
transform: translate(30%, 50%);

单个 <length-percentage>

此值为 <length><percentage>,表示平移向量 [tx, 0] 的横坐标(水平,x 分量)。平移向量的纵坐标(垂直,y 分量)将设置为 0。例如,translate(2px) 等效于 translate(2px, 0)。百分比值指的是由 transform-box 属性定义的参考框的宽度。

<length-percentage>

此值描述了两个 <length><percentage> 值,分别表示平移向量 [tx, ty] 的横坐标(水平,x 分量)和纵坐标(垂直,y 分量)。第一个值的百分比指的是宽度,第二个值指的是由 transform-box 属性定义的参考框的高度。

笛卡尔坐标ℝ^2 齐次坐标ℝℙ^2 笛卡尔坐标在 ℝ^3 齐次坐标在 ℝℙ^3

平移在 ℝ^2 中不是线性变换,不能使用笛卡尔坐标矩阵表示。

( 1 0 tx 0 1 ty 0 0 1 ) $\left( \begin{array}{ccc} 1 & 0 & tx \\ 0 & 1 & ty \\ 0 & 0 & 1 \end{array} \right)$ ( 1 0 tx 0 1 ty 0 0 1 ) $\left( \begin{array}{ccc} 1 & 0 & tx \\ 0 & 1 & ty \\ 0 & 0 & 1 \end{array} \right)$ ( 1 0 0 tx 0 1 0 ty 0 0 1 0 0 0 0 1 ) $\left( \begin{array}{cccc} 1 & 0 & 0 & tx \\ 0 & 1 & 0 & ty \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right)$
[1 0 0 1 tx ty]

正式语法

示例

使用单轴平移

HTML

html
<div>Static</div>
<div class="moved">Moved</div>
<div>Static</div>

CSS

css
div {
  width: 60px;
  height: 60px;
  background-color: skyblue;
}

.moved {
  /* Equal to: translateX(10px) or translate(10px, 0) */
  transform: translate(10px);
  background-color: pink;
}

结果

组合 y 轴和平移 x 轴

HTML

html
<div>Static</div>
<div class="moved">Moved</div>
<div>Static</div>

CSS

css
div {
  width: 60px;
  height: 60px;
  background-color: skyblue;
}

.moved {
  transform: translate(10px, 10px);
  background-color: pink;
}

结果

规范

规范
CSS Transforms 模块级别 1
# funcdef-transform-translate

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅