内容

最近在搞跨平台开发,用到了CSS,其实只要涉及到Web的都会用到!
一开始看的头大,不知道,选择器啥意思,
后来知道了,又不知道,为啥选择器许多个能并列,
后来又知道了,又又不知道了,为啥中间一个空格,影响这么大!
终于大概知道的全了,
为怕忘记,特记录如下。


HTML文档是一棵树的结构,各元素以一种层次结构为基础构成‘树’的视图。
文档树中的每个元素,要么是另一个元素的父元素,要么是另一个元素的子元素,这样,各元素之间就形成了‘父子关系’。
基于这样的关系模型,CSS定义了后代选择器(descendant selector)也称为上下文选择器(contextual selector)。


选择器,的写法为:.名字{......}

   /* 所有class属性值为blue的div元素显示为红色字体 */
   div.red {color:red;}


后代选择器,的写法为:子代元素以空格与父元素形成连接关系构成选择器

   /* 作为div元素后代的任何span元素显示为蓝色字体  */
   div span{color:blue;}    
   /* 作为div元素后代的任何class属性值为blue的元素显示为蓝色字体 */
   div .Yellow{color:Yellow;}  
   /* 所有class属性值为contain的div元素,其后代中class属性值为blue的任何元素显示为蓝色字体*/
   div.aaa .bbb{color:green;}


多类选择器,的写法为:选择器之间不能有空格。

   /* 多类选择器*/
   div.aaa.bbb{color:purple;}

 

综上,选择器之间的空格是一种结合符,如果要构成后代选择器,则空格两边的选择符必须为如下两种形式:

  1. 元素选择符 空格 元素选择符

  2. 非元素选择符 空格 非元素选择符 

后代选择器中绝对不可能出现的一种情形:元素选择符 [空格] 非元素选择符。

最重要一点:两个类选择器之间存在空格则构成后代选择器,之间没有空格的则构成多类选择器。

 


下面上真货

<!DOCTYPE html>

<html>

 <head>

        <style type="text/css">    

            /*--------------------------------------------- 1*/

            /* 作为div元素后代的任何span元素显示为蓝色字体  */

            div span{color:blue;}             

            /*--------------------------------------------- 2*/

            /* 所有class属性值为blue的div元素显示为红色字体 */

            div.red {color:red;}        

            /*--------------------------------------------- 3*/

            /* 作为div元素后代的任何class属性值为blue的元素显示为蓝色字体 */

            div .Yellow{color:Yellow;}        

            /*--------------------------------------------- 4*/

            /* 所有class属性值为contain的div元素,其后代中class属性值为blue的任何元素显示为蓝色字体*/

            div.aaa .bbb{color:green;}

            /*--------------------------------------------- 5*/

            /* 多类选择器*/

            div.aaa.bbb{color:purple;}

        </style>

    </head>

    

    <body>

        <b><h2>

        --------------------------------------------- 1

        <div>

            this is span 1                     <br>

            <span>this is span 2</span>        <br>

            this is span 3

        </div>    

        --------------------------------------------- 2

        <div class="red">

            this is span 1                    <br>

            <sss>this is span 2</sss>         <br>

        </div>    

        --------------------------------------------- 3

        <div>

            this is span 1                               <br>

            <sss>this is span 2</sss>                    <br>

            <sss class="Yellow">this is span 3</sss>

        </div>    

        --------------------------------------------- 4

        <div class="aaa">

            <sss>this is span 1</sss>                    <br>

            <sss class="bbb">this is span 2</sss>        <br>

        </div>

        --------------------------------------------- 5    

        <div class="aaa">        this is span 1    <br>    </div>

        <div class="bbb">        this is span 2    <br>    </div>

        <div class="aaa bbb">    this is span 3    <br>    </div>

        <div class="bbb aaa">    this is span 4    <br>    </div>

        <div class="aaa">

            <div class="bbb">    this is span 5    <br>

            </div>

        </div>

        <div class="bbb">

            <div class="aaa">    this is span 6    <br>

            </div>

        </div>

        

        <h2><b>

    </body>

</html>

 


吃水不忘挖井人

参考:浅谈CSS选择器中的空格 http://www.cnblogs.com/hellolong/articles/4021926.html