在 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.pswp.cn/web/90015.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90015.shtml
英文地址,请注明出处:http://en.pswp.cn/web/90015.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis拦截器插件:实现敏感数据字段加解密

文章目录一、写在前面二、编码实现1、注解2、拦截器插件3、配置插件4、实体类5、测试三、扩展1、优化点一、写在前面 日常开发中,经常有一些敏感数据,直接写入数据库的话,很容易泄露。 本文基于mybatis拦截器插件,实现敏感数据的…

C++_Hello算法_队列

队列(queue)是一种遵循先入先出规则的线性数据结构。顾名思义,队列模拟了排队现象,即新来的人不断加入队列尾部,而位于队列头部的人逐个离开。 如图 5-4 所示,我们将队列头部称为“队首”,尾部…

LeetCode 1.

问题描述 俩数之和: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按…

c练习-c基础

#include <stdio.h>int main() {//打印数组中的最大值int arr[10];int max,i;for (i 0; i < 10; i){scanf_s("%d", &arr[i]);}max arr[0];for (i 0; i < 10; i){if(max < arr[i 1]){max arr[i 1];}}printf("数组中最大值&#xff1a;%…

Numpy科学计算(五分钟小白从入门到精通)

2.1 numpy介绍numpy是Python中科学计算的基础包。它是一个Python库&#xff0c;提供多维数组对象、各种派生对象&#xff08;例如掩码数组和矩阵&#xff09;以及用于对数组进行快速操作的各种方法&#xff0c;包括数学、逻辑、形状操作、排序、选择、I/O 、离散傅里叶变换、基…

从零掌握微服务通信安全:mTLS全解析

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 在云原生时代&#xff0c;微服务架构的普及带来了灵活性和可扩展性&#xff0c;但也让服务间通信的安全性成为核心挑战。mTLS&#xff08;Mutual TLS&…

Node.js net.Socket.destroy()深入解析

socket.destroy() 是 Node.js net 模块中用于强制销毁 TCP 套接字的方法&#xff0c;比 socket.end() 更彻底。下面我将从多个方面全面讲解这个方法。 基本用法 const net require(net);const server net.createServer((socket) > {// 强制销毁套接字socket.destroy(); })…

vmware 克隆虚拟机,报错:克隆时出错:指定不存在的设备。然后电脑卡死,只能强制关机再开机。

vmware 克隆虚拟机&#xff0c;报错&#xff1a;克隆时出错:指定不存在的设备。然后电脑卡死&#xff0c;只能强制关机再开机。1、问题描述2、问题原因3、解决方法1、问题描述 vmware 版本&#xff1a;vmware workstation pro 17.6.3 克隆虚拟机时&#xff0c;创建完整克隆&am…

如何使用Python将任意PPT变为“智能模板”(解决 python-pptx 替换元素无法保留格式的问题,阴影、填充等属性保留!)

文章目录 📖 介绍 📖 🏡 演示环境 🏡 📒 深入 OpenXML:格式保留的终极武器 📒 🚀 如何打造你自己的“格式保留”PPT模板? 🧐 为什么格式会丢失? 🖼️ 方案一:图片的“格式移植”大法 🛠️ 实现代码 🔹 原理解析 ✍️ 方案二:文本的“外科手术”大法…

学习python中离线安装pip及下载package的方法

正常而言&#xff0c;Python 3.4及以上版本默认自带pip工具‌&#xff0c;无需额外安装&#xff0c;如果需要单独离线安装pip&#xff0c;可以先使用DeepSeek查看指定操作系统能安装的最高pip版本&#xff0c;然后在参考文献1中现在指定版本的pip离线安装文件&#xff0c;通常为…

liunx运维进阶脚本

一、文件与目录操作1.快速创建目录树mkdir -p project/{src,doc,test/{unit,integration}}创建嵌套目录结构&#xff0c;避免逐层创建。2查找并删除7天前的日志文件find /var/log -name "*.log" -mtime 7 -exec rm -f {} \;结合find和exec实现定时清理。3.批量重命名…

Apache Ignite 中的 SQL 模式(Schema)管理机制

这段内容讲的是 Apache Ignite 中的 SQL 模式&#xff08;Schema&#xff09;管理机制。我们可以从几个方面来理解&#xff1a; 一、什么是 Schema&#xff08;模式&#xff09;&#xff1f; 在 SQL 中&#xff0c;Schema 是数据库对象&#xff08;如表、视图等&#xff09;的…

分布式光伏发电多合一(也称为五合一或者群调群控)终端,从功能、市场前景等等方面介绍

对于当下分布式光伏从业者&#xff0c;多合一终端经常被提及到。而且很多地区也有正常使用&#xff0c;目前来看&#xff0c;使用效果也是比较好的&#xff0c;满足当下的使用要求。并且价格也是可以接受。下面从几个方面简单介绍一下。功能介绍 5G通信功能 设备内置 5G通信模组…

AWE2026启动:加码AI科技,双展区联动开启产业新格局

7月22日&#xff0c;由中国家用电器协会主办的2026年中国家电及消费电子博览会&#xff08;AWE2026&#xff09;启动发布会在上海举行。据「TMT星球」了解&#xff0c;AWE2026将以“AI科技、慧享未来”为主题&#xff0c;首次启用“一展双区”的新模式&#xff0c;于2026年3月1…

Django基础(六)———数据库

前言上篇文章给大家介绍了DTL模板结构这篇文章将讲述Django框架与MySQL数据库的综合使用一、Django配置连接数据库在操作数据库之前&#xff0c;首先先要连接数据库&#xff0c;这里我们以配置MySQL为例来讲解。Diango连接数据库&#xff0c;不需要单独的创建一个连接对象。 只…

postgresql使用记录 SCRAM authentication requires libpq version 10 or above

文章目录 背景 如何用命令行连接数据库 报错 原因 解决方案 psql常见命令 🔍 **核心数据库操作命令** 1. **查看所有数据库** 2. **切换数据库** 3. **查看表及结构** 4. **执行 SQL 文件** 5. **退出 psql** ⚙️ **高级管理命令** ️ **注意事项** 背景 由于某种原因,无法…

2.0版本seata、nacos+ruoyi(微服务)配置

一、下载&#xff1a; seata下载&#xff1a;点击这里 nacos下载&#xff1a;点击这里 ruoyi&#xff08;微服务&#xff09;下载&#xff1a;点击这里 Git bash下载&#xff1a;点击这里 本文所用的版本&#xff1a; seata-2.2.0&#xff08;下图红色框框&#xff09;&a…

面试高频题 力扣 LCR 130.衣柜整理 洪水灌溉(FloodFill) 深度优先遍历(dfs) 暴力搜索 C++解题思路 每日一题

目录零、题目描述一、为什么这道题值得一看&#xff1f;二、题目拆解&#xff1a;核心要素与约束三、算法实现&#xff1a;基于 DFS 的解决方案代码逻辑拆解五、时间复杂度与空间复杂度时间复杂度空间复杂度六、坑点总结七、举一反三八、洪水灌溉&#xff08;Flood Fill&#x…

Ext4文件系统全景解析

目录Ext4文件系统全景解析&#xff1a;从inode到数据恢复实战1. Ext文件系统的"小区规划"&#xff1a;块组结构详解 &#x1f3d8;️1.1 块组&#xff1a;文件系统的基本管理单元1.2 超级块的"多重备份"机制 &#x1f6e1;️2. inode&#xff1a;文件的&qu…

贪心算法Day4学习心得

先来看第一道&#xff1a;860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 有如下三种情况&#xff1a; 情况一&#xff1a;账单是5&#xff0c;直接收下。情况二&#xff1a;账单是10&#xff0c;消耗一个5&#xff0c;增加一个10情况三&#xff1a;账单是20&#…