样式书写也是有顺序的

编程入门 行业动态 更新时间:2024-10-09 02:24:14

样式书写也<a href=https://www.elefans.com/category/jswz/34/1754630.html style=是有顺序的"/>

样式书写也是有顺序的

样式还有书写顺序?

样式还有书写顺序?样式这么简单的东西,不是随便写写就行的么。很多初学者,甚至有一定工作经验的人都会发出这种疑问。而样式的书写顺序到底对页面有没有影响呢?答案是肯定的。如何写出好的css样式也是一个优秀的开发者必须要知道的!而且应该养成习惯,融入到开发中!好的习惯不是一点养成的。

为什么要注意书写顺序?

减少浏览器reflow(回流),提升浏览器渲染dom的性能

①:解析html构建dom树,解析css构建css树:将html解析成树形的数据结构,将css解析成树形的数据结构

②:构建render树:DOM树和CSS树合并之后形成的render树。

③:布局render树:有了render树,浏览器已经知道那些网页中有哪些节点,各个节点的css定义和以及它们的从属关系,从而计算出每个节点在屏幕中的位置。

④:绘制render树:按照计算出来的规则,通过显卡把内容画在屏幕上。

css样式解析到显示至浏览器屏幕上就发生在②③④步骤,可见浏览器并不是一获取到css样式就立马开始解析而是根据css样式的书写顺序将之按照dom树的结构分布render样式,完成第步,然后开始遍历每个树结点的css样式进行解析,此时的css样式的遍历顺序完全是按照之前的书写顺序。

样式的书写顺序是如何影响网页的?

比如如下代码:

span{width:200px;height:200px;background:red;display:block;
}

当浏览器解析到display的时候,突然发现元素是块级元素,而之前是按照行内元素渲染的!这个时候不得不回头重新渲染,在按照块级元素解析span标签。正确的做法是display写在样式最前面,一开始就以块级元素渲染span标签。

在看一个例子:

.box{width:200px;height:200px;background:blue;position:absolute;
}

这个例子 解析到position的时候,突然发现该元素是绝对定位元素需要脱离文档流,而之前却是按照普通元素进行解析的,所以不得不重新渲染,而绝对定位是根据已经定位的父元素定位的,如果父元素的大小不一样,就会出现.box大小会重新改变的结果,使页面闪动。定位又是脱离文档流的,浮起来之后可能会影响其他元素排列布局。
一遍能过的非要渲染两遍 是很浪费性能的,大量的重绘页面会导致页面一闪一闪的,影响用户体验~

比如这个也是一个典型例子

.box{width:200px;height:200px;background:blue;display:none;
}

这个例子已经把元素渲染了一遍,结果到最后发现不需要然后又需要去删除前面那些样式.

1)定位属性:

   .list{displaypositionfloat  left  top  right  bottom   overflow  clear   z-indexcontentlist-stylevisibility} 

(2)自身属性:

 .list{widthheightborderpadding    margin   background} 

(3)文字样式:

.list{font-family   font-size   font-style   font-weight   font-varient   color   } 

(4)文本属性:

 .list{text-align   vertical-align   text-wrap   text-transform   text-indent    text-decoration   letter-spacing    word-spacing    white-space   text-overflow}   

(5)css3中新增属性:

 .list{  box-shadowcursor border-radius  background:linear-gradienttransform……}
.cl {  display: ;  visibility: ;  float: ;  clear: ;  position: ;  top: ;  right: ;  bottom: ;  left: ;  z-index: ;  width: ;  min-width: ;  max-width: ;  height: ;  min-height: ;  max-height: ;  overflow: ;  margin: ;  margin-top: ;  margin-right: ;  margin-bottom: ;  margin-left: ;  padding: ;  padding-top: ;  padding-right: ;  padding-bottom: ;  padding-left: ;  border-width: ;  border-top-width: ;  border-right-width: ;  border-bottom-width: ;  border-left-width: ;  border-style: ;  border-top-style: ;  border-right-style: ;  border-bottom-style: ;  border-left-style: ;  border-color: ;  border-top-color: ;  border-right-color: ;  border-bottom-color: ;  border-left-color: ;  outline: ;  list-style: ;  table-layout: ;  caption-side: ;  border-collapse: ;  border-spacing: ;  empty-cells: ;  font: ;  font-family: ;  font-size: ;  line-height: ;  font-weight: ;  text-align: ;  text-indent: ;  text-transform: ;  text-decoration: ;  letter-spacing: ;  word-spacing: ;  white-space: ;  vertical-align: ;  color: ;  background: ;  background-color: ;  background-image: ;  background-repeat: ;  background-position: ;  opacity: ;  cursor: ;  content: ;  quotes: ;  
}

css代码的行为规范

不要以完全没有语义的标签作为选择器,这会造成大面积污染

除非你可以断定现在或将来你的这个选择器不会污染其他同类

/* 不推荐 */
.m-xxx div{ ... }
简写css颜色属性值
/* 不推荐 */
.box{ color:#000000; background-color:#ddeeff;}
/* 推荐 */
.box{ color:#000; background-color:#def;}
删除css属性值为0的单位

0就是0,任何单位都不需要,只要前面的数值为0,后面的单位都可以去掉 .

/* 不推荐 */
.box{ margin:0px; padding:0px;}
/* 推荐 */
.box{ margin:0; padding:0;}
删除无用CSS样式

第一,删除无用的样式后可以减少整个网页文档的体积,提升网页的加载速度;第二,对于浏览器而言,所有的样式规则的都会被浏览器检索并且解析,即使是当前页面没有匹配的样式规则 , 浏览器也会进行检索和解析 , 所以如果去除了没有匹配的样式规则,就能够减少浏览器的索引项 ,加快浏览器的检索速度;

/* 不推荐 */
.box{ font-size:12px;}
.nav{}
.nav-item{ height:20px;}
/* 推荐 */
.box{ font-size:12px;}
.nav-item{ height:20px;}
为单个css选择器或新申明开启新行
/* 不推荐 */
.home-count .hd,.content-title,.select-game-title .title{}.nav{}
/* 推荐 */
.home-count .hd,
.content-title,
.select-game-title .title{}
.nav{}

css代码的命名规范

1.必须以字母开头命名选择器,这样可保证在所有浏览器下都能兼容;

2.不允许单个字母的类选择器出现;

3.不允许命名带有广告等英文的单词,例如ad,adv,adver,advertising,已防止该模块被浏览器当成垃圾广告过滤掉。任何文件的命名均如此。

4.下划线 ’ _ ’ 禁止出现在class命名中,全小写,统一使用’-‘连字符.

5.禁止驼峰命名 className

6.见名知意

命名应简约而不失语义

1.避免过度简写 , .ico足够表示这是一个图标 , 而.i不代表任何意思

2.使用有意义的名称,使用结构化或者作用目标相关的,而不是抽象的名称

html命名示范

.html

更多推荐

样式书写也是有顺序的

本文发布于:2024-02-25 12:47:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1699019.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:是有   样式   顺序

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!