CSS3中transform2D变形详解

CSS3变形

在CSS3中,动画效果包括3个部分:

  • 变形(transform)
  • 过渡(transition)
  • 动画(animation)

在实际开发中,有时需要实现元素的各种变形效果,如平移,缩放,旋转,倾斜等。

在CSS3中,可以使用transform属性来实现元素的变形效果

语法:

transform:none | transform-function;

属性值

  • transform属性的默认值为none,表示不变形。
  • transform-function用于设置变形方法,可以是一个或多个变形方法列表。

使用transform属性实现元素的2D变形,2D变形主要有平移、缩放、旋转和倾斜4种变形效果。

transform属性一般配合以下方法来实现各种变形效果

方法说明
translate()平移
scale()缩放
skew()倾斜
rotate()旋转

注意:transform无法作用于行内元素

2D变形

translate()方法

概念:transform属性的translate()方法定义元素的平移效果

语法:

transform:translateX(x);  /*沿x轴方向平移*/
transform:translateY(y);  /*沿y轴方向平移*/
transform:translate(x,y); /*沿x轴和y轴同时平移*/

属性值

属性值说明
单个长度/百分比一个长度值或百分比,表示二维平移,与声明了x轴和y轴的平移一样(此时省略的第二个值默认为0)。
两个长度/百分比两个长度值或百分比表示在二维上分别按照指定x轴和y轴的值进行的平移。
三个长度/百分比三个长度或百分比,表示分别指定x轴,y轴,z轴的值进行三维平移。等同于translate3d()方法(3D平移)
none表示不应用平移效果

所有的CSS3变形中的2D变形采用的坐标系都是W3C坐标系。
在这里插入图片描述

实例:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>平移</title><style>*{padding:0;margin:0;}table{margin:100px;}td{width:300px;height:300px;text-align:center;border:1px solid rgba(255,105,180,0.6);}div{width:150px;height:150px;margin:0 auto;border:5px solid chartreuse;text-align:center;line-height:150px;font-size:20px;}.a:hover{/* 等同于translate(30px,0) */transform:translateX(30px); }.b:hover{/* 等同于translate(0,30px) */transform:translateY(30px);}.c:hover{transform:translate(30px,30px);}</style></head><body><table><tr><td><div class="a">tranaslateX</div></td><td><div class="b">translateY</div></td><td><div class="c">translate</div></td></tr></table></body>
</html>

运行结果

请添加图片描述

scale()方法

概念:transform属性的scale()方法定义元素的缩放效果

缩放,指的是缩小放大

语法:

transform:scaleX(x); /*沿x轴方向缩放*/
transform:scaleY(y); /*沿y轴方向缩放*/
translate:scale(x,y); /*沿x轴和y轴同时缩放*/

属性值

  • x和y的属性值可以是正数、负数或小数

  • 正数表示基于指定的宽度和高度放大元素

  • 负数不表示缩小元素,而是表示先翻转元素(如文字被翻转),再缩放元素

  • 若第二个属性值省略,则默认表示等于第一个属性的值

  • 当值为1时将不进行任何处理。

  • 使用大于1的数值表示放大元素

  • 使用小于1的小数表示缩小元素

注意:scale仅适用于在二维平面上的切换。如果需要进行空间中的缩放,必须使用scale3D().

实例:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>缩放</title><style>*{padding:0;margin:0;}table{margin:100px;}td{width:300px;height:300px;text-align:center;border:1px solid rgba(255,105,180,0.6);}div{width:150px;height:150px;margin:0 auto;border:5px solid chartreuse;text-align:center;line-height:150px;font-size:20px;}.a:hover{/* 表示元素在x轴方向放大为原来的1.5倍 */transform:scaleX(1.5); }.b:hover{/* 表示元素在y轴方向放大为原来的1.2倍 */transform:scale(1.2);}.c:hover{/* 表示元素在x轴和y轴两个方向同时放大,x轴方向缩小为原来的0.6陪,y轴方向 放大为原来的1.5倍*/transform:scale(0.8,1.2);}</style></head><body><table><tr><td><div class="a">scaleX</div></td><td><div class="b">scaleY</div></td><td><div class="c">scale</div></td></tr></table></body>
</html>

运行结果

请添加图片描述

rotate()方法

概念:transform属性的rotate()方法定义元素的旋转效果

语法:

transform:rotate(angle);

参数说明

  • 参数angle仅只有一个,该参数表示元素相对于中心原点旋转的度数,单位为deg
  • 若度数为正时,则按照顺时针旋转
  • 若度数为负时,则按照逆时针旋转

实例:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>旋转</title><style>*{padding:0;margin:0;}table{margin:100px;}td{width:300px;height:300px;text-align:center;border:1px solid rgba(255,105,180,0.6);}div{width:150px;height:150px;margin:0 auto;border:5px solid chartreuse;text-align:center;line-height:150px;font-size:20px;}.a:hover{/* 表示元素顺时针旋转45度 */transform:rotate(45deg); }.b:hover{/* 表示元素逆时针旋转45度 */transform:rotate(-45deg);}</style></head><body><table><tr><td><div class="a">rotate(45deg)</div></td><td><div class="b">rotate(-45deg)</div></td></tr></table></body>
</html>

运行结果
请添加图片描述

skew()方法

概念:skew()方法定义一个元素在二维平面上的倾斜转换

语法:

transform:skewX(x); /*沿X轴方向倾斜*/
transform:skewY(y); /*沿Y轴方向倾斜*/
transform:skew(x,y);/*沿x轴和y轴同时倾斜*/

参数说明

  • 参数x表示在x轴方向的倾斜度数,单位为deg。如果度数为正,则表示元素沿x轴方向逆时针倾斜;如果度数为负,则表示元素沿x轴方向顺时针倾斜。
  • 参数y表示在y轴方向的倾斜度数,单位为deg。如果度数为正,则表示元素沿y轴方向逆时针倾斜;如果度数为负,则表示元素沿y轴方向顺时针倾斜。
  • 若省略第二个参数,则取默认值0。

实例:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>倾斜</title><style>*{padding:0;margin:0;}table{margin:100px;}td{width:300px;height:300px;text-align:center;border:1px solid rgba(255,105,180,0.6);}div{width:150px;height:150px;margin:0 auto;border:5px solid chartreuse;text-align:center;line-height:150px;font-size:20px;}.a:hover{transform:skewX(30deg); }.b:hover{transform:skewX(-30deg);}.c:hover{transform:skewY(30deg);}.d:hover{transform:skewY(-30deg);}.e:hover{transform:skew(20deg,30deg);}</style></head><body><table><tr><td><div class="a">skewX(30deg)</div></td><td><div class="b">shewX(-30deg)</div></td><td><div class="c">skewY(30deg)</div></td><td><div class="d">skewY(-30deg)</div></td><td><div class="e">skew(20deg,30deg)</div></td></tr></table></body>
</html>

运行结果
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/340969.html

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

相关文章

Kafka的简介及架构

目录 消息队列 产生背景 消息队列介绍 常见的消息队列产品 应用场景 消息队列的消息模型 Kafka的基本介绍 简介 Kafka的架构 Kafka的使用 Kafka的shell命令 Kafka的Python API的操作 完成生产者代码 完成消费者代码 消息队列 产生背景 消息队列:指数据在一个容器…

PyCharm使用手册

配置文件和代码模板 文件注释模板&#xff1a; 注释项描述示例Project项目名称hello_pythonFile文件名称hello_python.pyAuthor作者Zhang SanDate创建时间2024-01-11 17:05:00PyVersionPython解释器版本Python3.7Description文件描述这是一个python语言入门文件 效果示例&am…

【阅读笔记】Chain of LoRA

一、论文信息 1 论文标题 Chain of LoRA: Efficient Fine-tuning of Language Models via Residual Learning 2 发表刊物 arXiv2023 3 作者团队 Department of Computer Science, Princeton University School of Computer Science and Engineering, Nanyang Technologic…

2023年人工智能的最新发展(下)

目录 1.MidJourney&#xff1a; 2.GAN: 3.Diffusion Model 4.DALLE、Disco Diffusion 5.Stable Diffusion 1.MidJourney&#xff1a; 2023年3月&#xff0c;一组中国小情侣的照片在网络上迅速走红。这组照片看起来普通&#xff0c;就像一对小情侣的合影&#xff0c;但实…

Go后端开发 -- 条件、循环语句 defer语句

Go后端开发 – 条件、循环语句 && defer语句 文章目录 Go后端开发 -- 条件、循环语句 && defer语句一、条件语句1.if ... else 语句2.switch语句3.select语句 二、循环语句1.for循环 三、defer语句1.defer语句的作用2.defer和return的先后顺序3.recover错误拦截…

212. 单词搜索 II(字典树的另一种类型)

大致思路是&#xff1a; 根据words列表建立字典树&#xff0c;其中注意在单词末尾&#xff0c;将原来的isEnd变量换成存储这个单词的变量&#xff0c;方便存储到ans中&#xff0c;另外&#xff0c;字典树的字节点由原来的Trie数组变为hashmap&#xff0c;方便检索字母。 建立…

C++ n皇后问题 || 深度优先搜索模版题

n− 皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n &#xff0c;请你输出所有的满足条件的棋子摆法。 输入格式 共一行&#xff0c;包含整数 n 。 …

动态规划day03

343. 整数拆分(第二次做还是没弄明白) 力扣题目链接(opens new window) 给定一个正整数 n&#xff0c;将其拆分为至少两个正整数的和&#xff0c;并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2输出: 1解释: 2 1 1, 1 1 1。 示例 2: 输入: …

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(4)员工管理|修改员工、配置文件

指路&#xff08;1&#xff09;&#xff08;2&#xff09;&#xff08;3&#xff09;&#x1f447; 黑马程序员JavaWeb开发|案例&#xff1a;tlias智能学习辅助系统&#xff08;1&#xff09;准备工作、部门管理_tlias智能学习辅助系统的需求分析-CSDN博客https://blog.csdn.n…

AI人工智能的发展趋势及未来展望

人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;作为一门拥有悠久历史但最近才得到广泛关注的领域&#xff0c;正在以惊人的速度推动着科技进步和社会变革。近年来&#xff0c;随着计算能力、数据规模和算法研究的不断突破&#xff0c;人工智能已经…

java通过HttpClient方式实现https请求的工具类(绕过证书验证)

目录 一、引入依赖包二、HttpClient方式实现的https请求工具类三、测试类 一、引入依赖包 引入相关依赖包 <!--lombok用于简化实体类开发--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><option…

MySQL批量插入技巧

关于MySQL批量插入的一些问题 MySQL一直是我们互联网行业比较常用的数据&#xff0c;当我们使用半ORM框架进行MySQL大批量插入操作时&#xff0c;你是否考虑过这些问题: 进行大数据量插入时&#xff0c;是否需要进行分批次插入&#xff0c;一次插入多少合适&#xff1f;有什么…