首页 > css > 《CSS实战精粹》读书笔记(三)
2010三月15

《CSS实战精粹》读书笔记(三)

每一种样式规则都由两部分组成:一个选择符和一个或多个声明,每个声明都包括一个属性和一个值。声明的格式通常是属性名称,后面跟着一个冒号,然后是属性的值,最后是一个分号。

今天的笔记主要介绍的是选择符,当然,只是简单的介绍,毕竟我也不会太多。呵呵。-_-!!! 但是类似于元素元素符,以及类选择符和ID选择符这种就不说了,大家都懂。不懂的问问Google,虽然不知道这站明天还在不在了。。

后代选择符、子元素选择符和相邻选择符

后代选择符也叫上下文选择符——是由以‘空格’为连接符号,分隔开的两个或多个元素组成。它创建的样式只能用于那些是别的元素的后裔元素。

ul li {
color: blue;
}

在下面的html结构中,所有的li元素,都以蓝色显示:

<ul>
  <li>Item one</li>
  <li>Item two</li>
  <li>Item three</li>
  <li>Item four has a nested list
     <ol>
       <li>Sub-item one</li>
       <li>Sub-item two</li>
     </ol>
  </li>
</ul>

子元素选择符——由以‘<’隔开的两个或多个元素组成。都说隔辈亲,但是子元素选择符则不是这样,该选择符定义的样式只管儿子不管孙子和重孙子。其与后代选择符相似但只选择子元素,而不是所有后裔(书中写的是祖先,英文版也是,感觉不正确)。

html结构与上面代码相同,但是我们将样式定义改为:

ul > li {
color: blue
}

现在我们再来看一下效果,位于 ol 标签内的“孙子辈的”li元素并没有变成蓝颜色。

相邻选择符——以‘+’隔开的两个简单的选择符。俗话说,远亲不如近邻。CSS也为我们提供了相邻选择符,也就是兄弟选择符,不过经验证,该选择符,只管“弟弟”,不管“兄长”。也就是说其只会寻找位于自己后面的兄弟,而前面的兄弟则自生自灭去吧。

书中的说法是:

相邻选择符就是能够以紧跟某元素,并与其有共同父元素的元素为目标的选择符。

注意:IE6以下版本无效

例如定义如下样式:

h1 + p {border:1px solid blue;}

应用HTML如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>CSS相邻选择符</title>
        <style>
            p{width:300px;}
            h1{font-size:20px;}
            h1 + p {
                border: 1px solid blue;
            }
        </style>
    </head>
    <body>
        <p>
            我位于h1元素上面,是他哥,我没有边框
        </p>
        <h1>我是h1元素,下面的是我兄弟,我为其加个边框</h1>
        <p>
            传说中我有边框,幸福的孩子啊
        </p>
        <p>
            咱离h1标签有点远,算了,无用了
        </p>
    </body>
</html>

结果如下:

sibling_selecter

sibling_selecter

链接和动态伪类的顺序

不讲解这些伪类的区别了,大家自己去翻手册,只是强调一下,超链接伪类的正确顺序定义是——:link、:visited、:hover及:active。

伪元素

伪元素包括下面四种——:first-line、:first-letter、:before及:after。后两种用的相对较少,至少我在这之前没见过,孤陋寡闻啊。这里成也只简单介绍一下首字下常见的效果,直接看示例吧:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>首字下沉</title>
        <style>
            p {
                font-size: 100%;
            }
           
            p:first-letter {
                font-size: 300%;
                font-weight: bold;
            }
            p + p:first-letter {
                float: left;
            }
        </style>
    </head>
    <body>
        <p>
            我想让首字下沉,中文也一样,我没有加左浮动!!!
        </p>
        <p class="float">
            我是p标签的邻居,我加了左浮动,看一下效果吧
        </p>
    </body>
</html>

效果如图:

呼,又一篇笔记结束了,加油。Good good study ,day day up!!

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2010/03/15/1732/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

4 Responses to “《CSS实战精粹》读书笔记(三)”

  1. #1 simaopig 回复 | 引用 Post:2010-03-15 23:10

    呃,其实最后一个例子不好,加完左浮动,下面没有再加一行文字,看不出效果,不过大家简单看一下就行(此句自言自语)。。 :roll:

    [回复]

  2. #2 LAONB 回复 | 引用 Post:2010-03-16 22:11

    你怎么还玩上自言自语了,我来陪你聊聊。 :mrgreen:

    [回复]

  3. #3 simaopig 回复 | 引用 Post:2010-03-16 22:48

    @LAONB
    因为本来就是写给自己看滴,留个言,自己以后翻的时候能注意一下。呵。。

    PS:当时懒得编辑原文了。。 :mrgreen:

    [回复]

  4. #4 要饭的 回复 | 引用 Post:2010-03-17 16:54

    昨晚刚搜了一下怎么让li 一行显示多个?

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)