《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://www.mzph.cn/news/677967.shtml

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

相关文章

ctfshow-web21~28-WP

爆破(21-28) web21 题目给了一个zip文件,打开后解压是爆破的字典,我们抓包一下网址看看 发现账号和密码都被base64了,我们发送到intruder模块,给爆破的位置加上$符圈住 去base64解码一下看看格式

【PyQt】09-控件提示信息、Lable标签

文章目录 前言一、控件提示信息1.1 代码1.2 解释 < b >在HTML标签中的作用1.3 添加按键后的代码运行结果 二、QLabel控件介绍2.1 内容2.2 常用的事件2.3 代码结果展示 总结 前言 1、控件提示信息 2、QLabel控件介绍 一、控件提示信息 关键点在于 效果如图所示&#x…

VR和AR傻傻分不清,一句话给你讲明白。

不说废话&#xff0c;直接说结论&#xff0c;虚拟现实&#xff08;Virtual Reality&#xff0c;VR&#xff09;和增强现实&#xff08;Augmented Reality&#xff0c;AR&#xff09;。如果现实是A&#xff0c;虚拟是B&#xff0c;那么VRB&#xff0c;ARAB&#xff0c;就这简单&…

大模型实战营第二期——3. 基于 InternLM 和 LangChain 搭建你的知识库

github地址&#xff1a;InternLM/tutorial-书生浦语大模型实战营文档地址&#xff1a;基于 InternLM 和 LangChain 搭建你的知识库视频地址&#xff1a;基于 InternLM 和 LangChain 搭建你的知识库Intern Studio: https://studio.intern-ai.org.cn/console/instance动手学大模型…

2-8 单链表+双链表+模拟栈+模拟队列

今天给大家用数组来实现链表栈和队列 单链表&#xff1a; 首先要明白是如何用数组实现&#xff0c; 在这里需要用到几个数组&#xff0c;head表示头节点的下标&#xff0c;e[i]表示表示下标为i的值&#xff0c;ne[i]表示当前节点下一个节点的下标。idx表示当前已经用到那个点…

Git的基础操作指令

目录 1 前言 2 指令 2.1 git init 2.2 touch xxx 2.3 git status 2.4 git add xxx 2.5 git commit -m xxxx 2.5 git log及git log --prettyoneline --all --graph --abbrev-commit 2.6 rm xxx 2.7 git reset --hard xxx(含小技巧) 2.8 git reflog 2.9 mv xxx yyy 1…

【BIAI】Lecture 14 - Sleep and Dreaming

Sleep and Dreaming 专业词汇 pons 延髓 parietal cortex 顶叶皮层 limbic system 边缘系统 temporal cortex 颞叶皮层 dorsolateral prefrontal cortex 背外侧前额叶皮层 pineal gland 松果体 Suprachiasmatic Nucleus 视交叉上核 课程大纲 Sleep stages awake无眼动睡眠&am…

【Python如何求出所有3位数的回文数】

回文数就是正向读和逆向读都相同的数&#xff0c;如66&#xff0c;626&#xff0c;72127 1、求出所有3位数的回文数python代码如下&#xff1a; # 输出所有3位数的回文数 for i in range(100, 1000): # 从100循环到999&#xff0c;不包含1000if str(i) str(i)[::-1]: # 如…

动态水印怎么加 怎么去除动态水印 视频剪辑软件 会声会影安激活序列号 会声会影怎么剪辑视频

为了防止白嫖或者增加美观效果&#xff0c;视频制作者可能会采用动态水印的方式&#xff0c;让其他人难以盗取视频使用。动态水印的添加&#xff0c;需要应用到运动路径功能。接下来&#xff0c;本文会教大家动态水印怎么加&#xff0c;怎么去除动态水印的相关内容。感兴趣的小…

【知识整理】接手新技术团队、管理团队

引言 针对目前公司三大技术中心的不断升级&#xff0c;技术管理岗位要求越来越高&#xff0c;且团队人员特别是管理岗位的选择任命更是重中之重&#xff0c;下面针对接手新的技术团队做简要整理&#xff1b; 一、实践操作 1、前期准备 1、熟悉情况&#xff1a; 熟悉人员&am…

XSS-Lab

1.关于20关的payload合集。 <script>alert(1)</script> "><script>alert(1)</script> onclickalert(1) " onclick"alert(1) "><a href"javascript:alert(1)"> "><a HrEf"javascript:alert…

【机器学习笔记】基于实例的学习

基于实例的学习 文章目录 基于实例的学习1 基本概念与最近邻方法2 K-近邻&#xff08;KNN&#xff09;3 距离加权 KNN4 基于实例/记忆的学习器5 局部加权回归5 多种回归方式对比6 懒惰学习与贪婪学习 ​ 动机&#xff1a;人们通过 记忆和行动来推理学习。 1 基本概念与最近邻方…

C#入门及进阶|数组和集合(六):集合概述

1.集合概述 数组是一组具有相同名称和类型的变量集合&#xff0c;但是数组初始化后就不便于再改变其大小&#xff0c;不能实现在程序中动态添加和删除数组元素&#xff0c;使数组的使用具有很多局限性。集合能解决数组存在的这个问题&#xff0c;下面我们来学习介绍集合…

AES加密中的CBC和ECB

目录 1.说明 2.ECB模式&#xff08;base64&#xff09; 3.CBC模式 4.总结 1.说明 AES是常见的对称加密算法&#xff0c;加密和解密使用相同的密钥&#xff0c;流程如下&#xff1a; 主要概念如下&#xff1a; ①明文 ②密钥 用来加密明文的密码&#xff0c;在对称加密算…

算法学习——LeetCode力扣二叉树篇2

算法学习——LeetCode力扣二叉树篇2 107. 二叉树的层序遍历 II 107. 二叉树的层序遍历 II - 力扣&#xff08;LeetCode&#xff09; 描述 给你二叉树的根节点 root &#xff0c;返回其节点值 自底向上的层序遍历 。 &#xff08;即按从叶子节点所在层到根节点所在的层&#…

用C语言列出Linux或Unix上的网络适配器

上代码&#xff1a; 1. #include <sys/socket.h> 2. #include <stdio.h> 3. 4. #include <netdb.h> 5. #include <ifaddrs.h> 6. 7. int main() { 8. struct ifaddrs *addresses; 9. if(getifaddrs(&addresses) -1) { 10. printf("…

贰[2],Xamarin生成APK

1&#xff0c;生成改为Release版本 2&#xff0c;选中****.Android项目 3&#xff0c;点击生成&#xff0c;选择存档 4&#xff0c;点击分发 5&#xff0c;选择临时 6&#xff0c;添加签名标识 7&#xff0c;选择对应的签名标识&#xff0c;点击另存为

Oracle 几种行转列的方式 sum+decode sum+case when pivot

目录 原始数据&#xff1a; 方式一&#xff1a; 方式二&#xff1a; 方式三&#xff1a; unpivot的使用&#xff1a; 原始数据&#xff1a; 方式一&#xff1a; select t_name,sum(decode(t_item, item1, t_num, 0)) item1,sum(decode(t_item, item2, t_num, 0)) item2,s…

appears to be hung in Auto SQL Tuning task

appears to be hung in Auto SQL Tuning task Oracle 自动定时优化任务执行失败分析 错误现象&#xff1a; Sat Feb 10 03:10:57 2024 Process 0x0x00007FFB81BE44A8 appears to be hung in Auto SQL Tuning task Current time 1707505857, process death time 1707505803 …

centos7编译安装redis

一、环境 系统&#xff1a;CentOS Linux release 7.9.2009 (Core) redis版本&#xff1a;redis 6.0.6 二、安装及部署 当前最新稳定版本是redis 6.0.6 国内网址&#xff1a;http://www.redis.cn redis下载列表&#xff1a;http://download.redis.io/releases/ 下载 wge…