CSS加载存在先后顺序,不严谨的书写顺序将会导致界面出现偏差。并且正确的书写顺序也可以提高代码的可读性。

正确的排序方式如下:

(1)定位属性:position display float left top right bottom overflow clear z-index flex
(2)自身属性:width height padding border margin background
(3)文字属性:font-famliy font-size font-style font-weight font-varient color
(4)文本属性:text-align vertical-align text-wrap text-transform text-indent text-ecoration letter-spacing white-spacing white-space text-overflow
(5)CSS3中新增属性:content box-shadow border-radius transform……

css顺序按照以上顺序书写即可。

目的:减少浏览器的reflow(回流),提高浏览器加载速度

接下来讲解浏览器的渲染原理

浏览器引擎简介

浏览器——Firefox、Chrome和Safari是基于两种渲染引擎构建的,Firefox使用Geoko——Mozilla自主研发的渲染引擎,Safari和Chrome都使用webkit。

渲染主流程

渲染引擎首先通过网络获得所请求文档的内容,通常以8K分块的方式完成。下面是渲染引擎在取得内容之后的基本流程:
①解析html以构建dom树 -> ②构建render树 -> ③布局render树 -> ④绘制render树

css样式解析到显示至浏览器屏幕上就发生在②③④步骤,可见浏览器并不是一获取到css样式就立马开始解析而是根据css样式的书写顺序将之按照dom树的结构分布render样式,完成第②步,然后开始遍历每个树结点的css样式进行解析,此时的css样式的遍历顺序完全是按照之前的书写顺序。在解析过程中,一旦浏览器发现某个元素的定位变化影响布局,则需要倒回去重新渲染。

概念:
DOM Tree:浏览器将HTML解析成树形的数据结构。

CSS Rule Tree:浏览器将CSS解析成树形的数据结构。

Render Tree: DOM和CSSOM合并后生成Render Tree。

layout: 有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系,从而去计算出每个节点在屏幕中的位置。

painting: 按照算出来的规则,通过显卡,把内容画到屏幕上。

reflow(回流):当浏览器发现某个部分发生了点变化影响了布局,需要倒回去重新渲染,内行称这个回退的过程叫reflow。reflow会从 (html)根节点 这个root frame开始递归往下,依次计算所有的结点几何尺寸和位置。reflow几乎是无法避免的。

repaint(重绘):改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变。

例如:现在界面上流行的一些效果,比如树状目录的折叠、展开(实质上是元素的显 示与隐藏)等,都将引起浏览器的 reflow。鼠标滑过、点击……只要这些行为引起了页面上某些元素的占位面积、定位方式、边距等属性的变化,都会引起它内部、周围甚至整个页面的重新渲染。

注意
(1)display:none 的节点不会被加入Render Tree,而visibility: hidden 则会,所以,如果某个节点最开始是不显示的,设为display:none是更优的。

(2)display:none 会触发 reflow,而 visibility:hidden 只会触发 repaint,因为没有发现位置变化。

(3)有些情况下,比如修改了元素的样式,浏览器并不会立刻reflow 或 repaint 一次,而是会把这样的操作积攒一批,然后做一次 reflow,这又叫异步 reflow 或增量异步 reflow。但是在有些情况下,比如resize 窗口,改变了页面默认的字体等。对于这些操作,浏览器会马上进行 reflow。

参考:

https://mp.weixin.qq.com/s?__biz=MzA3NTIwOTYxMw==&mid=2447522046&idx=1&sn=754ba20d30a93bb754013d59d001ef44&chksm=8b62961cbc151f0abb932aa218e00ddc512e0f9179e3e83b6f4af87ccd8dd6e679fa75b9aba8&mpshare=1&scene=23&srcid=0120TWyG73R2Ur6y1e2McZWc#rdhttp://blog.csdn.net/qq_36060786/article/details/79311244

CSS样式书写顺序 与 浏览器内部加载原理相关推荐

  1. 配置好框架后,资源文件如CSS样式、图片image、JS加载不了的解决方案

    今天,前端的同学把JSP页面发给我后,叫我集成SSM框架,哐哐哐,把配置文件写好后,运行,duang! 右键查看源代码,随便点击一个资源文件的链接,404! 资源文件加载不了!! 慌了好久,找到了几种 ...

  2. CSS 样式书写顺序及规范

    作者:WangMin 格言:努力做好自己喜欢的每一件事 CSDN原创文章 博客地址

  3. CSS 样式书写规范,css样式书写规范

    在工作当中css样式是非常重要的,但是咋样书写css样式更重要. 一.css书写规范 1.定位属性:position  display  float  left  top  right  bottom ...

  4. 浏览器的加载顺序与页面性能优化

    详情参考:浏览器的加载与页面性能优化 例子: 一:DNS:在header中添加 <link rel="dns-prefetch" href="//HOSTNAME. ...

  5. 前端笔记(7)css属性书写顺序,布局流程,chrome调试工具

    css样式表/层叠样式表(5) css属性书写顺序 布局流程 chrome调试工具 css属性书写顺序 布局定位属性 display / position / float / clear / visi ...

  6. web前端入门学习 css(5)(浮动)(ps切图)(css属性书写顺序)(学成在线网站案例)

    文章目录 传统网页布局的三种方式 标准流(普通流.文档流) 浮动(为什么需要浮动?) 浮动特性 浮动元素会脱离标准流,可以与普通流的元素相重叠 如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并 ...

  7. 浏览器图片加载是并行的么?再就是Js和CSS呢?是串行的?

    背景:外包做一个PC端的客户端,有从服务器端下拉图片并显示,加载太慢了还出现接口超时,图片一张张的加载,对其不知是用的浏览器控件还是多进程拉的,为此,想起浏览器下拉时是肿么拉的. 有问题,在PHP低级 ...

  8. [WebKit]浏览器的加载与页面性能优化

    非常棒.非常系统的一份资料,值得阅读! 原文来自百度泛用户体验. 作者:nwind 本文将探讨浏览器渲染的loading过程,主要有2个目的: 了解浏览器在loading过程中的实现细节,具体都做了什 ...

  9. python博客下载本地文件_解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了...

    1.今天网上下载一个博客项目,发现本地访问,js,css加载不了. 我想应该是项目上线的安全措施,但是我想调试项目.找到方法如下 在settings.py里面编辑 添加 STATICFILES_DIR ...

最新文章

  1. LRNNet:轻量级FCB SVN实时语义分割
  2. 关于向Mybatis传递多个参数进行SQL查询的用法
  3. 您能看出这个Double Check里的问题吗?
  4. Boost:字符串裁剪Trim的测试程序
  5. 最好的FLV视频下载器 维棠 (支持优酷视频下载、土豆视频下载等)
  6. CH9102 USB转串口应用体验
  7. fiddler手机端抓包配置
  8. python 生成pdf_如何使用Python生成PDF?
  9. android微信支付服务端,Android 微信支付返回-1
  10. Http长连接的例子_亲测可用哦
  11. centos7 cuda测试_CentOS 7 安装 NVIDIA 显卡驱动以及CUDA驱动(自测可用)
  12. Github上点赞最多的10个Python项目(2020年3月)
  13. POJ2146 Confusing Login Names [最小字符串编辑距离]
  14. java remote debug parameters
  15. Kata: 从随机的三字符列表组中恢复秘密字符串
  16. 微信或者QQ如何制作请用右上角打开浏览器
  17. 威纶触摸屏EB8000编程软件V4.65.14 官方最新版
  18. 2013Esri全球用户大会QA之ArcGIS未来发展
  19. 投票统计器用单片机c语言编写,基于51单片机的投票器毕业论文.doc
  20. 201671010448 词频统计软件项目报告

热门文章

  1. 不动产查封裁定何时生效?能否对抗善意第三人
  2. 自考《管理经济学》之宏观理解
  3. SQL数据导入导出语句大全[英文部分比较全面]
  4. java 计算日出日落时间
  5. Win8.1打开电脑时提示C:\WINDOWS\system32\config\systemprofile\Desktop不可用的解决方法
  6. 2021年软件测试入门到进阶全套学习内容
  7. mt4下载正版官网下载(如何分辨真假MT4软件)
  8. Apache ShardingSphere 毕业成为 Apache 顶级项目,系业界首个 Apache 分布式数据库中间件项目
  9. 学习 Rust Futures - Future 和 Stream
  10. 4.2.7 文字编辑