CSS3 动画


个人主页:学习前端的小z
个人专栏:HTML5和CSS3悦读
本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论!


文章目录

  • ✍CSS3 动画
    • 💎1 什么是帧动画
    • 💎2 定义关键帧
    • 💎3 animation
      • 🌹3.1 animation-name
      • 🌹3.2 animation-duration
      • 🌹3.3 animation-timing-function
      • 🌹3.4 animation-delay
      • 🌹3.5 animation-direction
      • 🌹3.6 animation-iteration-count
      • 🌹3.7 animation-play-state
      • 🌹3.8 animation-fill-mode
    • 💎4 动画库
  • ✍HTML、CSS规范
    • 💎1 命名规范
    • 💎2 CSS 书写
      • 🌹2.1 空格规范
      • 🌹2.2 选择器规范
      • 🌹2.3 属性规范
      • 🌹2.4 大小写规定
      • 🌹2.5 CSS3 兼容前缀
      • 🌹2.6 CSS书写顺序
      • 🌹2.7 链接伪类顺序
      • 🌹2.8 CSS复合写法与单例写法
      • 🌹2.9 布局方式选择
      • 🌹2.10 定位z-index取值范围

✍CSS3 动画

💎1 什么是帧动画

在 CSS3 出现之前,动画都是通过 JavaScript 动态的改变元素的样式属性来完成了,这种方式虽然能够实现动画,但是在性能上存在一些问题。CSS3 的出现,让动画变得更加容易,性能也更加好。

animation比较类似于 flash 中的逐帧动画,逐帧动画就像电影的播放一样,表现非常细腻并且有非常大的灵活性。然而transition只是指定了开始和结束态,整个动画的过程也是由特定的函数控制。学习过 flash 的同学知道,这种逐帧动画是由关键帧组成,很多个关键帧连续的播放就组成了动画,在 CSS3 中是由属性keyframes来完成逐帧动画的。

💎2 定义关键帧

通过 @keyframes 设置自定义名称的动画关键帧,在动画关键节点设置数值:

  • AnimationName:动画名称,开发人员自己命名
  • percentage:为百分比值,可以添加多个百分比值
  • properties:样式声明,例如:colorleftwidth等等
@keyframes animationName {
  from {
    properties: value;
  }
  percentage {
    properties: value;
  }
  to {
    properties: value;
  }
}
/* or */
@keyframes animationName {
  0% {
    properties: value;
  }
  percentage {
    properties: value;
  }
  100% {
    properties: value;
  }
}

💎3 animation

语法:

animation: name duration timing-function delay iteration-count direction fill-mode play-state;
  • name:指定要绑定到选择器的关键帧的名称
  • duration:动画指定需要多少秒或毫秒完成
  • timing-function:设置动画将如何完成一个周期
  • delay:设置动画在启动前的延迟间隔
  • iteration-count:定义动画的播放次数
  • direction:指定是否应该轮流反向播放动画
  • fill-mode:规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式
  • play-state:指定动画是否正在运行或已暂停

🌹3.1 animation-name

它是用来设置动画的名称,可以同时赋值多个动画名称,用,隔开:

animation-name: none | IDENT[, none | IDENT] *;
animation-name: mymove;

默认值:none, 指定有没有动画

🌹3.2 animation-duration

它是用来设置动画的持续时间,单位为s,默认值为0

animation-duration: <time>[, <time>] *;
animation-duration: 2s;

🌹3.3 animation-timing-function

animation-timing-function 指定动画将如何完成一个周期:

animation-timing-function: ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(<number>, <number>, <number>, <number>) | step-start | step-end;

ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(<number>, <number>, <number>, <number>)transition-timing-function 类似:

  • ease:动画缓慢开始,接着加速,最后减慢,默认值
  • linear:动画从头到尾的速度是相同的
  • ease-in:以低速开始
  • ease-out:以低速结束
  • ease-in-out:动画以低速开始和结束

🌹3.4 animation-delay

它是来设置动画的开始时间,单位是s或者ms,默认值为 0:

animation-delay: <time>[, <time>] *;
animation-delay: 2s;

🌹3.5 animation-direction

它是来设置动画播放的方向,默认值为normal表示向前播放,alternate代表动画播放在第偶数次向前播放,第奇数次向反方向播放:

animation-direction: normal|reverse|alternate|alternate-reverse;

取值:

描述
normal默认值。动画按正常播放。
reverse动画反向播放。
alternate动画在奇数次(1、3、5…)正向播放,在偶数次(2、4、6…)反向播放。
alternate-reverse动画在奇数次(1、3、5…)反向播放,在偶数次(2、4、6…)正向播放。

🌹3.6 animation-iteration-count

它是来设置动画循环的次数,默认为1infinite为无限次数的循环:

animation-iteration-count: 3;
animation-iteration-count: infinite;

🌹3.7 animation-play-state

它主要是来控制动画的播放状态:running代表播放,而paused代表停止播放,running为默认值:

animation-play-state: paused|running;

取值:

描述
paused指定暂停动画
running指定正在运行的动画

这个属性一般是单独使用。

🌹3.8 animation-fill-mode

作用:

  • forwards:大白话:保留动画的最终效果(to)
  • backwards:大白话:采用第一帧(from)作为盒子的效果。如果设置方向为reverse,那么采用最后一帧(to)作为盒子的效果。
  • both:大白话:既采用第一帧(from)作为盒子的效果,保留动画的最终效果(to)
animation-fill-mode: none|forwards|backwards|both;

取值:

描述
none默认值。动画在动画执行之前和之后不会应用任何样式到目标元素。
forwards在动画结束后(由 animation-iteration-count 决定),动画将应用该属性值。
backwards动画将应用在 animation-delay 定义期间启动动画的第一次迭代的关键帧中定义的属性值。这些都是 from 关键帧中的值(当 animation-direction 为 “normal” 或 “alternate” 时)或 to 关键帧中的值(当 animation-direction 为 “reverse” 或 “alternate-reverse” 时)。
both动画遵循 forwards 和 backwards 的规则。也就是说,动画会在两个方向上扩展动画属性。

💎4 动画库

动画库链接:animate.css
了解:

  • 基础用法,很多时候会结合JS来实现动态效果
  • 阅读源码

个人主页:学习前端的小z
个人专栏:HTML5和CSS3悦读
本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论!


文章目录

  • ✍CSS3 动画
    • 💎1 什么是帧动画
    • 💎2 定义关键帧
    • 💎3 animation
      • 🌹3.1 animation-name
      • 🌹3.2 animation-duration
      • 🌹3.3 animation-timing-function
      • 🌹3.4 animation-delay
      • 🌹3.5 animation-direction
      • 🌹3.6 animation-iteration-count
      • 🌹3.7 animation-play-state
      • 🌹3.8 animation-fill-mode
    • 💎4 动画库
  • ✍HTML、CSS规范
    • 💎1 命名规范
    • 💎2 CSS 书写
      • 🌹2.1 空格规范
      • 🌹2.2 选择器规范
      • 🌹2.3 属性规范
      • 🌹2.4 大小写规定
      • 🌹2.5 CSS3 兼容前缀
      • 🌹2.6 CSS书写顺序
      • 🌹2.7 链接伪类顺序
      • 🌹2.8 CSS复合写法与单例写法
      • 🌹2.9 布局方式选择
      • 🌹2.10 定位z-index取值范围

✍HTML、CSS规范

规范是更好编写代码,规范不是强制要求,而是一种建议,初学的时候应该尽可能采用这些建议。如果特别熟练了,那么就根据自己的习惯来编写即可。

💎1 命名规范

1、命名需要是具备语义性的单词,不能用数字、拼音,或者使用数字开头:

正确示范 : wrap description title  content
错误示范 :  aaaa a1 $we 4tdds

2、命名需要多个单词连接的情况下,标记语言中可以使用 _ - 进行连接 不能直接单词拼接。

注意:书写风格必须统一,不容许出现 _ - 一起使用的情况。更推荐使用 - 这样更清晰。

正确示范 :  header-nav content-left slide-bar
错误示范 :  headernav slideBar ContentLeft

3、命名需要进行适当的缩写,单词连接层级不要超过4层

正确示范 :  head-tit-ico
错误示范 :  header-title-left-logo-icon

4、不容许通过1、2、3等序号进行命名

正确示范: content-product
错误示范: content1、content2

5、避免class与ID重名

6、id用于识别模块或一级结构区域且必须唯一。定义了ID名称,尽量不要改动

常用命名

header内容contentfooter导航nav
子导航subnav栏目column主体main新闻news
版权copyright文章列表list加入joinus合作伙伴partner
标志logo侧栏sidebar横幅banner状态status
菜单menu子菜单submenu滚劢scroll搜索search
标签页tab提示信息msg小技巧tips标题title
指南guild服务service热点hot下载download
注册regsiter登录条loginbar按钮btn投票vote
注释note友情链接friend-link外套wrap面包屑bread-crumb
当前的current购物车shop图标icon文本txt
容器containerwrap

💎2 CSS 书写

🌹2.1 空格规范

【强制】 选择器 与 { 之间必须包含空格。

示例: .selector { }

【强制】 属性名 与之后的 : 之间不允许包含空格, : 与 属性值 之间必须包含空格。

示例:color: red;

🌹2.2 选择器规范

【建议】 选择器的嵌套层级应不大于 3 级,位置靠后的限定条件应尽可能精确。

/* 规范 */
#username input {}
.comment .avatar {}

/* 不规范 */
.page .header .login #username input {}
.comment div * {}

🌹2.3 属性规范

【强制】 属性定义必须另起一行。

/* 规范 */
.selector {
    margin: 0;
    padding: 0;
}

/* 不规范 */
.selector { margin: 0; padding: 0; }

【强制】 属性定义后必须以分号结尾。

/* 规范 */
.selector {
    margin: 0;
}

/* 不规范 */
.selector {
    margin: 0
}

🌹2.4 大小写规定

css虽然不区分大小写 按照惯例和规定 : 所有css文件中的代码都小写,

/* 规范 */
#username input {
	text-align: center;
}


/* 不规范 */
#username input {
	TEXT-ALIGN: center;
}

🌹2.5 CSS3 兼容前缀

如果使用 CSS3 的属性,如果有必要加入浏览器前缀,则按照

-webkit- / -moz- / -ms- / -o-的顺序进行添加,标准属性写在最后,并且属性名称要对齐,例如:

div.animation-demo { 
    -webkit-animation: mymove 5s infinite; 
    -moz-animation: mymove 5s infinite; 
    -o-animation: mymove 5s infinite; 
    animation: mymove 5s infinite;
}

🌹2.6 CSS书写顺序

良好的CSS书写顺序是前端工程师需要遵守并维护的重要规范

1. 位置属性 display position float overflow z-index list-style clear等可以决定元素渲染位置或层级 以及能够影响其他元素渲染位置或层级的属性
2. 自身属性  width height margin padding border background line-height 等可以影响盒子自身展示的属性
3. 文本属性  color font- text- word- 等作用于文本的样式属性
4. 其他与新增属性 cursor zoom transform box-shadow 等新增属性

原理:

  1. 浏览器解读HTML是从上之下单行解析, 如果没有良好的书写顺序, 例如先解析了 width height 那预渲染的时候 就会从默认位置 (当前文档流左上角) 进行渲染
  2. 如果后续解析到了 位置属性 浏览器需要擦除之前 渲染好的模型 重新根据 渲染基准点(左上角)位置 和层级 进行重绘, 这样导致浏览器会重复解析同一个元素 造成不必要的重绘
  3. 良好的书写顺序是 BAT等一线互联网企业都遵守的CSS书写规范 他可以帮助团队成员协作的时候 迅速排查和后期维护
/*正确示范*/
.selector {
    float: left;
    width: 150px;
    font-size: 12px;
}

/*错误示范*/
.selector {
    font-size: 12px;
    width: 150px;
    float: left;
}

🌹2.7 链接伪类顺序

链接的样式请严格按照:a:link-> a:visited-> a:hover-> a:active(LV包hao)的顺序添加

🌹2.8 CSS复合写法与单例写法

如果对目标样式的子属性需求小于3时,进行单例写法,避免复合写法造成的computed浪费

当子属性需求大于等于3时,进行复合式写法,避免单例写法过于冗余和字节浪费

/*正确示范*/
div {
	background-color: red;
    margin: 20px;
}

/*错误示范*/
.selector {
	background: red;
    margin-top: 20px;
    margin-bottom: 20px;
    margin-left: 20px;
    margin-right: 20px;
}

🌹2.9 布局方式选择

文档流 > 盒子模型距离调整(margin+padding) > 浮动 > 定位

定位元素会脱标并且独立新开文档流层级,高度依赖定位会导致浏览器压力大,并且在后期维护中因为定位元素并不能跟随文档流进行流动,所以维护成本高。

实际开发中 能用文档流+盒子模型处理的布局 轻易不使用浮动 能用浮动处理的布局 不要使用定位 。 只有在最关键的时刻才使用定位进行布局调整。

🌹2.10 定位z-index取值范围

合理规划z-index的取值范围 避免和他人组件层级冲突,需要组内协商

公共头部导航1999 - 2100
banner与二维码等弹出层999 - 1900
页面公共底部1999 - 2100
页面公共组件-1 - 999

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

碳实践|手把手教你开展组织碳核算

一、背景介绍 政府间气候变化委员会 IPCC(Intergovernmental Panel on Climate Chang)是世界气象组织(WMO)及联合国环境规划署(UNEP)于1988年联合建立的政府间机构。 IPCC在1997年和2000年分别发布了《1996 年 IPCC 国家温室气体清单指南修订本》和《国家温室气体清单优良作法…

【氮化镓】栅极漏电对阈值电压和亚阈值摆幅影响建模

本文是一篇关于p-GaN门AlGaN/GaN高电子迁移率晶体管&#xff08;HEMTs&#xff09;的研究文章&#xff0c;发表于《应用物理杂志》&#xff08;J. Appl. Phys.&#xff09;2024年4月8日的期刊上。文章的标题为“Analysis and modeling of the influence of gate leakage curren…

什么是SRE?

什么是SRE&#xff1f; SRE&#xff0c;全称为Site Reliability Engineering&#xff0c;即网站可靠性工程&#xff0c;是一种职能角色&#xff0c;它融合了软件工程和系统管理的技能与实践&#xff0c;旨在通过软件和自动化的方式来提高系统的可靠性、稳定性和扩展性。以下是…

Zabbix自定义模板、邮件报警、自动发现与注册、proxy代理、SNMP监控

目录 自定义监控内容 1.明确需要执行的 linux 命令 2.创建 zabbix 的监控项配置文件&#xff0c;用于自定义 key 3.在服务端验证新建的监控项 在 Web 页面创建自定义监控项模板 1.创建模板 2.创建应用集&#xff08;用于管理监控项的&#xff09; 3.创建监控项 4.创建…

JEECG表格选中状态怎么去掉

官网代码&#xff08;在取消选中状态的时候不生效&#xff09; rowSelection() {return {onChange: (selectedRowKeys, selectedRows) > {console.log(selectedRowKeys: ${selectedRowKeys}, selectedRows: , selectedRows);},getCheckboxProps: record > ({props: {disa…

【基础】gcc-动态库和静态库的创建和使用-命令

目录 1 动态库的建立使用2 动态库封装过程2.1 编译动态库2.2 使用动态库2.3 命令参数说明 3 静态库封装过程3.1 静态库的封装3.2 静态库的使用 1 动态库的建立使用 首先建立一个头文件&#xff0c;和三个.cpp文件&#xff0c;目的是要把这些文件链接成动态库&#xff1a; 其中…

C#创建背景色渐变窗体的方法:创建特殊窗体

目录 1.让背景渐变色的理论基础 2.让背景渐变色的方法 3.一个实施例 &#xff08;1&#xff09;Form1.Designer.cs &#xff08;2&#xff09;Form1.cs &#xff08;3&#xff09;渐变的蓝色背景 在窗体设计时&#xff0c;可以通过设置窗体的BackColor属性来改变窗口的背…

Golang | Leetcode Golang题解之第35题搜索插入位置

题目&#xff1a; 题解&#xff1a; func searchInsert(nums []int, target int) int {n : len(nums)left, right : 0, n - 1ans : nfor left < right {mid : (right - left) >> 1 leftif target < nums[mid] {ans midright mid - 1} else {left mid 1}}retu…

【mac】【python】新建项目虚拟环境后,使用命令pip出现错误:zsh: command not found: pip

【mac】【python】新建项目虚拟环境后&#xff0c;使用命令pip出现错误&#xff1a;zsh: command not found: pip 问题描述&#xff1a; 拉取或者创建新的python项目时&#xff0c;为项目添加了新的解释器&#xff0c;创建啦虚拟环境&#xff0c;但是执行pip命令的时候找不到命…

倾斜摄影修模软件模方(ModelFun)4.1.0下载及安装教程

文章目录 一、模方(ModelFun)4.1.0安装二、模方(ModelFun)4.1.0下载一、模方(ModelFun)4.1.0安装 订阅专栏后(获取专栏内所有文章阅读权限及软件安装包),从文末下载软件模方(ModelFun)4.1.0安装包,如下所示,并开始安装。 1.计算机需要进入测试模式 键盘WIN+R,打开运行窗…

重磅福利!参与现金红包抽奖活动,赶快行动吧!

文章目录 粉丝福利 粉丝福利 亲爱的朋友们&#xff0c;令人振奋的消息来啦&#xff01;本月&#xff0c;我们特地为大家准备了一份特别的粉丝福利&#xff01;只要您轻轻一点&#xff0c;关注我们的公众号&#xff0c;就有机会抽取现金红包&#xff0c;让您的生活多一份惊喜与喜…

游戏前摇后摇Q闪E闪QE闪QA等操作

备注&#xff1a;未经博主允许禁止转载 个人笔记&#xff08;整理不易&#xff0c;有帮助&#xff0c;收藏点赞评论&#xff0c;爱你们&#xff01;&#xff01;&#xff01;你的支持是我写作的动力&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_w…

jenkins修改全局安全配置之后登录错误

教训&#xff08;流泪&#xff09; 事情是这样的&#xff0c;第一次我需要用单点登录集成jenkins&#xff0c;jenkins可以通过插件的方式支持cas协议&#xff0c;我当时也不很懂&#xff0c;经过我学网上的一顿乱配置&#xff0c;jenkis上不去了&#xff0c;虽然这是公司本地环…

【Linux学习】初识shell命令以及运行原理

这里写目录标题 &#x1f680;shell命令以及运行原理 &#x1f680;shell命令以及运行原理 Linux严格意义上说的是一个操作系统&#xff08;如下图所示&#xff09;&#xff0c;我们称之为“核心&#xff08;kernel&#xff09;“ 。 Linux系统的shell作为操作系统的外壳&…

开源大模型Llama 3 横空出世,4000亿参数性能直逼GPT-4

开源大模型Llama 3王者归来!最大底牌4000亿参数,性能直逼GPT-4 扎克伯格:「有了 Llama 3,全世界就能拥有最智能的 AI。」 ChatGPT 拉开了大模型竞赛的序幕,Meta 似乎要后来居上了。 扎克伯格在 Facebook 上发帖:Big AI news today. 借助先进的 Llama 3 模型,Meta 的 A…

STL的stack和queue(三):基于适配器模式的反向迭代器

目录 前言 list的反向迭代器 list.h文件 ReverseIterator.h文件 test.cpp文件 前言 迭代器按性质分类&#xff1a; 单向&#xff1a;forward_list双向&#xff1a;list随机&#xff1a;vector / deque 迭代器按功能分类&#xff1a; 正向反向const list的反向迭代器…

【笔试强训】Day2 --- 牛牛的快递 + 最小花费爬楼梯 + 数组中两个字符串的最小距离

文章目录 1. 牛牛的快递2. 最小花费爬楼梯3. 数组中两个字符串的最小距离 1. 牛牛的快递 【链接】&#xff1a;牛牛的快递 解题思路&#xff1a;简单模拟题&#xff0c;主要是处理⼀下输⼊的问题。 #include <iostream> #include <cmath> using namespace std;…

我与C++的爱恋:日期计算器

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;我与C的爱恋 朋友们大家好啊&#xff0c;在我们学习了默认成员函数后&#xff0c;我们通过上述内容&#xff0c;来实现一个简易的日期计算器。 ​ ​ 头文件的声明 #pragma once #incl…

鸿蒙开发语言_ArkTS开发语言体验_TypeScript语言环境搭建_TS声明和数据类型---HarmonyOS4.0+鸿蒙NEXT工作笔记003

可以看到我们新建的这个项目,有个 @State message: String =Hello ArkTS 这个就是定义了一个变量,可以看到 message是变量名,String是变量类型. 然后我们可以看看它的结构可以看到 build() 下面有个Row,然后再下面有个Column方法,然后,里面就是具体的内容了,首先就是显示了一…

高速公路车型识别系统的新篇章:激光雷达解决方案的探索与应用

高速公路车型识别系统&#xff1a;激光雷达解决方案的探索与应用 随着智能交通领域的迅速发展&#xff0c;高速公路车型识别技术成为提高交通管理效率与安全性的关键一环。激光雷达作为一种高精度、高可靠性的传感器技术&#xff0c;在高速公路车型识别中展现出巨大的应用潜力…
最新文章