CSS translate() 函数

CSS translate() 语法

在 CSS 中,translate() 函数一般作为 transform 属性的值,用于在二维或三维空间中移动元素。

语法:

/* 二维移动 */
transform: translate(x, y);

/* 三维移动 */
transform: translate3d(x, y, z);  /* 用于 3D 空间移动 */

说明:

需要注意的是,translate() 函数必须要搭配 transform 属性一起使用。它接收以下参数。

  • x:表示沿 X 轴(水平)的位移,正值表示向右移动,负值表示向左移动。
  • y:表示沿 Y 轴(垂直)的位移,正值表示向下移动,负值表示向上移动。
  • z(仅用于 translate3d):表示沿 Z 轴(深度)的位移,正值向外移动,负值向内移动。

x、y、z 的值主要是长度单位(如 px、em、rem 等)或百分比(%)。(注:z 轴通常只接受长度单位,不支持百分比)。

对于 translate() 函数,小伙伴们还需要清楚以下几点:

  • translate() 只会改变元素的视觉位置,而不会打乱原本的页面布局(即不会影响周围的元素)。
  • 如果只是想在一个方向上移动元素,可以单独使用 translateX(x) 或 translateY(y) 来实现。
  • translate() 支持与 var()calc() 等其他 CSS 函数结合使用。

提示: CSS 与平移相关的函数有 3 个:translate()、translateX()translateY()

CSS translate() 摘要

属于 CSS 平移
使用频率
兼容性 查看
官方文档 查看
MDN 查看

CSS translate() 示例

接下来,我们通过几个简单的例子来讲解一下 CSS translate() 函数是如何使用的。

示例 1:translate() 实现水平移动

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div {
            width: 100px;
            height: 100px;
            background-color: lightskyblue;
            transition: transform 0.5s;
        }
        div:hover {
            transform: translate(200px, 0);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

页面效果如下图所示。

translate() 实现水平移动

分析:

transform: translate(200px, 0) 表示水平方向移动距离为 200px,而垂直方向移动距离为 0。

示例 2:translate() 垂直移动与 CSS 变量

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        :root {
            --offset: 200px;
        }
        div {
            width: 100px;
            height: 100px;
            background-color: hotpink;
            transition: transform 0.3s;
        }
        div:hover {
            transform: translateY(var(--offset));
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

页面效果如下图所示。

translate() 垂直移动与 CSS 变量

分析:

在这个例子中,我们首先定义了一个 CSS 变量(即 --offset),该变量用于保存位移距离。由于 --offset 的值为 200px,因此 translateY(var(--offset)) 等价于 translateY(200px)。

示例 3:translate() 实现 3D 位移动画

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        @keyframes move {
            0% { transform: translate3d(0, 0, 0); }
            50% { transform: translate3d(100px, 50px, 50px); }
            100% { transform: translate3d(0, 0, 0); }
        }
        div {
            width: 100px;
            height: 100px;
            background-color: lightskyblue;
            animation: move 2s infinite;
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>

页面效果如下图所示。

translate() 实现 3D 位移动画

分析:

在这个例子中,我们使用 @keyframes 规则定义了一个 CSS 动画。translate3d(100px, 50px, 50px) 用于在动画中将 div 元素同时沿 X、Y、Z 轴移动,从而创建三维效果。

上一篇: conic-gradient()

下一篇: translateX()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号