`

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兼容性问题

 

 

分享到:
评论

相关推荐

    svg转css,css转svg,svg与css互相转换并压缩

    同时,理解文件压缩原理和方法,如Base64编码和CSS minification,有助于减少资源占用,提升网站加载速度。对于JavaScript工具包的使用,开发者需要阅读相关文档,学习如何正确集成和使用这些工具,以满足项目需求。

    css揭秘_css原理_css_前端_

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

    table布局网页转换为div+CSS布局的转换软件

    在网页设计领域,传统的`table`布局曾是构建网页结构的主要方式,但随着Web标准的发展,`div`结合`CSS`布局(层叠样式表)逐渐成为主流。...不过,理解和掌握`div+CSS`布局原理仍然是每个前端开发者的必备技能。

    Table2CSS表格转CSS+DIV布局工具

    【标题】"Table2CSS表格转CSS+DIV布局工具"是一款专为网页设计者打造的实用软件,旨在帮助用户将传统的HTML表格布局转换为更现代、更灵活的CSS(层叠样式表)与DIV(定义文档结构的HTML元素)布局。这种转换能够提升...

    css sprite原理优缺点及使用

    2. **单图转滚(Single-image Rollovers)**:通过合并不同状态下的图片为一张大图,并利用CSS背景定位技术模拟动态效果,避免了因网络问题造成的等待。 3. **延长背景(Extend Background Image)**:如果图片的某一边...

    华为集群CSS原理汇总.pdf

    华为集群CSS原理汇总 华为集群交换系统(Cluster Switch System,简称CSS)是指将两台交换机设备组合在一起,虚拟化成一台交换设备。其目的在于实现网络高可靠性和网络大数据量转发,同时简化网络管理。 高可靠性 ...

    CSS3动态数字翻转切换动画特效.zip

    在IT行业中,CSS3是一种强大的样式表语言,用于定义网页的布局、颜色、字体等视觉效果。本资源“CSS3动态数字翻转切换动画特效...学习并掌握这种特效的实现原理,对于提升前端开发技能和理解动态UI设计有着重要的价值。

    前端开源库-postcss-css-variables

    它的工作原理是将CSS中的`var()`函数和自定义属性转换为浏览器可以理解的静态值。这是因为一些较旧的浏览器不支持CSS Variables,或者需要特定的前缀才能正确解析。该插件确保了向后兼容性,使得开发者可以放心地...

    将AE制作的动画导出为CSS代码

    在实际开发中,理解CSS动画的工作原理和性能优化策略至关重要。这包括合理利用硬件加速、避免过度绘制、优化渲染树等。通过将AE的创意设计与CSS的实用性相结合,可以为网页创造出引人入胜的动态用户体验。

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

    CSS技术测距定位原理是一种利用无线通信技术进行距离测量和定位的技术,主要应用于物联网精确定位系统。CSS(Chirp Spread Spectrum)技术,即频移键控技术,是一种特殊的扩频技术,其特点是利用脉冲信号的频率变化...

    html转pdf css控制

    因此,掌握CSS在转换过程中的工作原理以及如何解决这些问题至关重要。 首先,我们需要了解HTML到PDF的转换工具。许多库和工具如PhantomJS、Puppeteer(基于Chrome Headless)以及Java的 Flying Saucer,它们都能将...

    纯CSS3彩色旋转加载动画特效.zip

    通过查看这些文件,我们可以更深入地理解这个特效的工作原理和实际应用。 总的来说,纯CSS3彩色旋转加载动画特效是一种利用现代Web技术提升用户体验的有效手段,它不仅展示了CSS3的强大能力,也为开发者提供了更多...

    css揭秘、css权威指南,精通css

    特别关注的是,它深入解析了层叠和继承机制,这是理解CSS工作原理的基础。此外,书中还涵盖了CSS的媒体查询和响应式设计,帮助开发者创建适应不同设备的网页。 《精通CSS:高级Web标准解决方案》(第2版)则更侧重...

    jQuery CSS3旋转滑块幻灯片.zip

    【jQuery CSS3旋转滑块幻灯片】是一个利用jQuery库和CSS3技术构建的动态展示内容的组件。在网页设计中,幻灯片通常用于在...通过理解jQuery和CSS3的工作原理,开发者可以定制此类幻灯片,以适应不同项目的需求和风格。

    前端开发之CSS原理详解

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

    HTML表格转换网页div_css完美转换软件工具

    HTML表格和div+CSS是两种不同的网页布局方式。在早期的网页设计中,HTML表格常用于组织内容,但随着Web标准的发展,div+CSS...同时,学习和理解div+CSS布局原理也是非常重要的,这样可以更好地优化和维护转换后的代码。

    CSS实现动态旋转导航栏.rar

    通过分析和修改这些文件,你可以深入了解动态旋转导航栏的实现原理,并能动手实践,提升自己的前端开发技能。 总结来说,这个压缩包提供的实例是一个很好的学习资源,涵盖了HTML基础结构、CSS样式设计和JavaScript...

    CSS Sprites工作原理

    CSS Sprites的工作原理是将这些小图整合到一张大图中,只用一个HTTP请求获取这张大图,然后通过改变元素的`background-position`属性来显示大图中的不同部分。 例如,假设我们有一个大图`sprite.png`,包含了“最大...

    前端知识css原理

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

    2个css3-rotate圆环叠加旋转特效.rar

    本篇将深入探讨"2个css3-rotate圆环叠加旋转特效",并分析其背后的实现原理与应用。 首先,我们要明确CSS3中的旋转(rotate)属性。`transform: rotate()` 是CSS3中用于改变元素位置的变形方法之一,它可以将元素沿...

Global site tag (gtag.js) - Google Analytics