CSS3 属性: transition过渡 与 transform动画
CSS3 提供了很多强大的功能,使开发人员可以创建更加吸引人的视觉效果,而不需要依赖于 JavaScript 或 Flash。其中,transition 和 transform 是两个常用的属性,它们分别用于创建平滑的过渡效果和元素的变形效果。下面我们将详细介绍这两个属性的使用方法并给出代码示例。
transition
transition 属性用于在一定的时间内平滑地改变一个元素从一个样式到另一个样式。你可以指定过渡的持续时间、延迟时间和过渡效果的速度曲线。
属性值:
transition-property: 指定应用过渡的 CSS 属性名称,如width,height,background-color等。transition-duration: 指定过渡的持续时间,单位通常是秒(s)或毫秒(ms)。transition-timing-function: 定义过渡效果的速度曲线,如linear,ease,ease-in,ease-out,ease-in-out或cubic-bezier(n,n,n,n)。transition-delay: 定义过渡开始前的延迟时间。
示例代码:
/* 过渡效果应用于宽度和背景颜色 */
div {width: 100px;background-color: red;transition-property: width, background-color;transition-duration: 2s;transition-timing-function: ease-in-out;transition-delay: 0.5s;
}/* 鼠标悬停时改变宽度和背景颜色 */
div:hover {width: 200px;background-color: blue;
}
transform
transform 属性允许你对元素进行旋转、缩放、倾斜或移动。这对于创建动态和吸引人的视觉效果非常有用。
属性值:
rotate(): 旋转元素。你可以指定一个角度(deg)来确定旋转的程度。正值表示顺时针旋转,负值表示逆时针旋转。scale(): 缩放元素。你可以指定一个因子来确定缩放的程度。例如,scale(2)将元素放大两倍,scale(0.5)将元素缩小到原来的一半。translate(): 移动元素。你可以指定水平和垂直方向上的距离(px 或 %)来确定移动的程度。skew(): 倾斜元素。你可以指定一个角度(deg)来确定倾斜的程度。正值表示顺时针倾斜,负值表示逆时针倾斜。matrix(): 通过一个 2D 或 3D 转换矩阵来应用多个转换效果。
示例代码:
/* 创建一个可旋转、可缩放、可移动的元素 */
div {width: 100px;height: 100px;background-color: red;/* 旋转45度 */transform: rotate(45deg);/* 放大两倍 */transform: scale(2);/* 向右移动50px,向下移动20px */transform: translate(50px, 20px);
}
结合使用 transition 和 transform
你可以将 transition 和 transform 属性结合使用,以创建更加复杂的动画效果。例如,你可以使用 transition 来平滑地改变一个元素的 transform 值。
示例代码:
/* 元素初始状态 */
div {width: 100px;height: 100px;background-color: red;transform: rotate(0deg);transition: transform 2s ease-in-out;
}/* 鼠标悬停时旋转元素 */
div:hover {transform: rotate(360deg);
}
进阶学习
让我们继续深入这两个主题。
transition
除了上述的基本属性之外,transition还有一些其他的特性:
transition-property
除了常见的CSS属性(如width, height, background-color等)之外,transition-property还可以应用于一些更复杂的CSS属性,如border-radius, box-shadow, text-shadow等。此外,你还可以使用all关键字来对元素的所有属性应用过渡效果。
多个过渡效果
你可以在一个声明中指定多个过渡效果,只需用逗号将它们分开。例如:
transition: width 2s, height 3s, background-color 4s;
这将分别应用宽度、高度和背景颜色的过渡效果。
transform
同样,transform也有一些我可能没有提及的属性和特性:
transform-origin
transform-origin属性允许你改变元素变形的原点。例如,旋转一个元素时,你可以改变旋转的中心点。默认情况下,这个点是元素的中心点,但你可以将其移动到元素的任何其他位置。例如:
transform-origin: top left; /* 将变形原点移动到元素的左上角 */
3D 转换
除了2D转换之外,CSS3还支持3D转换,这允许你在Z轴上移动和旋转元素。这可以创建一些非常吸引人的3D视觉效果。例如:
transform: rotateX(45deg); /* 在X轴上旋转元素45度 */
transform: rotateY(45deg); /* 在Y轴上旋转元素45度 */
transform: translateZ(20px); /* 在Z轴上移动元素20px */
perspective 和 perspective-origin
当你使用3D转换时,你可能还希望改变观察者的视角。perspective属性允许你设置观察者和Z=0平面之间的距离,从而改变3D转换的视觉效果。perspective-origin属性允许你改变观察者的位置。例如:
perspective: 1000px; /* 设置观察者和Z=0平面之间的距离为1000px */
perspective-origin: top right; /* 将观察者移动到元素的右上角 */
transform-style
当你对父元素应用3D转换时,你可能希望子元素也保留其3D位置。默认情况下,子元素的3D位置会被平展到2D空间。transform-style属性允许你改变这种行为。例如:
transform-style: preserve-3d; /* 保留子元素的3D位置 */
相关文章:
CSS3 属性: transition过渡 与 transform动画
CSS3 提供了很多强大的功能,使开发人员可以创建更加吸引人的视觉效果,而不需要依赖于 JavaScript 或 Flash。其中,transition 和 transform 是两个常用的属性,它们分别用于创建平滑的过渡效果和元素的变形效果。下面我们将详细介绍…...
TCP通讯
第二十一章 网络通信 本章节主要讲解的是TCP和UDP两种通信方式它们都有着自己的优点和缺点 这两种通讯方式不通的地方就是TCP是一对一通信 UDP是一对多的通信方式 接下来会一一讲解 TCP通信 TCP通信方式呢 主要的通讯方式是一对一的通讯方式,也有着优点和缺点 …...
(NeRF学习)3D Gaussian Splatting Instant-NGP
学习参考: 3D Gaussian Splatting入门指南【五分钟学会渲染自己的NeRF模型,有手就行!】 三维重建instant-ngp环境部署与colmap、ffmpeg的脚本参数使用 一、3D Gaussian Splatting (一)3D Gaussian Splatting环境配置…...
uni-app 微信小程序之好看的ui登录页面(三)
文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程…...
Android 默认打开应用的权限
有项目需要客户要安装第三方软件,但是要手动点击打开权限,就想不动手就打开。 //安装第三方软件,修改方式 frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java //找到如下源码: //有三种方…...
2023年广东工业大学腾讯杯新生程序设计竞赛
E.不知道叫什么名字 题意:找一段连续的区间,使得区间和为0且区间长度最大,输出区间长度。 思路:考虑前缀和,然后使用map去记录每个前缀和第一次出现的位置,然后对数组进行扫描即可。原理:若 s …...
FFmpeg开发笔记(六)如何访问Github下载FFmpeg源码
学习FFmpeg的时候,经常要到GitHub下载各种开源代码,比如FFmpeg的源码页面位于https://github.com/FFmpeg/FFmpeg。然而国内访问GitHub很不稳定,经常打不开该网站,比如在命令行执行下面的ping命令。 ping github.com 上面的ping结…...
SpringCloud | Dubbo 微服务实战——注册中心详解
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 |Eureka,Nacos,Consul,Zookeeper在Spring Cloud和Dubbo中实战 引言 在项目开发过程中,随着项目不断扩大,也就是业务的不断增多,我们将采用集群…...
PostGIS学习教程十一:投影数据
PostGIS学习教程十一:投影数据 地球不是平的,也没有简单的方法把它放在一张平面纸地图上(或电脑屏幕上),所以人们想出了各种巧妙的解决方案(投影)。 每种投影方案都有优点和缺点,一…...
jQuery ajax读取本地json文件 三级联动下拉框
步骤 1:创建本地JSON文件 {"departments": [{"name": "会计学院","code": "052"},{"name": "金融学院","code": "053"},{"name": "财税学院",&qu…...
Kubernetes(K8s 1.27.x) 快速上手+实践,无废话纯享版(视频笔记)
视频源:1.03-k8s是什么?_哔哩哔哩_bilibili 1 基础知识 1.1 K8s 有用么? K8s有没有用 K8s要不要学? 参考资料: https://www.infoq.com/articles/devops-and-cloud-trends-2022/?itm_sourcearticles_about_InfoQ-trends-report…...
深度学习实战66-基于计算机视觉的自动驾驶技术,利用YOLOP模型实现车辆区域检测框、可行驶区域和车道线分割图
大家好,我是微学AI,今天给大家介绍一下深度学习实战66-基于计算机视觉的自动驾驶技术,利用YOLOP模型实现车辆区域检测框、可行驶区域和车道线分割图。本文我将介绍自动驾驶技术及其应用场景,并重点阐述了基于计算机视觉技术下的自动驾驶。自动驾驶技术是一种利用人工智能和…...
Stable Diffusion 系列教程 - 1 基础准备(针对新手)
使用SD有两种方式: 本地: 显卡要求:硬件环境推荐NVIDIA的具有8G显存的独立显卡,这个显存勉勉强强能摸到门槛。再往下的4G可能面临各种炸显存、炼丹失败、无法生成图片等各种问题。对于8G显存,1.0模型就不行࿰…...
听GPT 讲Rust源代码--src/tools(8)
File: rust/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_match_arms.rs 在Rust源代码中,rust-analyzer是一个Rust编程语言的语言服务器。它提供了代码补全、代码重构和代码导航等功能来帮助开发者提高编码效率。 在rust-analyzer的代码目…...
Linux硬链接和软连接是什么?
在Linux操作系统中,文件管理是一个基本且重要的概念。其中,软链接(Symbolic Link)和硬链接(Hard Link)是文件系统中两种不同类型的链接方式,它们在文件管理和操作中扮演着重要的角色。软链接 软…...
LangChain 23 Agents中的Tools用于增强和扩展智能代理agent的功能
LangChain系列文章 LangChain 实现给动物取名字,LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索I…...
VS2015编译GDAL3.2.0+opencl+C#
参考借鉴https://www.cnblogs.com/litou/p/15004877.html 参考借鉴https://www.cnblogs.com/xiaowangba/p/6313903.html 参考借鉴gdal、proj、geos、sqlite等在VS2015下编译和配置_vs2015编译sqlite3-CSDN博客 参考借鉴Windows下GDAL3.1.2编译 (VS2015)_gdal windows编译-CS…...
3、Linux_系统用户管理
1.Linux 用户管理 1.1概述 Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。root用户是系统默认创建的管理员账号。 1.2添加用户 语法 useradd […...
C语言指针详解上
1 野指针 int main01(){//野指针就是没有初始化的指针,指针的指向是随机的,不可以 操作野指针//int a 0;//指针p保存的地址一定是定义过的(向系统申请过的)int *p;//野指针*p 200;printf("%d\n",*p);system("pause");return 0;}2 空指针 空指针的作用…...
力扣面试150题 | 27.移除元素
力扣面试150题 | 27.移除元素 题目描述解题思路代码实现复杂度分析 题目描述 27.移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必…...
基于相关分析法与M序列的系统脉冲响应抗噪辨识技术
1. 噪声环境下的系统辨识挑战 在工业控制和信号处理领域,系统辨识就像给一个黑箱系统做"体检"。想象一下医生通过观察病人对各种刺激的反应来判断病情,工程师们也是通过分析系统对输入信号的响应来了解系统特性。但现实世界从来不是安静的实验…...
西门子1517F与KTP精致屏:主机厂程序框架探秘
西门子1517F搭配KTP精致屏 主机厂程序框架模板,程序结构清晰,主流程采用顺控器编写,包含各种常用功能块的手自动以及手动调用,HMI画面多采用多路复用,大大缩短编程时间, 组态从站有拧紧枪,以及从…...
智能家庭网络系统新选择:iStoreOS打造高效家庭网络与存储中心
智能家庭网络系统新选择:iStoreOS打造高效家庭网络与存储中心 【免费下载链接】istoreos 提供一个人人会用的的路由、NAS系统 (目前活跃的分支是 istoreos-22.03) 项目地址: https://gitcode.com/gh_mirrors/is/istoreos 家庭网络卡顿…...
如何用Python处理杭州交通数据集?从roadnet.json到flow.json的完整解析指南
杭州交通数据实战:用Python解析roadnet.json与flow.json的进阶技巧 第一次接触杭州交通数据集时,我被roadnet.json里密密麻麻的交叉点坐标和flow.json中流动的车辆轨迹震撼到了——这哪是数据文件,分明是一座数字孪生城市的血管与血液。作为算…...
基于STM32与ADS1258的高精度电流数据采集方案实现
1. 高精度电流采集系统设计思路 电流测量在工业自动化、新能源和车载电子等领域都是基础但关键的环节。传统方案使用普通ADC配合分压电阻,精度往往只能达到1%左右,而采用ADS1258这类24位Σ-Δ ADC,配合STM32主控,可以实现0.01%级的…...
简历匹配已成过去式:AI招聘选型的避坑与实战指南
讲真,最近这一年,我听到最多的一句抱怨就是:“我们花了大几十万上的AI招聘系统,怎么用着用着,就只剩下‘自动筛简历’和‘群发面试通知’的功能了?” 在2026年这个节点,如果一家公司的AI招聘系统…...
OpenClaw移动端适配:手机飞书调用Qwen3-VL:30B的优化技巧
OpenClaw移动端适配:手机飞书调用Qwen3-VL:30B的优化技巧 1. 移动端适配的痛点与挑战 上周我在星图平台部署了Qwen3-VL:30B模型,并通过OpenClaw接入了飞书。当我在办公室用电脑测试时一切正常,但周末带孩子去公园时想用手机处理工作&#x…...
ABAQUS复合材料层合板建模与应力分析实战指南
1. ABAQUS复合材料层合板分析入门指南 第一次接触复合材料分析的朋友可能会觉得有点懵,毕竟这玩意儿跟普通金属材料差别太大了。我刚开始用ABAQUS做复合材料分析时,光是理解"铺层方向"这个概念就花了整整一周时间。不过别担心,今天…...
从拦截到免疫:PKCE如何重塑OAuth授权码流程的安全防线
1. 授权码拦截攻击:OAuth的致命弱点 想象一下这样的场景:你在手机上打开一个看起来很正常的天气应用,点击"使用微信登录"按钮后,系统跳转到微信授权页面。你输入账号密码完成授权,突然发现自己的微信聊天记录…...
别再只盯着代码了!手把手教你读懂Cartographer的PGM和YAML地图文件(附Notepad++实操)
从二进制到坐标系:Cartographer地图文件深度解析与实战调参指南 当你第一次打开Cartographer生成的.pgm和.yaml文件时,是否感觉像在解读某种外星密码?那些数字和参数背后,藏着机器人如何理解世界的秘密。本文将带你像侦探一样拆解…...
