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.mzph.cn/news/613945.shtml

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

相关文章

Zetta Decision API连接,提升电商平台营销系统效率

高效无代码开发连接电商与客服系统 在电商和客户服务系统的运营中&#xff0c;有效的连接和数据集成是至关重要的。Zetta Decision提供了一种无需传统API开发就能实现系统连接的解决方案&#xff0c;这对于希望快速整合多个平台和服务的电商企业尤其重要。通过Zetta Decision&…

基于自适应遗传算法的车间调度matlab仿真,可以任意调整工件数和机器数,输出甘特图

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 编码与初始化 4.2 适应度函数 4.3 遗传操作 4.4 自适应机制 4.5 终止条件 5.完整程序 1.程序功能描述 基于自适应遗传算法的车间调度matlab仿真,可以任意调整工件数和机器数,输出甘…

Linux基础配置

文章目录 说明1.安装 ifconfig 和 vim 命令2.设置root密码3.设置允许root用户密码登录4.网络配置5.设置时间同步6.关闭防火墙7.主机名与IP地址的映射 说明 配置基于ubuntu22版本,当前unbuntu18适用,后续安装持续更新 1.安装 ifconfig 和 vim 命令 sudo apt install net-tool…

[渗透测试学习] Crocodile - HackTheBox

文章目录 靶机:CrocodileTask1Task2Task3Task4Task5Task6Task7Task8Task9Task10靶机:Crocodile 考察的是FTP传输协议相关知识 Task1 问题:在扫描过程中,什么NMAP扫描开关使用默认脚本? -sCTask2 问题

web学习笔记(十四)

目录 1.数组 1.1数组的概念 1.2数组的创建 1.3数组的索引和获取 1.4数组的遍历、长度和检测数据类型 1.5数组的操作 1.6深拷贝和浅拷贝 2.数组常用的方法&#xff08;重点&#xff09;&#xff1a; 2.1常用方法汇总 2.2 补充&#xff1a; 1.数组 1.1数组的概念 数组是…

【STM32】HAL库的STOP低功耗模式UART串口唤醒BUG,第一个接收字节出错的问题(尚未解决,疑难杂症)

【STM32】HAL库的STOP低功耗模式UART串口唤醒BUG&#xff0c;第一个接收字节出错的问题&#xff08;尚未解决&#xff0c;疑难杂症&#xff09; 文章目录 BUG复现调试代码推测原因及改进方案尝试中断时钟供电外设唤醒方式校验码硬件问题 切换到STOP0模式尝试最终结论和猜想附录…

[SpringBoot]如何在一个普通类中获取一个Bean

最近在项目中出现了一个这种情况&#xff1a;我一顿操作猛如虎的写了好几个设计模式&#xff0c;然后在设计模式中的类中想将数据插入数据库&#xff0c;因此调用Mapper持久层&#xff0c;但是数据怎么都写不进去&#xff0c;在我一顿操作猛如虎的查找下&#xff0c;发现在普通…

在WindowsServer2012中部署war项目

目录 前言 一.jdk安装 二.Tomact安装 三.MySQL安装 ​编辑​编辑​编辑​编辑​编辑​编辑​编辑 四.开放端口号 MySQL开放端口号 Tomact开放端口号 ​编辑 五.项目部署 1.将war放置在tomact中 2.配置项目sql脚本 3.最终效果 前言 安装Java开发工具包&#xff08…

【libpcap】获取报文pcap的ns级别的时间戳

1.安装libpcap 首先&#xff0c;下载最新的 libpcap 源代码。你可以从 tcpdump.org 获取最新版本 1 解压下载的libpcap tar -zxvf libpcap-version.tar.gz 2 进入解压目录进行安装 cd libpcap-version ./configure make sudo make install2 解析报文时间戳 #include <pca…

力扣 2707.字符串中的额外字符(动态规划)

力扣 2707.字符串中的额外字符 动态规划 f[0] 0; s字符串长度为n&#xff0c;求f[n] f[n] ((f[n - 1] 1) < f[j : n]) ? (f[n - 1] 1) : f[j : n]; (其中 j < n) 其中f[j : n]为字符串第j位到第n位&#xff0c;这里需要满足f[j : n]为字典中所出现的字符串 因此&…

Linux进阶命令使用

在 Linux 中&#xff0c;除了常用的基础命令&#xff0c;有一系列进阶命令可以帮助用户更有效地管理系统和执行复杂的任务。以下是一些常见的 Linux 进阶命令及其用法&#xff1a; 文本处理 grep&#xff1a;搜索文本并打印匹配的行。 grep pattern filenameawk&#xff1a;用…

Fancy

专门记录一点思维题。 1. 反转与双端队列&#xff1a;LC 2810 故障键盘 这题是个easy&#xff0c;但用StringBuilder强行模拟反转就没意思了。 可以这么想&#xff0c;当打出一个i&#xff0c;代表一个控制信号&#xff0c;反转。 一开始我们向队列尾部&#xff08;屏幕上的…

SpringMVC 学习博客记录

文章目录 Servlet请求转发和请求包含RequestDispatcher HandlerInterceptor组件实际运用场景 HandlerMapping&RequestMappingInfo(HandlerMapping)HandlerExecutionChainHandlerAdapter源码学习知识点博客记录 Servlet请求转发和请求包含 RequestDispatcher Request#getR…

文件上传进阶绕过技巧(一)和靶场实战

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 0、环境准备 请移步《文件上传靶场实战&#xff1a;upl…

数据库的数据会存到文件中

数据库的数据会存到文件中。文件就是操作系统对磁盘block的映射。 文件/块在开头有元数据&#xff0c;包含eof的位置&#xff0c;recode的数量&#xff0c;每个recode的长度。 聚集索引和数据放在一起&#xff0c;索引就是数据主键。 而非聚集索引在另一个地址中单独存储&…

从零学Java 泛型

Java 泛型 文章目录 Java 泛型1 什么是泛型?2 泛型类3 泛型接口4 泛型方法5 泛型集合 Collection 工具类 1 什么是泛型? Java泛型是JDK1.5中引入的一个新特性&#xff0c;其本质是参数化类型&#xff0c;把类型作为参数传递。 常见形式有泛型类、泛型接口、泛型方法。 语法…

SPI接口协议

SPI接口协议 SPI(Serial Peripheral Interface)是由Motorola公司定义的接口协议标准&#xff0c;串行外设接口(SPI)是微控制器和外围IC&#xff08;如传感器、 ADC、 DAC、移位寄存器、 SRAM等&#xff09;之间使用最广泛的接口之一。SPI是一种同步、全双工、主从式接口&#x…

你了解计算机网络的发展历史吗?

1.什么是计算机网络 计算机网络是指将一群具有独立功能的计算机通过通信设备以及传输媒体被互联起来的&#xff0c;在通信软件的支持下&#xff0c;实现计算机间资源共享、信息交换或协同工作的系统。计算机网络是计算机技术与通信技术紧密结合的产物&#xff0c;两者的迅速发展…

Lua调用dll(C#)的代码示例

以下是一个简单的示例&#xff0c;演示如何在Lua中调用.NET Framework的DLL。请注意&#xff0c;这个示例假设你已经安装了Lua和.NET Framework&#xff0c;并且有一个名为"MyDll.dll"的.NET DLL。 首先&#xff0c;创建一个名为"MyDll.cs"的C#文件&#…

11853 - Paintball (UVA)

题目链接如下&#xff1a; Online Judge 这道题挺可惜&#xff0c;我思路其实就差了一点点没想出来&#xff0c;还是看了uva 11853 paintball&#xff08;好题&#xff09;——yhx_yhx. live-CSDN博客 这里的文字部分才最终写出来。 dfs版本代码如下&#xff1a; #include …