《CSS 简易速速上手小册》第5章:CSS 动画与过渡(2024 最新版)

在这里插入图片描述

文章目录

  • 5.1 CSS 过渡基础:网页的微妙舞步
    • 5.1.1 基础知识
    • 5.1.2 重点案例:按钮悬停效果
    • 5.1.3 拓展案例 1:渐变显示导航菜单
    • 5.1.4 拓展案例 2:动态调整元素大小
  • 5.2 关键帧动画:编排你的网页芭蕾
    • 5.2.1 基础知识
    • 5.2.2 重点案例:呼吸效果的背景色变化
    • 5.2.3 拓展案例 1:滚动显示的文字
    • 5.2.4 拓展案例 2:旋转进入的图标
  • 5.3 实用动画案例分析:优雅地迈出每一步
    • 5.3.1 基础知识
    • 5.3.2 重点案例:页面加载动画
    • 5.3.3 拓展案例 1:滚动触发的动画
    • 5.3.4 拓展案例 2:数据仪表板的动态图表

5.1 CSS 过渡基础:网页的微妙舞步

当网页元素轻盈地在状态之间跳跃,那一刻,它们不再是静态的代码块,而是充满生命的舞者。CSS过渡赋予了它们这种能力,让它们在变化中展现出流畅的美感。理解CSS过渡的基础,就是学会编排这场精彩的舞蹈。

5.1.1 基础知识

  • 过渡属性(Transition Property):指定哪个CSS属性将应用过渡效果。可以是具体的属性名,或使用 all 应用于所有可过渡的属性。
  • 过渡时长(Transition Duration):定义过渡效果从开始到结束的时间长度,通常以秒(s)或毫秒(ms)为单位。
  • 过渡曲线(Transition Timing Function):控制过渡的速度曲线,例如 linearease-inease-outease-in-out
  • 过渡延迟(Transition Delay):设置过渡效果开始前的延迟时间。

5.1.2 重点案例:按钮悬停效果

设计一个按钮,当鼠标悬停时,背景颜色和文字颜色平滑过渡,提升用户交互体验。

  • HTML 结构
<button class="transition-button">悬停我</button>
  • CSS 样式
.transition-button {background-color: #007BFF;color: white;padding: 10px 20px;border: none;transition: background-color 0.5s ease-in-out, color 0.5s ease-in-out;
}.transition-button:hover {background-color: #0056b3;color: #ffcc00;
}

通过设置 transition 属性,我们创建了一个平滑的颜色过渡效果,让按钮在鼠标悬停时更加动感和吸引人。

5.1.3 拓展案例 1:渐变显示导航菜单

假设你的网站有一个隐藏的导航菜单,当用户点击菜单按钮时,希望菜单能够以渐变的方式显示出来。

  • HTML 结构
<nav class="hidden-menu">菜单内容</nav>
  • CSS 样式
.hidden-menu {opacity: 0;transition: opacity 0.5s ease-in-out;
}.hidden-menu.visible {opacity: 1;
}

通过切换 .hidden-menu 元素的 .visible 类,我们可以实现菜单的渐变显示和隐藏效果。

5.1.4 拓展案例 2:动态调整元素大小

让一个元素在鼠标悬停时动态地改变大小,增加页面的互动性。

  • HTML 结构
<div class="resize-box">悬停改变大小</div>
  • CSS 样式
.resize-box {width: 100px;height: 100px;background-color: #007BFF;transition: transform 0.5s ease-in-out;
}.resize-box:hover {transform: scale(1.2);
}

通过 transform 属性和过渡效果,我们创建了一个在鼠标悬停时会增大的动态效果,让元素在视觉上更加突出。

CSS过渡是编织网页动态美学的关键线索。通过精心设计的过渡效果,我们不仅能够增强用户的交互体验,还能给网站添加一层流畅而生动的视觉效果。记住,好的过渡应该像微风拂过湖面,轻柔而自然。掌握了这些技巧,就让我们的网站在用户的每一次操作中跳起优雅的舞蹈吧!

在这里插入图片描述


5.2 关键帧动画:编排你的网页芭蕾

在网页设计的舞台上,关键帧动画是那些能够让元素跳跃、旋转、闪烁甚至是变形的编排。通过定义动画的关键帧,我们可以精确控制动画从开始到结束的每一个步骤,创造出复杂而生动的视觉故事。

5.2.1 基础知识

  • 关键帧(Keyframes):使用 @keyframes 规则定义动画的序列,其中指定了动画开始和结束时的样式,以及中间的任何阶段。
  • 动画名称(Animation Name):在 @keyframes 规则中定义的动画名称,用于在元素上引用该动画。
  • 动画时长(Animation Duration):决定动画从开始到结束的时间长度。
  • 动画迭代(Animation Iteration):指定动画应该播放多少次,infinite 表示无限循环。
  • 动画方向(Animation Direction):控制动画播放的方向,如 normalreversealternate 等。
  • 动画延迟(Animation Delay):设置动画开始前的延迟时间。
  • 动画填充模式(Animation Fill Mode):决定动画在执行前后如何将样式应用于目标元素,例如 forwards 保留动画结束时的样式。

5.2.2 重点案例:呼吸效果的背景色变化

假设你想让一个元素的背景色呈现出呼吸般的渐变效果,模仿呼吸的节奏,让页面看起来更加生动。

  • CSS 样式
@keyframes breathe {0%, 100% { background-color: #88CCFF; }50% { background-color: #007BFF; }
}.breathe-box {animation: breathe 5s ease-in-out infinite;
}

这个动画通过改变背景色在两种蓝色之间渐变,创造了一个平缓的呼吸效果。

5.2.3 拓展案例 1:滚动显示的文字

设计一个动画,让文字从左侧滚动进入,停留一会儿,然后继续滚动离开视口,类似于电影的开头字幕。

  • CSS 样式
@keyframes slideInAndOut {0% { transform: translateX(-100%); }10%, 90% { transform: translateX(0); }100% { transform: translateX(100%); }
}.sliding-text {animation: slideInAndOut 10s ease-in-out infinite;
}

这个动画让文字像电影字幕一样滚动显示,增加了页面的动态效果和趣味性。

5.2.4 拓展案例 2:旋转进入的图标

假设你有一个社交媒体图标,希望它在页面加载时以旋转的方式出现,给用户一个有趣的视觉提示。

  • CSS 样式
@keyframes spinIn {from { transform: rotate(0deg) scale(0); }to { transform: rotate(360deg) scale(1); }
}.social-icon {animation: spinIn 1s ease-out forwards;
}

通过这个动画,社交媒体图标在旋转的同时放大,从不可见到完全显示,创造了一个引人注目的入场效果。

关键帧动画提供了一种强大的方式来创造引人入胜的网页体验。它们让我们能够为网站的每一个元素编排独特的舞蹈,让整个页面充满活力和动感。通过细致地规划动画的每一步,我们不仅能够提升用户的参与度,还能以一种富有创造力的方式讲述我们的故事。所以,让我们拿起设计的画笔,为我们的网站编排一场精彩的芭蕾舞剧吧!

在这里插入图片描述


5.3 实用动画案例分析:优雅地迈出每一步

动画不仅仅是网页设计的点缀,它们是交流、引导和吸引用户注意力的强大工具。当用得恰到好处时,动画能够提升用户体验,使网站显得更加生动和互动。让我们通过一些实用的案例,探索如何在网页设计中优雅地应用动画。

5.3.1 基础知识

  • 性能考虑:优化动画性能以确保流畅的用户体验,避免使用过多复杂动画导致的卡顿。
  • 动画的目的:每个动画都应该有其存在的理由,无论是提升可用性、增强可访问性还是提供视觉反馈。
  • 适度原则:动画应该适度,过多或过于复杂的动画可能会分散用户的注意力,甚至导致不适。

5.3.2 重点案例:页面加载动画

假设你想要在网页加载时显示一个动画,以提升用户的等待体验,并平滑过渡到网页内容。

  • HTML 结构
<div class="loading-animation">加载中...</div>
  • CSS 样式
@keyframes fadeOut {to { opacity: 0; }
}.loading-animation {animation: fadeOut 1s ease-out forwards;animation-delay: 2s; /* 假设加载需要一定时间 */opacity: 1;position: fixed;top: 0;left: 0;width: 100%;height: 100%;display: flex;justify-content: center;align-items: center;background: white;z-index: 1000;
}

这个案例展示了一个简单的页面加载动画,它在页面加载完成后渐渐淡出,为用户提供一个平滑的过渡效果。

5.3.3 拓展案例 1:滚动触发的动画

为了增加页面滚动的趣味性,可以为某些元素添加在滚动到视窗时才触发的动画。

  • CSS 样式
@keyframes slideUp {from { transform: translateY(20px); opacity: 0; }to { transform: translateY(0); opacity: 1; }
}.scroll-animation {opacity: 0;animation: slideUp 0.5s ease-out forwards;animation-play-state: paused;
}.scroll-animation.in-view {animation-play-state: running;
}
  • JavaScript
window.addEventListener('scroll', () => {document.querySelectorAll('.scroll-animation').forEach(el => {if (el.getBoundingClientRect().top < window.innerHeight) {el.classList.add('in-view');}});
});

这个案例结合了CSS动画和简单的JavaScript,为滚动到视窗内的元素添加动画,增加页面互动性。

5.3.4 拓展案例 2:数据仪表板的动态图表

在一个数据仪表板中,使用动画展示数据的变化可以帮助用户更好地理解数据。

  • HTML 结构
<div class="chart" style="--value:75;"></div>
  • CSS 样式
.chart {width: 100px;height: 100px;background: conic-gradient(#4caf50 var(--value), #ddd 0);border-radius: 50%;transition: background 1s ease-out;
}

通过改变CSS自定义属性 --value,可以在图表上创建动态变化的视觉效果,使数据展示更加直观和动态。

通过这些案例,我们看到了在网页设计中合理应用动画的重要性和价值。动画不仅能够提升用户体验,还能够在视觉上吸引用户,让信息传递更加有效。记住,优雅的动画应该是流畅和有目的的,像是网页的微妙舞步,引导用户体验每一刻的美好。继续探索和实验,让你的网站通过动画和过渡的魔法生动起来吧!

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

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

相关文章

基于javaEE的ssm仓库管理系统

仓库管理系统的重中之重是进销存分析这一板块&#xff0c;在这一板块中&#xff0c;顾名思义能够查询到近期的进货记录&#xff0c;包括每日的进货单据&#xff0c;单品推移(即某一商品的库存变化)&#xff0c;方便我们核对库存差异。同时也需要查询到每日的销售数据&#xff0…

【Linux】学习-动静态库

动静态库 头文件与库的区别 头文件一般而言&#xff0c;是声明和宏定义。头文件是在预处理阶段使用的 库文件是已经编译好的二进制代码。是一种目标文件&#xff0c;库文件是在链接阶段使用的 对于头文件和库我们可以这样理解&#xff0c;就是头文件提供的是一个函数的声明&…

Vue源码系列讲解——虚拟DOM篇【四】(优化更新子节点)

目录 1. 前言 2. 优化策略介绍 3. 新前与旧前 4. 新后与旧后 5. 新后与旧前 6. 新前与旧后 7. 回到源码 8. 总结 1. 前言 在上一篇文章中&#xff0c;我们介绍了当新的VNode与旧的oldVNode都是元素节点并且都包含子节点时&#xff0c;Vue对子节点是 先外层循环newChil…

Xray 工具笔记

Xray 官方文档 扫描单个url&#xff08;非爬虫&#xff09; 并输出文件&#xff08;不同文件类型&#xff09; .\xray.exe webscan --url 10.0.0.6:8080 --text-output result.txt --json-output result.json --html-output report.html默认启动所以内置插件 &#xff0c;指定…

re:从0开始的CSS学习之路 9. 盒子水平布局

0. 写在前面 过年也不能停止学习&#xff0c;一停下就难以为继&#xff0c;实属不应 1. 盒子的水平宽度 当一个盒子出现在另一个盒子的内容区时&#xff0c;该盒子的水平宽度“必须”等于父元素内容区的宽度 盒子水平宽度&#xff1a; margin-left border-left padding-lef…

【JavaScript 】finally() 方法和Filter() 方法

JavaScript 中的finally() 方法 finally是 JavaScript 构造中使用的方法try-catch。try它在and阻塞之后执行catch&#xff0c;无论 Promise 是已履行还是已拒绝。该函数的主要作用是执行必要的清理任务并向用户传达消息。一个常见的用例可能是通知用户“您的请求已被处理”&am…

《CSS 简易速速上手小册》第7章:CSS 预处理器与框架(2024 最新版)

文章目录 7.1 Sass&#xff1a;更高效的 CSS 编写7.1.1 基础知识7.1.2 重点案例&#xff1a;主题颜色和字体管理7.1.3 拓展案例 1&#xff1a;响应式辅助类7.1.4 拓展案例 2&#xff1a;深色模式支持 7.2 Bootstrap&#xff1a;快速原型设计和开发7.2.1 基础知识7.2.2 重点案例…

【Web】小白友好的Java内存马基础学习笔记

目录 简介 文件马与内存马的比较 文件马原理 内存马原理 内存马使用场景 内存马分类 内存马注入方式 这篇文章主要是概念性的&#xff0c;具体技术细节不做探究&#xff0c;重点在祛魅。 简介 内存马&#xff08;Memory Shellcode&#xff09;是一种恶意攻击技术&…

springBoot,springSecurity返回乱码

框架&#xff1a;SpringBoot3 问题&#xff1a;响应内容乱码 问题代码&#xff1a; // 成功登录响应的内容Overridepublic void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication…

C#使用RabbitMQ-5_主题模式(主题交换机)

简介 主题模式允许发送者根据主题发布消息&#xff0c;而订阅者可以订阅特定的主题。 在主题模式中&#xff0c;生产者发送的消息被发送到一个交换机&#xff08;Exchange&#xff09;&#xff0c;该交换机根据消息的路由键&#xff08;Routing Key&#xff09;和绑定&#x…

Linux之umask的使用

一、umask的作用 umask值用于设置用户在创建新文件和目录时的默认权限。umask值一共有4组数字&#xff0c;其中第1组数字用于定义特殊权限&#xff0c;一般不关心&#xff0c;日常工作中大家用的更多的是后面三组数字。以下图为例&#xff0c;输入“umask”命令之后&#xff0c…

假期刷题打卡--Day29

1、MT1224棋盘 求一个N*N棋盘中的方块总数。 格式 输入格式&#xff1a; 输入整型N 输出格式&#xff1a; 输出整型 样例 1 输入&#xff1a; 2输出&#xff1a; 5备注 考虑到取值范围&#xff0c;可用long整型定义变量 分析过程 这个题目的意思是&#xff0c;在这…

双活工作关于nacos注册中心的数据迁移

最近在做一个双活的项目&#xff0c;在纠结一个注册中心是在双活机房都准备一个&#xff0c;那主机房的数据如果传过去呢&#xff0c;查了一些资料&#xff0c;最终在官网查到了一个NacosSync 的组件&#xff0c;主要用来做数据传输的&#xff0c;并且支持在线替换注册中心的&a…

数据结构之外部排序

外部排序就是对大型文件的排序&#xff0c;待排序的记录存放在外存。在排序的过程中&#xff0c;内存只存储文件的一部分记录&#xff0c;整个排序过程需要进行多次内外存间的数据交换。   常用的外部排序方法是归并排序&#xff0c;一般分为两个阶段&#xff1a;在第一阶段&…

【Linux】信号概念与信号产生

信号概念与信号产生 一、初识信号1. 信号概念2. 前台进程和后台进程3. 认识信号4. 技术应用角度的信号 二、信号的产生1. 键盘组合键2. kill 命令3. 系统调用4. 异常&#xff08;1&#xff09;观察现象&#xff08;2&#xff09;理解本质 5. 软件条件闹钟 一、初识信号 1. 信号…

vue项目搭建测试

5&#xff0c;项目测试 导入elementplus以及样式 import ElementPlus from element-plus import element-plus/dist/index.csscreateApp(App).use(store).use(router).use(ElementPlus).mount(#app)<template><el-row class"mb-4"><el-button>De…

python统计分析——两样本t检验

参考资料&#xff1a;用python动手学统计学 1、导入库 # 导入库 # 用于数值计算的库 import numpy as np import pandas as pd import scipy as sp from scipy import stats # 用于绘图的库 from matplotlib import pyplot as plt import seaborn as sns sns.set() 2、准备数…

【华为 ICT HCIA eNSP 习题汇总】——题目集12

1、企业网络内部常常采用私有 IP 地址进行通信&#xff0c;以下哪个地址属于私有 IP 地址&#xff1f; A、0.1.1.1 B、127.5.4.3 C、128.0.0.5 D、172.24.35.36 考点&#xff1a;网络层 解析&#xff1a;&#xff08;D&#xff09; A类 IP 地址中&#xff0c;10.0.0.0 ~ 10.255…

例36:打开文件读出文件内容

1.建立一个EXE工程&#xff0c;在主窗体上放一个按钮&#xff0c;如图32。 图32 在按钮的单击事件中输入代码&#xff1a; Sub Form1_Command1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)Dim s as StringDim 文件 As CWSTR FF_OpenFileDialog(hWndForm,_"打开…

爬爬今天爬小说————爬虫练习

爬不同的的小说&#xff0c;会有略微的改动。 我今天这个是从一章的提前到全部的提前。 在我们电脑里面了&#xff0c;想怎么看就怎么看。 代码代码&#xff1a; import re import requestsheaders {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x6…