4 CSS的 变换、过渡与动画

CSS3引入了变换、过渡和动画特性,使得网页可以呈现出丰富的视觉效果和交互体验。通过这些新特性,开发者可以创建复杂的动画效果,而不需要使用JavaScript。

4.1 变换(Transforms)

变换允许开发者对元素进行旋转、缩放、倾斜和平移操作。这些变换可以单独使用,也可以组合使用。

4.1.1 旋转(Rotate)

rotate 变换用于旋转元素。可以指定旋转的角度,正值表示顺时针旋转,负值表示逆时针旋转。

/* 旋转元素45度 */
.element {transform: rotate(45deg);
}

4.1.2 缩放(Scale)

scale 变换用于缩放元素。可以指定水平和垂直方向的缩放比例。

/* 缩放元素为原始大小的两倍 */
.element {transform: scale(2);
}/* 水平缩放两倍,垂直缩放一半 */
.element {transform: scale(2, 0.5);
}

4.1.3 平移(Translate)

translate 变换用于平移元素。可以指定水平和垂直方向的位移。

/* 水平平移50px,垂直平移100px */
.element {transform: translate(50px, 100px);
}

4.1.4 倾斜(Skew)

skew 变换用于倾斜元素。可以指定水平和垂直方向的倾斜角度。

/* 水平倾斜30度 */
.element {transform: skewX(30deg);
}/* 垂直倾斜30度 */
.element {transform: skewY(30deg);
}/* 同时进行水平和垂直倾斜 */
.element {transform: skew(30deg, 20deg);
}

4.1.5 组合变换

可以将多种变换组合在一起使用。

/* 平移元素50px并旋转45度 */
.element {transform: translate(50px) rotate(45deg);
}

4.2 过渡(Transitions)

过渡允许元素属性的变化在一段时间内平滑进行,提供了流畅的视觉效果。

4.2.1 定义过渡

transition 属性用于定义元素属性变化时的过渡效果。

/* 定义所有属性的过渡效果,持续时间为0.3秒,使用ease缓动效果 */
.element {transition: all 0.3s ease;
}

4.2.2 指定过渡属性

可以指定特定属性的过渡效果。

/* 定义背景颜色和宽度的过渡效果 */
.element {transition: background-color 0.3s ease, width 0.3s ease;
}

4.2.3 过渡效果示例

通过过渡效果改变背景颜色。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>过渡效果示例</title>
<style>
.box {width: 100px;height: 100px;background-color: red;transition: background-color 0.5s ease;
}.box:hover {background-color: blue;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>

4.3 动画(Animations)

CSS3动画允许开发者通过定义关键帧动画来创建复杂的动画效果。

4.3.1 @keyframes规则

@keyframes 规则用于定义动画。关键帧指定了动画过程中不同时间点的样式。

@keyframes example {0% {background-color: red;left: 0px;}100% {background-color: yellow;left: 100px;}
}

4.3.2 应用动画

animation 属性用于将动画应用到元素上。

/* 应用动画,持续时间为5秒,循环播放 */
.element {animation: example 5s infinite;
}

4.3.3 动画属性

  • animation-name: 动画名称,与@keyframes定义的名称一致。
  • animation-duration: 动画持续时间。
  • animation-timing-function: 动画缓动效果,如easelinear等。
  • animation-delay: 动画开始前的延迟时间。
  • animation-iteration-count: 动画循环次数,可以是数值或infinite
  • animation-direction: 动画播放方向,可以是normalreversealternate等。

4.3.4 动画示例

创建一个移动和改变背景颜色的动画。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>动画示例</title>
<style>
@keyframes moveAndChange {0% {background-color: red;transform: translateX(0);}50% {background-color: yellow;transform: translateX(100px);}100% {background-color: green;transform: translateX(200px);}
}.box {width: 100px;height: 100px;background-color: red;animation: moveAndChange 4s infinite alternate;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>

4.3.5 动画性能优化

为了确保动画流畅运行,可以采取以下措施优化动画性能:

  1. 使用硬件加速:通过使用transformopacity属性,可以利用GPU加速渲染。
  2. 简化动画:避免过多复杂的动画效果,减少动画帧数。
  3. 控制动画数量:避免同时运行过多动画,确保动画的响应速度。
  4. 使用适当的缓动函数:选择适当的缓动函数,使动画更加自然流畅。

通过本章的学习,读者应该对CSS3中的变换、过渡与动画有一个深入的了解,并能够在实际开发中灵活应用这些特性。接下来,我们将深入探讨CSS3中的弹性布局和网格布局。

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

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

相关文章

Python考试复习--day2

1.出租车计费 mile,waitmap(int,input().split(,)) if mile<3:money13wait*1 elif mile>3 and mile<15:money13(mile-3)*2.3wait*1 else:money1312*2.3(mile-15)*2.3*(10.5)wait*1 print({:.0f}.format(money)) 【知识点1】&#xff1a; map() 函数 【知识点1】&…

代码随想录算法训练营第五十一天|300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组

300.最长递增子序列 dp数组的含义为dp[i]表示字符串以第i位置为末尾的最长递增子序列的长度。 for (int i 1; i < nums.size(); i) {for (int j 0; j < i; j) {if (nums[i] > nums[j]) dp[i] max(dp[i], dp[j] 1);}if (dp[i] > result) result dp[i]; // 取…

设计模式 20 中介者模式 Mediator Pattern

设计模式 20 中介者模式 Mediator Pattern 1.定义 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为型设计模式&#xff0c;它通过封装对象之间的交互&#xff0c;促进对象之间的解耦合。中介者模式的核心思想是引入一个中介者对象&#xff0c;将系统中对象之间…

Vue中,点击提交按钮,路由多了个问号

问题 当点击提交按钮是路由多了问号&#xff1a; http://localhost:8100/#/ 变为 http://localhost:8100/?#/原因 路由中出现问号通常是由于某些路径或参数处理不当造成的。在该情况下&#xff0c;是因为表单的默认行为导致的。提交表单时&#xff0c;如果没有阻止表单的默…

React Router v6:路由管理的最新进展

React Router v6 是 React 应用程序路由管理的一个重大更新&#xff0c;它引入了许多改进和简化&#xff0c;包括对嵌套路由的更友好处理&#xff0c;以及对钩子函数的使用。 2500G计算机入门到高级架构师开发资料超级大礼包免费送&#xff01; 1. Routes 重构 在 v6 中&…

Kubernetes数据存储

1. 数据存储 容器的生命周期可能很短&#xff0c;会被频繁地创建和销毁。那么容器在销毁时&#xff0c;保存在容器中的数据也会被清除。这种结果对用户来说&#xff0c;在某些情况下是不乐意看到的。为了持久化保存容器的数据&#xff0c;kubernetes引入了Volume的概念。 Volu…

HTML-JavaWeb

目录 1.标题排版 2.标题样式 ​编辑 ​编辑 小结 3.超链接 4.正文排版 ​编辑​编辑​编辑5.正文布局 6.表格标签 7.表单标签 8.表单项标签 1.标题排版 ● 图片标签 :< img> src:指定图像的ur1(绝对路径/相对路径) width:图像的宽度(像素/相对于父元素的百…

【AD21】文件的整理

当所有文件输出完成后&#xff0c;需要对不同的文件去做一个整理&#xff0c;方便后续工作的交接。 在项目工程文件夹下新建名称为BOM、SMT、PRJ、Gerber和DOC的文件夹。 BOM文件夹存放BOM表发给采购人员。SMT文件夹存放装配图文件和坐标文件发给贴片厂。PRJ文件夹存放工程文件…

C++基础:多态

多态相关 多态继承重写父类的虚函数多态的体现,父类的引用指向子类对象的空间虚函数可以实现,也可以不实现,不实现必须要有初始值存在未定义的虚函数的类为抽象类.抽象类不能实例化对象;(animal父类不能实例化对象)如果父类中的函数非虚函数,则会调用父类中的函数//多态的体现…

汇凯金业:纸黄金和实物黄金的价格有什么区别

纸黄金和实物黄金的价格主要受到全球黄金市场行情的影响&#xff0c;二者的基础价格并无太大差异&#xff0c;但在具体交易时&#xff0c;可能会存在一些价格上的区别&#xff0c;这些差异主要来自以下几个方面&#xff1a; 交易费用与管理费&#xff1a;纸黄金交易通常需要支…

python xls格式转为xlsx格式

python 两个表格字段列名称值&#xff0c;对比字段差异-CSDN博客 import os import win32com.clientdef xls_to_xlsx(file_path, excel):"""将指定的xls文件转化为xlsx格式file_path: 文件路径excel: 代表Excel应用程序"""# 打开原始文档workbo…

【Java】IdentityHashMap 的使用场景

文章目录 前言1. Druid 应用场景2. IdentityHashMap 特性3. IdentityHashMap 同步化4. IdentityHashMap 处理key为空值后记 前言 最近有兴趣看一下 Druid 连接池怎么做连接管理的&#xff0c;看到一个类 IdentityHashMap &#xff0c;这里记录一下使用场景。 1. Druid 应用场…

代码随想录算法训练营第36期DAY41

DAY41 动态规划理论基础 还差闫氏分析法没学完。见B站收藏夹。 前两题学习初始化方式就好vector<int> dp(N1); 509斐波那契数 简单。 class Solution {public: int fib(int N) { if (N < 1) return N; int dp[2]; dp[0] 0; dp[…

plt画图中文乱码

1、使用font_manager的FontProperties解决 通过FontProperties来设置字符及大小&#xff0c;来解决中文显示的问题&#xff0c;代码如下&#xff1a; import matplotlib import matplotlib.pyplot as pltpath "..\simsun.ttc"#改成你自己的文件路径 font FontProp…

【物联网实战项目】STM32C8T6+esp8266/mqtt+dht11+onenet+uniapp

一、实物图 前端uniapp效果图&#xff08;实现与onenet同步更新数据&#xff09; 首先要确定接线图和接线顺序&#xff1a; 1、stm32c8t6开发板连接stlinkv2下载线 ST-LINK V2STM323.3V3.3VSWDIOSWIOSWCLKSWCLKGNDGND 2、ch340串口连接底座&#xff08;注意RXD和TXD的连接方式…

NSS题目练习4

[LitCTF 2023]1zjs 打开后是一个游戏&#xff0c;用dirsearch扫描&#xff0c;什么都没发现 查看源代码搜索flag&#xff0c;发现没有什么用 搜索php&#xff0c;访问 出现一堆符号&#xff0c;看样子像是jother编码 解码得到flag&#xff0c;要删掉[] [LitCTF 2023]Http pro …

37、Flink 的窗口函数(Window Functions)详解

窗口函数&#xff08;Window Functions&#xff09; a&#xff09;概述 定义了 window assigner 之后&#xff0c;需要指定当窗口触发之后&#xff0c;如何计算每个窗口中的数据&#xff0c; 即 window function。 窗口函数有三种&#xff1a;ReduceFunction、AggregateFunc…

嵌入式学习记录5.27(c++基础1)

目录 一.C和C的区别 二.输入输出流类 2.1输出cout 2.2输入cin 三.命名空间 2.1使用命名空间中的标识符 2.2命名空间中声明函数 2.3命名冲突问题 2.4匿名空间 2.5命名空间添加&#xff0c;嵌套&#xff0c;重命名 四.字符串的使用 4.1string类 4.2C风格和C风格字符串…

LeetCode27.移除元素

题目链接&#xff1a; 27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; 思路分析&#xff1a;同样属于经典的双指针移动问题&#xff0c;要掌握固定的思路即可。 算法分析&#xff1a;这个题目可以这样处理&#xff0c;我们把所有非val 的元素都向前移动&#xff0c;把…

Java面试八股之线程池是怎么实现的

线程池是怎么实现的 线程池是一种基于池化技术的线程管理方式&#xff0c;通过预先创建一定数量的线程并保持在池中待命&#xff0c;从而在有任务来临时能够快速分配线程处理任务&#xff0c;而无需频繁创建和销毁线程&#xff0c;以此达到提升系统性能、减少资源消耗的目的。…