`

css原理(转)

 
阅读更多

 一、浏览器的发展与CSS

  省

 二、浏览器是如何渲染页面和加载页面

  为什么有些网站打开的时候会加载会很慢,而且是整个页面同时显示的,而有些网站是从顶到下逐步显示出来的?要搞懂这个可以先从下面这个常规流程开始:

  1. 浏览器下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。

  2. 在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相关联的元素都已经下载完)。

  3. 如果遇到语义解释性的标签嵌入文件(JS脚本,CSS样式),那么此时IE的下载过程会启用单独连接进行下载。

  4. 并且在下载后进行解析,解析过程中,停止页面所有往下元素的下载。

  5. 样式表在下载完成后,将和以前下载的所有样式表一起进行解析,解析完成后,将对此前所有元素(含以前已经渲染的)重新进行渲染。

  6. JS、CSS中如有重定义,后定义函数将覆盖前定义函数。

  这里关键的是第2-5这三点。渲染效率与下面三点有关:

  1. CSS 选择器的查询定位效率

  2. 浏览器的渲染模式和算法

  3. 要进行渲染内容的大小

  三、什么是 CSS 以及 CSS 的优点

  什么是 CSS?

  • CSS 是 Cascading Style Sheets(层叠样式表)的简称。
  • CSS 语言是一种标记语言,它不需要编译,可以直接由浏览器解释执行(属于浏览器解释型语言)。
  • 在标准网页设计中 CSS 负责网页内容 (XHTML)的表现。
  • CSS 文件也可以说是一个文本文件,它包含了一些 CSS 标记,CSS 文件必须使用 css 为文件名后缀。
  • 可以通过简单的更改 CSS 文件,改变网页的整体表现形式,可以减少我们的工作量,所以它是每一个网页设计人员的必修课。
  • CSS是由W3C的CSS工作组产生和维护的。

  采用 CSS+DIV 进行网页重构,相对与传统的 TABLE 网页布局而具有以下3个显著优势:

  1. 表现和内容相分离。将设计部分剥离出来放在一个独立样式文件中,HTML文件中只存放文本信息。这样的页面对搜索引擎更加友好。

  2. 提高页面浏览速度。对于同一个页面视觉效果,采用 CSS+DIV 重构的页面容量要比 TABLE 编码的页面文件容量小得多,前者一般只有后者的1/2大小。浏览器就不用去编译大量冗长的标签。

  3. 易于维护和改版。你只要简单的修改几个 CSS 文件就可以重新设计整个网站的页面。

  四、浏览器对 CSS 的匹配原理

  浏览器CSS匹配不是从左到右进行查找,而是从右到左进行查找。比如之前说的 DIV#divBox p span.red{color:red;},浏览器的查找顺序如下:先查找 html 中所有 class=’red’ 的 span 元素,找到后,再查找其父辈元素中是否有p元素,再判断p的父元素中是否有 id 为 divBox 的 div 元素,如果都存在,则 CSS 匹配上。

  浏览器从右到左进行查找的好处是为了尽早过滤掉一些无关的样式规则和元素。Firefox 称这种查找方式为 keyselector(关键字查询),所谓的关键字就是样式规则中最后(最右边)的规则,上面的 key 就是 span.red。

  五、优化你的 CSS

  所谓高效的 CSS 就是让浏览器在查找 style 匹配的元素的时候尽量进行少的查找,下面列出一些我们常见的写 CSS 犯一些低效错误:

  1、不要在ID选择器前使用标签名

  一般写法:DIV#divBox

  更好写法:#divBox

  解释:因为ID选择器是唯一的,加上div反而增加不必要的 CSS 匹配。

  2、不要在 class 选择器前使用标签名。前端UI分享

  一般写法:span.red

  更好写法:.red

  解释:同第一条,但如果你定义了多个.red,而且在不同的元素下是样式不一样,则不能去掉,比如你css文件中定义如下:

  p.red{color:red;}   span.red{color:#ff00ff}

  如果是这样定义的就不要去掉,去掉后就会混淆,不过建议最好不要这样写

  3、尽量少使用层级关系

  一般写法:#divBoxp.red{color:red;}

  更好写法:.red{..}

  4、使用 class 代替层级关系

  一般写法:#divBox ul li a{display:block;}

  更好写法:.block{display:block;}

  5、在 CSS 渲染效率中 id 和 class 的效率是基本相当的

  class 会在第一次载入中被缓存,在层叠中会有更加好的效果,在根部元素采用id会具有更加好(id有微          妙的速度优势)。

       6、css 命名 、书写规范;(好的代码看上去就很整齐 很有条理性这样方便日后的维护和管理)

      7、css优先级; 选择器权重:内联样式:1000,id选择器:1000, class选择器:10,标签选择器:1           注意权重的问题。

       8、少用滤镜,少用hack,少用position:absolute;。
       9、多用继承属性。
       10、使用简写样式:例如margin: 10px; 浏览器会解释为上下左右各有10px的外补丁。margin: 0 10px        浏览器解析为 左右有10px的外补丁。

       11、不要在ID选择器和class选择器前 使用标签名 例如:div.box { color: #f00; }; 直接 可以 用类名,                  .box{ color:#f00;}  这样浏览器找到这个class后 就不用再匹配是否存在div标签.从而提高了渲染效率。当然同一级的                  有不同的样式可以这样写,但是不建议这样。

       12、css的层级关系不要太深 用class直接代替多余的层级元素。

        例如 .box .box-con .box-list li { line-height: 24px; } 这么长。。。增加代码量减小开发效率。刚也说了,         css渲染是从上到下,从右到左的

       所以直接这样写就可以了.box-list li { line-height: 24px; };

       13、平铺背景图片不要过小,影响渲染速率。
       14、float使用要谨慎。
       15、合理化布局(模块化布局);可以把样式划分为 基类 和扩展类 ;模块化布局 :模块基本相同的样式         写在 基类里,不同的在重新用class来定义称为扩展类 。

 

 //todo

 

 

    更基础属性元素: http://ce.sysu.edu.cn/CMSDesign/Item/667.aspx

  IE和火狐的css兼容性问题

 

 

分享到:
评论

相关推荐

    css揭秘_css原理_css_前端_

    CSS原理 揭秘 一本讲述网页设计原理

    华为集群CSS原理.doc

    华为集群CSS原理.doc

    华为集群CSS原理汇总.pdf

    华为集群CSS原理汇总.pdf

    CSS Sprites工作原理

    CSS Sprites工作原理CSS Sprites工作原理

    css sprite原理优缺点及使用

    CSS Sprites优点  利用CSS Sprites能很好地减少了网页的http请求,从而大大的提高了页面的性能,这也是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因;  CSS Sprites能减少图片的字节,曾经比较过多次...

    前端开发之CSS原理详解

    前端开发之CSS原理详解  从事Web前端开发的人都与CSS打交道很多,有的人也许不知道CSS是怎么去工作的,写出来的CSS浏览器是怎么样去解析的呢?当这个成为我们提高CSS水平的一个瓶颈时,是否应该多了解一下呢?  ...

    基于CSS技术的测距定位原理

    基于CSS技术的测距定位原理,1.2G和2.4G测距定位原理

    前端知识css原理

    介绍什么是BFC,他有那些特性,css得层叠和继承,!important有哪些使用情况

    CSS那些事儿.pdf

    本书专注于CSS技巧实例的讲解,由浅入深地分析了CSS样式在布局时所需要理解的原理。放弃到处可见的基础知识、网络中能随意搜索到的hack技巧,侧重原理分析,拓展读者使用CSS布局的思维方式,通过本书的阅读读者将会...

    CSS3实现LOGO或图片360度旋转特效.rar

    CSS3实现LOGO或图片360度旋转特效,为了使效果更好,LOGO或图片最好是圆形的,当然了,本代码的目的是向您介绍图片旋转的原理,如何360度旋转,循环旋转,下载源码后请参见html文件。

    CSS文集

    利用CSS的Expression自定义属性来实现表格的OnMouseOver 特效 需要掌握的八个CSS布局技巧 用css实现链接经过时显示浮动图片背景的效果...Firefox和IE6兼容的垂直居中 CSS CSS浮动原理 CSS网站元素设计...

    CSS3 3D立体图片翻转焦点图

    这是一款看上去非常简易的图片播放焦点图插件,插件利用了CSS3相关属性,实现图片的翻转动画。之前我们也刚分享过一款基于CSS3的图片悬停翻转动画,利用的是相同的原理,不过这是在翻转的过程中切换成另外一张图片。

    Div+CSS 布局大全

    第一种可能是你还没有理解 CSS 处理页面的原理。在你考虑你的页面整体表现效果前,你应当先考虑内容的语义和结构, 然后再针对语义、结构添加 CSS。这篇文章将告诉你应该怎样把 HTML 结构化。 另一种原因是你对...

    css3动画原理制做的指针时钟效果源码下载

    css3动画原理制做的指针时钟效果源码下载 css3动画原理制做的指针时钟效果源码下载 css3动画原理制做的指针时钟效果源码下载

    CSS制作网页详细步骤图解

    CSS制作网页详细步骤图解 CSS制作网页详细步骤图解

    css滑动门技术详解pdf版

    在DIV+CSS大行其道的今天,css技术早以成为我们的必须.

    CSS那些事儿(源码)

    本书专注于CSS技巧实例的讲解,由浅入深地分析了CSS样式在布局时所需要理解的原理。放弃到处可见的基础知识、网络中能随意搜索到的hack技巧,侧重原理分析,拓展读者使用CSS布局的思维方式,通过本书的阅读读者将会...

    css 弹出框

    这是一款利用jQuery和CSS3实现的自定义弹出窗口,这可比浏览器默认的弹出窗口漂亮多了。弹出窗口中可以自定义html,十分灵活。另外最重要的一个特点是,它利用了jQuery和CSS3可以实现很多种弹出窗口动画效果,挺酷的...

    css js 弹出框

    css js 弹出框

Global site tag (gtag.js) - Google Analytics