CSS变换

CSS变换

根据 CSS 的变换的功能特性,它可以分为位移旋转缩放倾斜透视

也可以分成2D变换和3D变换,2D变换是二维平面上进行的,即 X 轴和 Y 轴。这些变换不涉及 Z 轴。3D 变换允许元素在三维空间中进行操作,这些变换涉及 X 、Y 和 Z 轴。这使得元素可以在视觉上远离或靠近观察者,创造出更加逼真的三维效果。

transform 属性包含多个变换函数时,它的顺序很重要,是从左向右应用的,从左到右乘以变换属性中的每个变换函数。

.element {
    transform: translate(60px, 60px) scale(1.5, 1.5) rotate(45deg);
}

.element {
    transform: rotate(45deg) scale(1.5, 1.5) translate(60px, 60px);
}

transform 属性中的 translate(60px, 60px) 和 rotate(45deg) 两个变换函数互换了一下位置。最终呈现给用户的结果是完全不同的。

CSS 的变换函数有近 20 种不同的函数,它们分别用来帮助你对元素进行平移、旋转、缩放、倾斜和透视:

  • 平移translate() 、translateX() 、translateY() 、translateZ() 和 translate3d()

  • 旋转rotate() 、rotateX() 、rotateY() 、rotateZ() 和 rotate3d()

  • 缩放scale() 、scaleX() 、scaleY() 、scaleZ() 和 scale3d()

  • 倾斜(有时也称扭曲) :skew() 、skewX() 和 skewY() 。注意,它没有 3D 空间的概念,在 CSS 中并没有 skewZ() 和 skew3d() 两个函数

  • 透视perspective() ,它有对应的一个 CSS 属性,即 perspective

除了上面所列的 CSS 变换函数之外,还有两个矩阵函数,它们分别是 2D 矩阵 matrix() 和 3D 矩阵 matrix3d() 。

平移函数 translate()

  • x 轴移动语法 : transform: translateX(x);
  • y 轴移动语法 : transform: translateY(y);
  • x / y 轴移动语法 : transform: translate(x, y);
  • 沿 x 轴水平移动,正值向右移动,负值向左移动

  • 沿 y 轴上下移动,正值向下移动,负值向上移动

  • 可以是一个长度值(<length>)、百分比值(<percentage>),还可以是其他的数学函数表达式值

 注意:translate() 函数的参数是个百分比值时,该百分比值是相对于元素自身的大小计算,而不是父容器尺寸计算,即 x 轴方向相对于元素的 width 计算,y 轴方向相对于元素的 height 计算。

/* 只沿 x 轴移动元素 */
.element {
    transform: translateX(var(--positionX));
    /* 等同于 */
    transform: translate(var(--positionX), 0);
}

/* 只沿 y 轴移动元素*/
.element {
    transform: translateY(var(--positionY));
    /* 等同于 */
    transform: translate(0, var(--positionY));
}

 缩放函数 scale()

  • scale() 函数的值为 1 时,元素将保持原样不变,既不放大,也不缩小

  • scale() 函数的值为 0 时,元素将缩小到不可见

  • scale() 函数的值大于 1 时,元素将会放大

  • scale() 函数的值小于 1 时,元素将会缩小

  • scale() 函数可以被视为 scaleX() 和 scaleY() 的简写函数

  • scaleX() 函数:用于指定元素在水平方向上的缩放倍数,而垂直方向保持不变

  • scaleY() 函数:用于指定元素在垂直方向上的缩放倍数,而水平方向保持不变

注意当 scale() 函数传递两个值时,只要其中有一个值为 0 ,元素都会被缩小到不可见。另外,当两个值相同时,第二个参数值(y 轴)可以省略不写 。

scale3d() 函数允许同时指定三个方向(xy 和 z)上的缩放倍数,用于三维变换。

  • x:表示水平方向的缩放倍数。

  • y:表示垂直方向的缩放倍数。

  • z:表示在Z轴上的缩放倍数。

    电视开关动画实例: 

    @layer animation {
        @keyframes closeTV {
            from {
                transform: scale(1, 1);
                filter: brightness(100%);
            }
            to {
                transform: scale(0.5, 0);
                filter: brightness(800%);
            }
        }
    
        .switch:has(:checked) ~ .video > video {
            animation: closeTV 0.28s ease-out both;
        }
    }
    

    旋转函数 rotate()

  • rotateX() 函数 :元素绕 x 轴进行 3D 旋转

  • rotateY() 函数:元素绕 y 轴进行 3D 旋转

  • rotateZ() 函数:元素绕 z 轴进行 3D 旋转

  • rotate3d() 函数:元素在三维空间中绕指定轴进行旋转

如果 rotate() 函数使用正角度值,则元素进行顺时针旋转;反之元素进行逆时针旋转

rotate() 函数的值除了正负角度值之外,你还可以使用其他描述角度值的单位,比如:

  • 角度值( deg  :一个完整的圆是 360deg

  • 梯度值( grad  :一个完整的圆是 400grad

  • 弧度值( rad  :一个完整的圆是  弧度

  • 圈( turn  :一个完整的圆是 1turn

1 度(deg)  = 1.11111 梯度(grad)
1 度(deg)  = π ÷ 180 弧度(rad)
1 圈(turn) = 360 度(deg)

rotateZ() 和 rotate() 的视觉效果上是一样的

两个 3D 变换函数,可以由单个轴的变换函数组合而成,即:

translate3d(tx, ty, tz) = translateX(tx) translateY(ty) translateZ(tz)
scale3d(sx, sy, sz) = scaleX(sx) scaleY(sy) scaleZ(sz) 

倾斜函数 skew()

 skew()通过沿水平方向 x 轴和(或)垂直方向 y 轴倾斜元素来扭曲元素,从而呈现出倾斜的外观:

  • skew() :接受两个参数,第一个是水平方向倾斜元素的角度,第二个是垂直方向倾斜元素的角度,如果第二个参数省略不写,将表示垂直方向不做任何角度的倾斜,即为 0

  • skewX() :使元素沿着水平方向按指定的角度倾斜元素

  • skewY() :使元素沿着垂直方向按指定的角度倾斜元素

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux——计算机进程基础知识

计算机基础知识 1.计算机组成五大部件: (1) 运算器 &#xff1a;也叫算数逻辑单元&#xff0c;完成对数据的各种常规运算&#xff0c;如加减乘除&#xff0c;也包括逻辑运算&#xff0c;移位&#xff0c;比较等。 (2) 控制器 &#xff1a; 它是整个计算机系统的控制中心&…

Maven的scope详解

依赖范围介绍 maven 项目不同的阶段引入到classpath中的依赖是不同的&#xff0c;例如&#xff0c;编译时&#xff0c;maven 会将与编译相关的依赖引入classpath中&#xff0c;测试时&#xff0c;maven会将测试相关的的依赖引入到classpath中&#xff0c;运行时&#xff0c;mav…

三星:HBM4的16层堆叠技术验证成功

随着人工智能、大数据分析、云计算及高端图形处理等领域对高速、高带宽存储需求的激增&#xff0c;下一代高带宽内存&#xff08;High Bandwidth Memory, HBM&#xff09;——HBM4已成为全球存储芯片巨头三星、SK海力士和美光竞相追逐的技术高地。 随着AI、机器学习以及高性能…

Linux 5.10 Pstore 功能测试

目录 简介环境配置内核配置参考备注 简介 Pstore(Persistent store support)是用于系统发生oops或panic时&#xff0c;自动保存内核log buffer中的日志。随着功能不断完善&#xff0c;Duo S使用Linux 5.10已经支持保存console日志、ftrace消息和用户空间日志的收集&#xff0c…

JavaScript - 你能说出解决跨域的一些方案吗

难度级别:中高级及以上 提问概率:65% 回答解决跨域之前,首先建议求职者描述什么是跨域。跨域问题是浏览器基于同源策略引起的,同源策略是浏览器的一种安全功能。同源要保证域名相同,或是被访问服务的协议+主机+端口都相同,那么反之这些属…

信阳附大医院-市民心中的健康守护者

信阳附大医院,一所集医疗、预防、保健、科研、教学、康复于一体的现代化综合医院,坐落于信阳市工区路600号,是市卫生部门批准成立的医疗机构,更是市民心中的健康守护者. 医院环境优雅,设施先进,服务周到,汇聚了一支技术精湛、经验丰富的医疗团队.医师们以患者为中心,用心倾听,精…

Hybrid混合开发 和 Android平台JSBridge的原理

书接上篇&#xff1a;移动端研发技术的进化历程 纯原生开发主要面临动态化和开发成本两个问题&#xff0c;而针对这两个问题&#xff0c;诞生了一些跨平台的动态化框架。 针对原生开发面临的问题&#xff0c;业界一直都在努力寻找好的解决方案&#xff0c;而时至今日&#xf…

matlab学习001-简单的矩阵输入及绘制信号曲线

目录 1&#xff0c;熟悉简单的矩阵输入 1.1&#xff0c;创建矩阵 1.2&#xff0c;在命令行调用文件中的变量 1.3&#xff0c;ones函数 1.4&#xff0c;who和whos的使用 2&#xff0c;绘制信号曲线 2.1&#xff0c;实指数信号 2.2&#xff0c;频率为50Hz的周期方波信号…

【Linux】软硬链接 / 动静态库

目录 一. 软硬链接1. 硬链接2. 软链接3. unlink4. 目录的硬链接 二. 动静态库1.1 静态库制作1.2 静态库使用2.1 动态库制作2.2 动态库使用3. 动态链接原理 一. 软硬链接 1. 硬链接 硬链接(hard link) 可以将它理解为原始文件的别名, 和原始文件使用相同的 inode 编号和 data …

动态规划:背包问题合集

01背包 定义dp[i][j]&#xff1a;在前i件物品中选出若干件&#xff0c;放入容量为j的背包&#xff0c;能获得的最大价值。 考虑第i件物品拿还是不拿。讨论c[i]与背包容量的关系&#xff1a; &#xff08;1&#xff09;j < c[i] 时&#xff0c;背包容量为j&#xff0c;而第…

C++进阶编程 --- 3(上).string容器、vector容器、deque容器、stack容器

文章目录 第三章(上)&#xff1a;3.STL 常用容器3.1 string容器3.1.1 string基本概念3.1.2 string构造函数3.1.3 string赋值操作3.1.4 string字符串拼接3.1.5 string查找和替换3.1.6 string字符串比较3.1.7 string字符存取3.1.8 string插入与删除3.1.9 string子串 3.2 vector容…

14届蓝桥杯 C/C++ B组 T5 接龙排序 (最长上升子序列DP+优化)

不难发现这是一个LIS问题&#xff0c;但是如果直接套用LIS的模版&#xff0c;在数据范围到达 1 e 5 1e5 1e5 的情况下&#xff0c;就只能够得到一半的分数&#xff0c;所以我们需要对其进行优化。 首先给出暴力的代码&#xff1a; #include<iostream> using namespace…

Linux虚拟网络设备深度解析:使用场景、分类与开发者指南

Linux虚拟网络设备支撑着各种复杂的网络需求和配置&#xff0c;从基础的网络桥接到高级的网络隔离和加密&#x1f510;。以下是对主要Linux虚拟网络设备的介绍、它们的作用以及适用场景的概览&#xff0c;同时提出了一种合理的分类&#xff0c;并指出应用开发人员应该着重掌握的…

vue2/vue3手写专题——实现双向绑定/响应式拦截/虚拟DOM/依赖收集

目录 vue双向绑定 请手动实现一个简单的双向绑定功能&#xff0c;要求实现以下功能&#xff1a; 1.使用原生javaScript 2.使用vue非v-model方式实现 思考&#xff1a;vue为什么要做双向绑定&#xff1f; 虚拟DOM/Render函数 将给定html片段写出Virtual Dom结构、并尝试挂载到页…

【面试】运算器-⑪搜索旋转排序数组

先存一下后面要用的字符⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ 33. 搜索旋转排序数组 感谢力扣&#xff01; 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了…

《UE5_C++多人TPS完整教程》学习笔记31 ——《P32 角色移动(Character Movement)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P32 角色移动&#xff08;Character Movement&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff08;也是译者&…

S32K324 数据初始化Rom到Ram Copy的方式

文章目录 前言基础知识ld文件中的段定义ld文件中的符号定义 ld定义copy地址范围启动文件中的定义Copy的使用总结 前言 之前一直不理解在ld文件中加__xxx_ram_start,__xxx_rom_start,__xxx_rom_end这些的作用&#xff0c;也不清楚原理。前几天遇到一个内存copy的问题&#xff0…

云计算(五)—— OpenStack基础环境配置与API使用

OpenStack基础环境配置与API使用 项目实训一 【实训题目】 使用cURL命令获取实例列表 【实训目的】 理解OpenStack的身份认证和API请求流程。 【实训准备】 &#xff08;1&#xff09;复习OpenStack的认证与API请求流程的相关内容。 &#xff08;2&#xff09;熟悉cURL…

软件设计师——数据库

数据库 三级模式两级映像关系模型基本术语关系模型中的关系完整性约束 三级模式两级映像 概念模式&#xff08;也称模式&#xff09;对应基本表 外模式&#xff08;也称用户模式或子模式&#xff09;对应视图 内模式&#xff08;也称存储模式&#xff09;对应存储文件 两级映像…

SL1581耐压30V芯片 24V转5V/2.4A

SL1581是一款专为24V转5V/2.4A应用设计的耐压30V芯片。这款芯片采用了先进的电源管理技术和高效能的转换电路&#xff0c;为电子设备提供了稳定、可靠的电源输出。 首先&#xff0c;SL1581芯片具有出色的耐压性能&#xff0c;能够在高达30V的电压下稳定工作。这使其非常适合在需…