注册
web

transform、translate、transition分别是什么属性,CSS中常用的实现动画方式

transform、translate、transition分别是什么属性,CSS中常用的实现动画方式


在 CSS 中,transformtranslatetransition 是用于实现元素变换和动画的重要属性。它们各自有不同的作用,通常结合使用可以实现丰富的动画效果。


1. 属性详解


1.1 transform



  • 作用:用于对元素进行 2D 或 3D 变换,如旋转、缩放、倾斜、平移等。
  • 常用函数

    • translate(x, y):平移元素。
    • rotate(angle):旋转元素。
    • scale(x, y):缩放元素。
    • skew(x-angle, y-angle):倾斜元素。
    • matrix(a, b, c, d, e, f):定义 2D 变换矩阵。


  • 示例
    .box {
    transform: translate(50px, 100px) rotate(45deg) scale(1.5);
    }



1.2 translate



  • 作用translatetransform 的一个函数,用于平移元素。
  • 语法

    • translate(x, y):水平方向移动 x,垂直方向移动 y
    • translateX(x):仅水平方向移动。
    • translateY(y):仅垂直方向移动。
    • translateZ(z):在 3D 空间中沿 Z 轴移动。


  • 示例
    .box {
    transform: translate(50px, 100px);
    }



1.3 transition



  • 作用:用于定义元素在样式变化时的过渡效果。
  • 常用属性

    • transition-property:指定需要过渡的属性(如 allopacitytransform 等)。
    • transition-duration:指定过渡的持续时间(如 1s500ms)。
    • transition-timing-function:指定过渡的速度曲线(如 easelinearease-in-out)。
    • transition-delay:指定过渡的延迟时间(如 0.5s)。


  • 简写语法
    transition: property duration timing-function delay;


  • 示例
    .box {
    transition: transform 0.5s ease-in-out, opacity 0.3s linear;
    }



2. CSS 中常用的实现动画方式


2.1 使用 transition 实现简单动画



  • 适用场景:适用于简单的状态变化动画(如 hover 效果)。
  • 示例
    .box {
    width: 100px;
    height: 100px;
    background-color: lightblue;
    transition: transform 0.5s ease-in-out;
    }

    .box:hover {
    transform: scale(1.2) rotate(45deg);
    }



2.2 使用 @keyframesanimation 实现复杂动画



  • 适用场景:适用于复杂的多帧动画。
  • 步骤

    1. 使用 @keyframes 定义动画关键帧。
    2. 使用 animation 属性将动画应用到元素上。


  • 示例
    @keyframes slideIn {
    0% {
    transform: translateX(-100%);
    }
    100% {
    transform: translateX(0);
    }
    }

    .box {
    width: 100px;
    height: 100px;
    background-color: lightblue;
    animation: slideIn 1s ease-in-out;
    }



2.3 使用 transformtransition 结合实现交互效果



  • 适用场景:适用于用户交互触发的动画(如点击、悬停)。
  • 示例
    .box {
    width: 100px;
    height: 100px;
    background-color: lightblue;
    transition: transform 0.3s ease-in-out;
    }

    .box:active {
    transform: scale(0.9);
    }



2.4 使用 will-change 优化动画性能



  • 作用:提前告知浏览器元素将会发生的变化,以优化渲染性能。
  • 示例
    .box {
    will-change: transform;
    }



3. 综合示例


示例 1:按钮点击效果


.button {
padding: 10px 20px;
background-color: lightblue;
border: none;
transition: transform 0.2s ease-in-out;
}

.button:active {
transform: scale(0.95);
}

示例 2:卡片翻转动画


.card {
width: 200px;
height: 200px;
position: relative;
perspective: 1000px;
}

.card-inner {
width: 100%;
height: 100%;
transition: transform 0.6s;
transform-style: preserve-3d;
}

.card:hover .card-inner {
transform: rotateY(180deg);
}

.card-front, .card-back {
width: 100%;
height: 100%;
position: absolute;
backface-visibility: hidden;
}

.card-front {
background-color: lightblue;
}

.card-back {
background-color: lightcoral;
transform: rotateY(180deg);
}

示例 3:加载动画


@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

.loader {
width: 40px;
height: 40px;
border: 4px solid #f3f3f3;
border-top: 4px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
}

总结


属性/方法作用适用场景
transform对元素进行 2D/3D 变换平移、旋转、缩放、倾斜等
translatetransform 的一个函数,用于平移元素移动元素位置
transition定义元素样式变化的过渡效果简单的状态变化动画
@keyframes定义动画关键帧复杂的多帧动画
animation@keyframes 定义的动画应用到元素上复杂的多帧动画
will-change优化动画性能性能优化

通过灵活运用这些属性和方法,可以实现丰富的动画效果,提升用户体验。


更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github


作者:Epicurus
来源:juejin.cn/post/7480766452653260852

0 个评论

要回复文章请先登录注册