1、样式的层级关系:一个是权重,另一个就是共用样式和私用样式了,比如说两个ul,它们的子元素除了背景色之外都一样,那可以直接用li {}来定义相同的公用样式,用 .ul_1 li {} , .ul_2 li {} 来定义不相同的样式。可以根据元素之间的差别来选择用哪种方法。推荐用多层级的方式书写css选择器。

2、选择器优先级:(!important>)id选择器>class选择器(属性选择器/伪类选择器)>标签选择器(伪元素选择器) 同类选择符条件下层级越多的优先级越高。优先级就近原则,同权重情况下样式定义最近者为准。载入样式以最后载入的定位为准。


3、样式冲突:   如果同个元素有两个或以上冲突的CSS规则,浏览器有一些基本的规则来决定哪一个非常特殊而胜出。


        选择器一样的情况下后面的会覆盖前面的属性。


        使用嵌套选择器时:


          一组嵌套选择器的实际特性可以计算出来。基本的,使用ID选择器的值是100,使用class选择器的值是10,每个html选择器的值是1。它们加起来就可以计算出特性的值。


          p的特性是1(一个html选择器)


          div p的特性是2(两个html选择器)


          .tree的特性是10(1个class选择器)


          div p.tree的特性是1+1+10=12,(两个html选择器,一个class选择器)


          #baobab的特性是100(1个ID选择器)


          body #content .alternative p的特性是112(两个html选择器,一个ID选择器,一个类选择器)


            基本上,一个选择器越多特性,样式冲突的时候将显示它的样式。


4、抽离样式模块


    因为浏览器的兼容问题,不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面显示差异。当然,初始化样式会对SEO有一定的影响,但鱼和熊掌不可兼得,但力求影响最小的情况下初始化。


        最简单的初始化方法: * {padding: 0; margin: 0;} (强烈不建议)


body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; } 

        body, button, input, select, textarea { font:12px/1.5tahoma, arial, \5b8b\4f53; } 

        h1, h2, h3, h4, h5, h6{ font-size:100%; } 

        address, cite, dfn, em, var { font-style:normal; } 

        code, kbd, pre, samp { font-family:couriernew, courier, monospace; } 

        small{ font-size:12px; } 

        ul, ol { list-style:none; } 

        a { text-decoration:none; } 

        a:hover { text-decoration:underline; } 

        sup { vertical-align:text-top; } 

        sub{ vertical-align:text-bottom; } 

        legend { color:#000; } 

        fieldset, img { border:0; } 

        button, input, select, textarea { font-size:100%; } 

        table { border-collapse:collapse; border-spacing:0; }