当前位置: 首页 > news >正文

CSS中的transform

在 CSS 中,transform 是用于用于用于对元素进行几何变换的属性,可实现旋转、缩放、平移、倾斜等效果,且不会影响其他元素的布局(不会触发重排)。以下是其核心用法和特性:

1. 基本语法

element {transform: 变换函数1(参数) 变换函数2(参数); /* 多个变换可叠加 */transform-origin: x-axis y-axis; /* 变换原点(默认中心) */transition: transform 0.3s; /* 配合过渡实现平滑动画 */
}

2. 常用变换函数

(1)平移(translate
  • 沿 X/Y 轴移动元素,不影响布局。
     .box {transform: translate(50px, 30px); /* X轴+50px,Y轴+30px */transform: translateX(50px);      /* 仅X轴 */transform: translateY(30px);      /* 仅Y轴 */transform: translateZ(100px);     /* 3D Z轴(需配合perspective) */
    }
    

百分比基于元素自身尺寸:translate(50%, 50%) 表示移动自身宽高的一半。

(2)旋转(rotate
  • 绕原点旋转元素,单位为 deg(度)或 rad(弧度)。
    .box {transform: rotate(45deg);      /* 顺时针旋转45度 */transform: rotate(-30deg);     /* 逆时针旋转30度 */transform: rotateX(60deg);     /* 3D 绕X轴旋转 */transform: rotateY(60deg);     /* 3D 绕Y轴旋转 */
    }
    
  • 配合 transform-origin: left top; 可改变旋转中心(如绕左上角旋转)。
(3)缩放(scale
  • 放大或缩小元素,默认以中心为基准。
    .box {transform: scale(1.5);       /* 宽高均放大1.5倍 */transform: scaleX(0.8);      /* 仅宽度缩小到80% */transform: scaleY(1.2);      /* 仅高度放大到120% */
    }
    
  • 负值会翻转元素(如 scaleX(-1) 水平翻转)。
(4)倾斜(skew
  • 沿 X/Y 轴倾斜元素,产生扭曲效果。
    .box {transform: skew(20deg, 10deg); /* X轴倾斜20度,Y轴倾斜10度 */transform: skewX(30deg);       /* 仅X轴 */transform: skewY(15deg);       /* 仅Y轴 */
    }
    
(5)矩阵变换(matrix
  • 用矩阵值一次性定义复杂变换(较少直接使用)。
    .box {transform: matrix(1, 0, 0, 1, 50, 30); /* 等价于translate(50px, 30px) */
    }
    

3. 关键特性

(1)不影响布局

transform 变换后的元素仍占据原位置(不会改变文档流),避免了 margintop/left 带来的重排性能问题。

(2)叠加变换

多个变换函数可按顺序叠加(从右到左执行):

/* 先旋转45度,再平移50px(注意顺序影响结果) */
.box {transform: translate(50px) rotate(45deg);
}

4. 应用场景

(1)悬停动画
.button {transition: transform 0.3s;
}
.button:hover {transform: scale(1.05) translateY(-3px); /* 轻微放大+上移 */
}
(2)居中对齐
/* 未知尺寸元素水平垂直居中 */
.box {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%); /* 基于自身尺寸偏移 */
}
(3)3D 卡片效果
.card {transition: transform 0.5s;transform-style: preserve-3d;
}
.card:hover {transform: rotateY(180deg); /* 翻转卡片 */
}
(4)滚动动画

结合 JavaScript 监听滚动,动态改变 transform

window.addEventListener('scroll', function() {const scrollY = window.scrollY;document.querySelector('.box').style.transform = `translateY(${scrollY * 0.5}px)`;
});
http://www.dtcms.com/a/292396.html

相关文章:

  • 算法笔记之堆排序
  • Oracle数据恢复—Oracle数据库所在分区被删除后报错的数据恢复案例
  • Oracle 12c 创建数据库初级教程
  • sqli-labs通关笔记-第14关 POST报错型注入(双引号闭合 手工注入+脚本注入两种方法)
  • mac实现sudo命切换node版本
  • 【C++进阶】揭秘list迭代器:从底层实现到极致优化
  • WIFI路由器长期不重启,手机连接时提示无IP分配
  • 【Linux系统】基础IO
  • Git使用git graph插件回滚版本
  • 【自定义一个简单的CNN模型】——深度学习.卷积神经网络
  • 大气能见度监测仪:洞察大气 “清晰度” 的科技之眼
  • 智慧教室:科技赋能,奏响个性化学习新乐章
  • MyBatis拦截器插件:实现敏感数据字段加解密
  • 中国科技信息杂志中国科技信息杂志社中国科技信息编辑部2025年第14期目录
  • 「芯生态」杰发科技AC7870携手IAR开发工具链,助推汽车电子全栈全域智能化落地
  • Vue中最简单的PDF引入方法及优缺点分析
  • docker build 和compose 学习笔记
  • CASB架构:了解正向代理、反向代理和API扫描
  • [转]Rust:过程宏
  • JMeter 实现 Protobuf 加密解密
  • AI 音频产品开发模板及流程(一)
  • 网络安全第三次作业搭建前端页面并解析
  • allegro 16.6配置CIS库报错 ORCIS-6129 ORCIS-6469
  • LeetCode 658.找到K个最接近的元素
  • .NET使用EPPlus导出EXCEL的接口中,文件流缺少文件名信息
  • Unity笔记——事件中心
  • 力扣-300.最长递增子序列
  • 以太坊网络发展分析:技术升级与市场动态的双重驱动
  • 快手开源 Kwaipilot-AutoThink 思考模型,有效解决过度思考问题
  • Cy3-COOH 花菁染料Cy3-羧基