技术标签: css html5 前端 html HTML5和CSS3悦读 css3
个人主页:学习前端的小z
个人专栏:HTML5和CSS3悦读
本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论!
在 CSS3 出现之前,动画都是通过 JavaScript 动态的改变元素的样式属性来完成了,这种方式虽然能够实现动画,但是在性能上存在一些问题。CSS3 的出现,让动画变得更加容易,性能也更加好。
animation
比较类似于 flash 中的逐帧动画,逐帧动画就像电影的播放一样,表现非常细腻并且有非常大的灵活性。然而transition
只是指定了开始和结束态,整个动画的过程也是由特定的函数控制。学习过 flash 的同学知道,这种逐帧动画是由关键帧组成,很多个关键帧连续的播放就组成了动画,在 CSS3 中是由属性keyframes
来完成逐帧动画的。
通过 @keyframes
设置自定义名称的动画关键帧,在动画关键节点设置数值:
color
、left
、width
等等@keyframes animationName {
from {
properties: value;
}
percentage {
properties: value;
}
to {
properties: value;
}
}
/* or */
@keyframes animationName {
0% {
properties: value;
}
percentage {
properties: value;
}
100% {
properties: value;
}
}
语法:
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
:指定动画是否正在运行或已暂停它是用来设置动画的名称,可以同时赋值多个动画名称,用,
隔开:
animation-name: none | IDENT[, none | IDENT] *;
animation-name: mymove;
默认值:none
, 指定有没有动画
它是用来设置动画的持续时间,单位为s
,默认值为0
:
animation-duration: <time>[, <time>] *;
animation-duration: 2s;
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
类似:
它是来设置动画的开始时间,单位是s
或者ms
,默认值为 0:
animation-delay: <time>[, <time>] *;
animation-delay: 2s;
它是来设置动画播放的方向,默认值为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…)正向播放。 |
它是来设置动画循环的次数,默认为1
,infinite
为无限次数的循环:
animation-iteration-count: 3;
animation-iteration-count: infinite;
它主要是来控制动画的播放状态:running
代表播放,而paused
代表停止播放,running
为默认值:
animation-play-state: paused|running;
取值:
值 | 描述 |
---|---|
paused | 指定暂停动画 |
running | 指定正在运行的动画 |
这个属性一般是单独使用。
作用:
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 的规则。也就是说,动画会在两个方向上扩展动画属性。 |
个人主页:学习前端的小z
个人专栏:HTML5和CSS3悦读
本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论!
规范是更好编写代码,规范不是强制要求,而是一种建议,初学的时候应该尽可能采用这些建议。如果特别熟练了,那么就根据自己的习惯来编写即可。
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 | 内容 | content | 尾 | footer | 导航 | 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 |
容器 | container | wrap |
【强制】 选择器 与 { 之间必须包含空格。
示例: .selector { }
【强制】 属性名 与之后的 : 之间不允许包含空格, : 与 属性值 之间必须包含空格。
示例:color: red;
【建议】 选择器的嵌套层级应不大于 3 级,位置靠后的限定条件应尽可能精确。
/* 规范 */
#username input {
}
.comment .avatar {
}
/* 不规范 */
.page .header .login #username input {
}
.comment div * {
}
【强制】 属性定义必须另起一行。
/* 规范 */
.selector {
margin: 0;
padding: 0;
}
/* 不规范 */
.selector {
margin: 0; padding: 0; }
【强制】 属性定义后必须以分号结尾。
/* 规范 */
.selector {
margin: 0;
}
/* 不规范 */
.selector {
margin: 0
}
css虽然不区分大小写 按照惯例和规定 : 所有css文件中的代码都小写,
/* 规范 */
#username input {
text-align: center;
}
/* 不规范 */
#username input {
TEXT-ALIGN: center;
}
如果使用 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;
}
良好的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 等新增属性
原理:
/*正确示范*/
.selector {
float: left;
width: 150px;
font-size: 12px;
}
/*错误示范*/
.selector {
font-size: 12px;
width: 150px;
float: left;
}
链接的样式请严格按照:a:link-> a:visited-> a:hover-> a:active(LV包hao)
的顺序添加
如果对目标样式的子属性需求小于3时,进行单例写法,避免复合写法造成的computed浪费
当子属性需求大于等于3时,进行复合式写法,避免单例写法过于冗余和字节浪费
/*正确示范*/
div {
background-color: red;
margin: 20px;
}
/*错误示范*/
.selector {
background: red;
margin-top: 20px;
margin-bottom: 20px;
margin-left: 20px;
margin-right: 20px;
}
文档流 > 盒子模型距离调整(margin+padding) > 浮动 > 定位
定位元素会脱标并且独立新开文档流层级,高度依赖定位会导致浏览器压力大,并且在后期维护中因为定位元素并不能跟随文档流进行流动,所以维护成本高。
实际开发中 能用文档流+盒子模型处理的布局 轻易不使用浮动 能用浮动处理的布局 不要使用定位 。 只有在最关键的时刻才使用定位进行布局调整。
合理规划z-index的取值范围 避免和他人组件层级冲突,需要组内协商
公共头部导航 | 1999 - 2100 |
---|---|
banner与二维码等弹出层 | 999 - 1900 |
页面公共底部 | 1999 - 2100 |
页面公共组件 | -1 - 999 |
文章浏览阅读1.1k次,点赞2次,收藏3次。一般情况下,我们使用的是官方推荐的操作系统 —— Raspbian OS。这是一款免费的基于Debian Linux的操作系统,可以安装到所有版本的树莓派上。这就意味着我们需要了解一些常用的linux命令,这样才能得心应手。_树莓派linux执行命令
文章浏览阅读702次。Matlab系列之符号运算(下)续符号矩阵符号矩阵的生成符号矩阵的运算符号微积分极限微分积分符号积分变换Fourier变换及其逆变换Laplace变换及其逆变换z变换及其逆变换符号方程求解代数方程求解微分方程求解无穷级数的求和运算更多精彩,等你发现~续上一篇主要对符号对象进行了一些生成和使用的基本操作,然后本篇将介绍符号矩阵、微积分、积分变换以及符号方程的求解,具体内容就往下慢慢看了。符号矩阵符号矩阵的生成符号矩阵的生成和数值矩阵的相关操作类似,创建方法有以下的几种:1、直接创建符号矩阵2、用_syms eqn可以是矩阵吗
文章浏览阅读352次。一 日志1 什么是日志通过日志查看程序的运行过程,运行信息,异常信息等。2 配置日志级别日志记录器(Logger)的行为是分等级的。一般分为:FATAL(致命)、ERROR(错误)、WARN(警告)、INFO(信息)、DEBUG(调试)默认情况下,spring boot从控制台打印出来的日志级别只有INFO及以上级别,可以配置日志级别# 设置日志级别为ERRORlogging: level: root: ERROR这种方式能将ERROR级别以及以上级别的日志打_spring boot
文章浏览阅读4.3k次。问题:在为windows7 sp1安装framework 4.6.2的时候,有两次证书方面的报错// 错误1:无法建立到信任根颁发机构的证书链// 错误2:已处理证书链,但是在不受信任的根证书中终止查找资料:经过查找,发现在4.6的前期版本,就已经有过次问题的解决方案,比如类似的文章:.NET Framework 4.6.1/4.6 的安全性更新 31360..._netframework4.6.2安装未成功
文章浏览阅读440次。为何光用姿态角表示姿态行不通?_欧拉角不同旋转顺序的区别
文章浏览阅读616次。ssdnerf_ssdnerf
文章浏览阅读113次。文章目录HashSetTreeSetHashSet源码:添加元素的过程:先调用该元素所属类的hashCode()方法计算哈希值,再处理得到底层数组的索引位置。如果得到的索引位置上已经有元素,二者的哈希值不一定是一样。这时,比较哈希值,如果相同,再用equals()方法比较,如果返回为true,添加失败。如果哈希值相同而且用equals()方法比较返回为false,用链表的方式添加到这个元素的后面,即原来的元素指向新添加的元素。*哈希值计算方法:哈希值相当于是一个随机数。乘数一般选31,_java treeset排序比较的是hash值吗
文章浏览阅读117次。在oracle中,常见的数据库对象有:表,视图,索引,序列,同义词存储过程,存储函数,触发器,包,包体,数据库链路(datalink),快照表是数据库的基本存储单元,以行列组成,命名规则:1,必须以字母开头2,长度在1~30之间3,oracle默认存储都存为大写创建表必须具备:权限 和 表空间常见的数据类型如下://创建表语法:crea..._oracle给3个表建立关系及约束同义词
文章浏览阅读1.3w次,点赞8次,收藏31次。Virtual texture 技术用于解决3D场景中大量贴图而内存有限的情况,它的思想可以参考虚拟内存。 虚拟内存技术中,物理内存是有限的,但是虚拟内存可以远远大于物理内存,虚拟内存被抽象成一个个page即分页文件,page可以真实的载入到物理内存中,也可以存在与磁盘文件上,寻址时采用的内存地址采用一个表来映射到具体的的内存位置,如果映射到物理内存里,即hit,如果在磁盘的page上,将其载入物_sparse virtual texture
文章浏览阅读205次。温故而知新。环境介绍windows 10jdk1.8tomcat 8.0.26dwr 3.0.2commons-logging-1.2.jareclipst 4.6.1在 ECLIPSE 中新建一个 Dynamic Web Project ,把以下文件装进去。1. 依赖包,路径 WEB-INF/lib dwr.jar commons
文章浏览阅读296次。#include #include #include #include using namespace std;const int maxn = 1e6 + 5;const int mod = 1e9;int a[32], dp[maxn];int main() { a[0] = 1; for (int i = 1; i <= 20; i++) a[i] = a[_poj2229完全背包
文章浏览阅读5.1w次,点赞2次,收藏13次。内容来自 DataSciComp,人工智能/数据科学比赛整理平台。Github:iphysresearch/DataSciComp本项目由 ApacheCN 强力支持。微博 | 知乎 | CSDN | 简书 | OSChina | 博客园2019世界机器人大赛—BCI脑控机器人大赛 暨 第三届中国脑机接口比赛http://www.worldrobotconference.com/ht..._l2rpn ijcnn 2019