zoukankan      html  css  js  c++  java
  • Web开发之CSS

      Web开发,除了后台开发和数据开发,很大一块是前端开发。前端开发中使用最大的技术是:HTML(现在也有项目开始使用HTML5了,比如沪江英语的听力曲线使用html5 canvas绘制的),CSS(这个也有一个新版本,CSS3.0。很多应用出现圆角效果,估计都使用到了3.0的新特性),Javascript(其实这个也有版本的哦!盛大的权一大师就在研究ECMAScript5了),一个javascript框架,比如说jQuery,Dojo,YUI等等。

      主要讲解CSS性能调优,内容涉及一下几个方面。
    1.Style标签的调优
    2.特殊CSS样式的使用
    3.CSS的缩写
    4.CSS的声明(省略)
    5.CSS的选择器
    第一点:
     把Stylesheets文件放在HTML页面的头部,把Javascript文件放在页面的底部。这也是《高性能网站开发》中的建议方法。对于 @import 和 <link> 两种加载外部 CSS 文件的方式:@import 就相当于是把 <link> 标签放在页面的底部,所以从优化性能的角度看,应该尽量避免使用 @import 命令。


    第二点:
     避免是有某一特定浏览器的技术的。比如IE支持的CSS Expression和AlphaImageLoader Filter。

    第三点:
     CSS的缩写。原来把 #FFFFFF写成#FFF也是可以减小代码量,提高性能的呀!在项目中PM经常会指导我们,把Font-style: italic; Font-variant: small-caps; Font-weight: bold; Font-size: 1em; Line-height: 140%; Font-family: sans-serif; 写成一行,font: italic small-caps bold 1em 140% sans-serief。不过这个对于熟练的工程师来说还好,但是对于初学者来说,这样的样式不够清晰易懂。因为我没有分析过浏览器解析和渲染样式的原理,写成一句是否真的有利于各个浏览器提供性能。我还是不敢肯定。


    第四点:
     CSS选择器。周祥老师给出了这个例子,让我大吃一惊。
    示例一:Child Selector
    #toc > li {font-weight: bold} ,他说:浏览器是“从右往左”来分析 class 的,它的匹配规则是从右向左来进行匹配的。这里,浏览器首先会查找页面上所有的“li”节点,然后再去做进一步的判断:如果它的父节点的 id 为“toc”,则匹配成功。PS:不过我们项目基本不用这个样式,因为IE6不支持子代选择器。不过他在后面列举
    示例二:Descendant selector
    #toc  li {font-weight: bold} ,这个效率比之前的“child selector”效率更慢,而且要慢很多。浏览器先便利所有的“li”节点,然后步步上溯其父节点,直到 DOM 结构的根节点(document),如果有某个节点的 id 为“toc”,则匹配成功,否则继续查找下一个“li”节点。不是吧!这个样式在我们开发的Web项目中用到的特别多呀!不过我们现在也逐步习惯一级一级的定位元素,减少浏览器在DOM结果查找的节点的时间。
    如果一个标签有id,直接使用ID seletor,比如 <div id="footer"></div>,不要写 div#footer,查找效率很低。但是关于class选择器,我倒是觉得可以使用tag和class同时定位,有时需要这样的需要。    
     treehead treerow treecell {...} ----->> treehead > treerow > treecell {...}
    Descendant 选择器是耗时相对高的选择器,通常来讲,它在 CSS 里的使用应该是尽量避免的,如果能用 child 选择器替代就应该尽量这样去做。还是那个原因,IE6不支持,所以不使用这个。

    同时推荐2本淘宝工程师翻译的书,确实不错。目前看完第一本,正在看第二本。作者是前Google Web工程师,翻译都是由口碑前端团队完成的。

       

    PS:就因为我在这里放置了2个卓越链接,居然移出首页。

     

    本文基于 知识共享许可协议 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议发布,欢迎转载,演绎,但是必须保留本文的署名liminjun88(包含链接http://www.cnblogs.com/liminjun88/),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系

  • 相关阅读:
    进程与线程
    the art of seo(chapter seven)
    the art of seo(chapter six)
    the art of seo(chapter five)
    the art of seo(chapter four)
    the art of seo(chapter three)
    the art of seo(chapter two)
    the art of seo(chapter one)
    Sentinel Cluster流程分析
    Sentinel Core流程分析
  • 原文地址:https://www.cnblogs.com/liminjun88/p/2194870.html
Copyright © 2011-2022 走看看