CSS变换

news2024/11/27 6:15:33

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() :使元素沿着垂直方向按指定的角度倾斜元素

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

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

相关文章

系统架构评估_3.ATAM方法

架构权衡分析方法&#xff08;Architecture Tradeoff Analysis Method&#xff0c;ATAM&#xff09;是在SAAM的基础发展起来的&#xff0c;主要针对性能、实用性、安全性和可修改性&#xff0c;在系统开发之前&#xff0c;对这些质量属性进行评价和折中。 &#xff08;1&#x…

K8s学习十(高级调度)

高级调度 CronJob计划任务 在 k8s 中周期性运行计划任务&#xff0c;与 linux 中的 crontab 相同注意点&#xff1a;CronJob 执行的时间是 controller-manager 的时间&#xff0c;所以一定要确保 controller-manager 时间是准确的cron表达式如下&#xff1a; 配置如下&#x…

提高网站安全性,漏洞扫描能带来什么帮助

随着互联网的蓬勃发展&#xff0c;网站已经成为人们获取信息、交流思想、开展业务的重要平台。然而&#xff0c;与之伴随的是日益严重的网络安全问题&#xff0c;包括恶意攻击、数据泄露、隐私侵犯等。 为了保障网站的安全性&#xff0c;提前做好网站的安全检测非常有必要&…

基于Springboot+Vue实现前后端分离酒店管理系统

一、&#x1f680;选题背景介绍 &#x1f4da;推荐理由&#xff1a; 近几年来&#xff0c;随着各行各业计算机智能化管理的转型&#xff0c;以及人们经济实力的提升&#xff0c;人们对于酒店住宿的需求不断的提升&#xff0c;用户的增多导致酒店管理信息的不断增多&#xff0c;…

[计算机网络] 当输入网址到网页

HTTP 首先&#xff0c;对URL进行解析&#xff0c;URL包含了Web服务器和对应的文件&#xff08;文件路径&#xff09; URL是请求服务器中的文件资源 通过Web服务器和对应文件来生产HTTP包&#xff08;超文本传输协议&#xff09; DNS 根据域名查询对应的IP地址 域名的层级 根…

基于深度学习的电动自行车头盔佩戴检测系统

文章目录 1. 文档说明2. 运行环境说明2.1 硬件配置2.2 软件配置2.3 程序依赖库 3. 基本环境配置3.1 软件安装3.1.1 集成开发环境安装与配置3.1.2 数据库安装与配置3.1.3 编程语言安装3.1.4 CUDA和cuDNN安装与配置3.1.5 机器学习库安装 3.2 依赖库安装 4. 运行程序资源下载地 1.…

vue vue3 日期选择的组件,封装组件

一、背景 基于element日期选择组件&#xff0c;自行封装了一个组件。 以下是达到的效果&#xff1a; 1.选择年&#xff0c;日期选择组件默认填充是&#xff1a;当时的年&#xff1b; 2.选择月&#xff0c;日期选择组件默认填充的是&#xff1a;当时的年月&#xff1b; 3.选择日…

从人机界面设计黄金三法则视角看 ChatGPT 的界面设计的“好”与“坏”

热门文章推荐&#xff1a; &#xff08;1&#xff09;《为什么很多人工作 3 年 却只有 1 年经验&#xff1f;》&#xff08;2&#xff09;《一文掌握大模型提示词技巧&#xff1a;从战略到战术巧》&#xff08;3&#xff09;《AI 时代&#xff0c;程序员的出路在何方&#xff1…

window安装c环境(window安装GCC)

1.下载mingw 地址&#xff1a;MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net 2.安装mingw-get-setup.exe文件&#xff1a; 安装完成之后显示&#xff1a; 3.勾选需要安装的内容&#xff0c;然后进行安装或按第5步使用命令安装&#xff0c;推荐使用5步…

华为USG6000v

1、安全区域 一个及或多个接口的集合 默认的安全区域 Trust --- 优先级85&#xff0c;一般连接内网 Untrust --- 优先级5&#xff0c; 一般连接外网 Dmz --- 优先级50&#xff0c;一般连接服务器、 Local --- 优先级100&#xff0c;防火墙接口所在区的区域 2…

在Ubuntu系统下连接远程Ubuntu服务器

本篇文章介绍&#xff0c;如何在Ubuntu系统下连接远程Ubuntu系统并传输文件。 一. 连接远程Ubuntu服务器。 1. 打开命令行&#xff0c;输入 : sudo apt-get update &#xff0c; 对系统进行更新。 2. 安装 OpenSSH Server&#xff0c;输入 &#xff1a; sudo apt-get insta…

mysql 运算符 语句 字符集 校队集

mysql 运算符 使用select语句可以输出运算的结果 mysql标识符不区分大小写 算数运算符 1./除法 得到的结果是一个小数 %是整数,省略小数 2、除以0不会报错,得到的结果是 null 3.数宇和字符串做加法运算,并不会拼接 比较运算符 1.mysql里面的=是比较运算符,而不是赋值运算…

深入解析template,掌握C++模板的精髓!

掌握C模板&#xff08;template&#xff09;的优雅之道&#xff01; 一、什么是模板&#xff1f;二、模板如何工作&#xff1f;三、C 中的模板类型3.1、 类模板3.2、 函数模板 四、模板参数推导4.1、模板参数推导示例4.2、函数模板参数推导4.3、类模板参数推导&#xff08;C17 …

《C语言深度解剖》(4):深入理解一维数组和二维数组

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多数据结构与算法点击专栏链接查看&am…

Blender怎么样启动默认移动和Cavity效果

在使用Blender的过程中&#xff0c;有一些特殊的技巧很重要。 比如默认地设置blender打开时&#xff0c;就是移动物体&#xff0c;这样怎么样设置的呢&#xff1f; 需要在界面里打开下面的菜单: 这样就找到默认设置的地方&#xff0c;把下面的移动勾选起来&#xff0c;这样点…

IEEE Robotics and Automation Letters(RAL)论文模板及投稿须知

一、背景 IEEE Robotics and Automation Letters&#xff08;RAL&#xff09;期刊自2015年6月1日创刊以来&#xff0c;得到了机器人领域许多学术大牛的青睐&#xff0c;因其周期短&#xff0c;论文质量高&#xff0c;许多优秀的成果都会选择发表在RAL期刊上。下面介绍一下RAL论…

如何从零基础进入IT行业

目录 前言1 确定适合的方向1.1 前端开发1.2 后端开发1.3 数据分析1.4 软件测试1.5 产品管理1.6 网络与系统管理 2 制定学习计划2.1 学习基础知识2.2 选择合适的学习资源2.3 参加课程或培训2.4 制定学习计划和目标 3 实践项目和参与社区3.1 构建个人项目3.2 参与开源社区3.3 寻找…

回顾2D绘图的数学知识

本篇旨在帮助开发人员回顾在2D图形编程中可能会涉及到的数学知识。 1. 矩形 矩形面积 S 长 ∗ 宽 S 长 * 宽 S长∗宽 矩形周长 C 2 ∗ ( 长 宽 ) C 2 * ( 长 宽) C2∗(长宽) 2. 两点间的距离 在直角坐标系中&#xff0c;设两个点A、B以及坐标分别为 A ( x 1 , y 1…

Redis中的集群(一)

集群 概述 Redis集群是Redis提供的分布式数据库方案&#xff0c;集群通过分片(sharding)来进行数据共享&#xff0c;并提供复制和故障转移功能 节点 一个Redis集群通常由多个节点(node)组成&#xff0c;在刚开始的时候&#xff0c;每个节点都是相互独立的&#xff0c;它们都…

X86汇编速成

平时用的电脑都是X86的&#xff0c;但是现在大家都在搞RISC-V&#xff0c;计组也都开始以RISC-V作为示例&#xff0c;所以专门回头来补一下X86的汇编&#xff0c;方便平时使用。 寄存器register X86_64中一共有16个64位的通用寄存器&#xff0c;分别为&#xff1a; RAX, RBX,…