CSS知识总结(二)

CSS的选择符分成:

  1. 通配选择符

  2. 元素选择符

  3. 群组选择符

  4. 关系选择符

  5. id及class选择符

  6. 伪类选择符

  7. 属性选择符

  8. 伪对象选择符

 

1.通配选择符(*)

  * 号表示所有的对象。

  所谓通配选择符,就是指可以使用模糊指定的方式来对象进行选择,指定样式。

  例子源代码:

/* CSS代码 */
*{
    color:gray;
}
<!-- HTML代码 -->
<body>
    <p>这是灰色字体的p标签</p>
    <span>这是灰色字体的span标签</span>
</body>

  效果:

这是灰色字体的p标签

这是灰色字体的span标签

  

2.元素选择符

  所谓元素选择符,指以网页中已有的标签名作为名称的选择符。

   例子源代码:

/* CSS代码 */
p{
    color:gray;
}
span{
    color:brown;
}
<!-- HTML代码 -->
<body>
    <p>这是灰色字体的p标签</p>
    <span>这是棕色字体的span标签</span>
</body>

  效果:

这是灰色字体的p标签

这是棕色字体的span标签

 

3.群组选择符

  对一组标签进行相同的样式定义;使用逗号对选择符进行分隔,对页面中需要使用相同样式的地方,只需写一次样式。

  例子源代码:

/* CSS代码 */
p,span{
    color:brown;
}
<!-- HTML代码 -->
<body>
    <p>这是棕色字体的p标签</p>
    <span>这是棕色字体的span标签</span>
</body>

  效果:

这是棕色字体的p标签

这是棕色字体的span标签

 

4.关系选择符

  a.包含选择符(E  F)

   选择所有被E元素包含的F元素。

  例子源代码:

/* CSS代码 */
ul li a{
    color:red;
}
<!-- HTML代码 -->
<body>
    <ul>
        <li>
            <a href="">菜单项</a>
            <ul>
                <li><a href="">列表项1</a></li>
                <li><a href="">列表项2</a></li>
                <li><a href="">列表项3</a></li>
            </ul>
        </li>
    </ul>
</body>

  此例,使用ul li a,那么所有a标签都会变红色。

  效果:

 

  b.子选择符(E > F)

   选择所有作为E元素的子元素F。

  例子源代码:

/* CSS代码 */
.nav > li > a{
    color:red;
}
<!-- HTML代码 -->
<body>
    <ul class="nav">
        <li>
            <a href="">菜单项</a>
            <ul>
                <li><a href="">列表项1</a></li>
                <li><a href="">列表项2</a></li>
                <li><a href="">列表项3</a></li>
            </ul>
        </li>
    </ul>
</body>

  此例,使用.nav>li>a,那么只有.nav的li下面的a标签才会变红色。

  效果:

 

  c.相邻选择符(E + F)

    选择紧贴在E元素之后的F元素。

  例子源代码:

/* CSS代码 */
p+p{color:red;}
<!-- HTML代码 -->
<body>
    <h3>这是一个标题</h3>
    <p>这是第1个p标签</p>
    <p>这是第2个p标签</p>
    <h3>这是一个标题</h3>
    <p>这是第3个p标签</p>
    <p>这是第4个p标签</p>
</body>

  此例,使用p+p{color:red;},选择紧贴在p标签后的p标签,那么第2个p标签和第4个p标签将会变成红色。

  效果:

  这是一个标题

  这是第1个p标签

  这是第2个p标签

  这是一个标题

  这是第3个p标签

  这是第4个p标签

 

  d.兄弟选择符(E ~ F)

   选择E元素的所有兄弟元素F。

  例子源代码:

/* CSS代码 */
p~p{color:red;}
<!-- HTML代码 -->
<body>
    <h3>这是一个标题</h3>
    <p>这是第1个p标签</p>
    <p>这是第2个p标签</p>
    <h3>这是一个标题</h3>
    <p>这是第3个p标签</p>
    <p>这是第4个p标签</p>
</body>

  此例,使用p~p{color:red;},选择p标签的其它所有p标签,那么第2个p标签、第3个p标签和第4个p标签将会变成红色。

  效果:

  这是一个标题

  这是第1个p标签

  这是第2个p标签

  这是一个标题

  这是第3个p标签

  这是第4个p标签

 

5.id及class选择符

  id及class均是css提供由用户自定义标签名称的选择符,用户可以使用选择符id及class来面对页面中的xhtml标签进行自定义名称,从而达到扩展xhtml标签及组合HTML标签的目的。

  a.id选择符(E#id)

   id选择符可以为标有特定id的HTML元素指定特定的样式。

   id选择器以“#”来定义。

   *在网页中,一个id名称只能使用一次,不得重复。

  例子源代码:

/* CSS代码 */
#content{
    color:gray;
}
<!-- HTML代码 -->
<body>
    <p id="content">正文内容</p>
</body>

  效果:

  正文内容

 

  b.class选择符(E.class)

   不同于id选择符的唯一性,class选择符可以同时定义多个。

  例子源代码:

/* CSS代码 */
.a{
    color:gray;
}
.b{
    font-weight:bold;
}
<!-- HTML代码 -->
<body>
    <p class="a b">正文内容</p>
</body>

  效果:

  正文内容

 

6.伪类选择符

  伪类选择符种类特别多,这里并未列出所有的伪类选择符,但都支持现代浏览器(除了IE6-8)

  这里,我举例几个常用的伪类选择符:

  例子1  源代码:

/* CSS代码 */
a{
    text-decoration:none;   /*改变a链接的样式*/
}
a:link{
    color:black;    /*设置超链接a在未被访问前的样式*/
}
a:visited{
    color:gray;     /*设置超链接a在其链接地址已被访问过时的样式*/
}
a:hover{
    color:blue;     /*设置元素在其鼠标悬停时的样式*/
}
a:active{
    color:red;      /*设置元素在被用户激活时的样式*/
}
<!-- HTML代码 -->
<body>
    <p><a href="###">点击我吧</a></p>
</body>

  效果:

  点击我吧

 

   例子2  源代码:

/* CSS代码 */
.ul1 li:first-child{color:red;}     /*第一个*/
.ul1 li:last-child{color:blue;}     /*最后一个*/
.ul1 li:nth-child(2){color:green;}     /*第二个*/
.ul1 li:nth-last-child(2){color:yellow;}    /*倒数第二个*/
<!-- HTML代码 -->
<body>
    <ul class="ul1">
        <li>这是列表的第1行</li>
        <li>这是列表的第2行</li>
        <li>这是列表的第3行</li>
        <li>这是列表的第4行</li>
        <li>这是列表的第5行</li>
        <li>这是列表的第6行</li>
     </ul>
</body>

  效果:

  • 这是列表的第1行
  • 这是列表的第2行
  • 这是列表的第3行
  • 这是列表的第4行
  • 这是列表的第5行
  • 这是列表的第6行

 

  例子3 (乘法因子n)  源代码:

/* CSS代码 */

/*乘法因子 奇数*/
.ul2 li:nth-child(odd){
    color:red;
}
.ul2 li:nth-child(2n+1){
    border-left:3px solid red;
}

/*乘法因子 偶数*/
.ul2 li:nth-child(even){
    color:blue;
}
.ul2 li:nth-child(2n){
    border-left:3px solid blue;
}

/*乘法因子 3的倍数*/
.ul2 li:nth-child(3n){
    font-weight:bold;
}
<!-- HTML代码 -->
<body>
    <ul class="ul2">
        <li>这是列表的第1行</li>
        <li>这是列表的第2行</li>
        <li>这是列表的第3行</li>
        <li>这是列表的第4行</li>
        <li>这是列表的第5行</li>
        <li>这是列表的第6行</li>
     </ul>
</body>

  效果:

  • 这是列表的第1行
  • 这是列表的第2行
  • 这是列表的第3行
  • 这是列表的第4行
  • 这是列表的第5行
  • 这是列表的第6行

 

 7.属性选择符

  a. E[att]

   选择具有att属性的E元素。

  例子源代码:

/* CSS代码 */
p[class] {
    color:red;
}
<!-- HTML代码 -->
<body>
    <p class="aaa">这是第一个p标签</p>
    <p>这是第二个p标签</p>
</body>

  效果:

这是第一个p标签

这是第二个p标签

 

  b. E[att="val"]

   选择具有att属性且属性值等于val的E元素。

  例子源代码:

/* CSS代码 */
p[class="content"] {
    color:red;
}
<!-- HTML代码 -->
<body>
    <p class="title">这是第一个p标签</p>
    <p class="content">这是第二个p标签</p>
</body>

   效果:

这是第一个p标签

这是第二个p标签

 

  c. E[att~="val"]

   选择具有att属性且属性值为一用空格分隔的字词列表,其中一个等于val的E元素。

  例子源代码:

/* CSS代码 */
p[class~="content"] {
    color:red;
}
<!-- HTML代码 -->
<body>
    <p class="content abc">这是第一个p标签</p>
    <p class="cba content">这是第二个p标签</p>
</body>

  效果:

这是第一个p标签

这是第二个p标签

 

   d. E[att^="val"]

    选择具有att属性且属性值为以val开头的字符串的E元素。

  例子源代码:

/* CSS代码 */
p[class^="a"] {
    color:red;
}
<!-- HTML代码 -->
<body>
    <p class="aaa">这是第一个p标签</p>
    <p class="bbb">这是第二个p标签</p>
    <p class="abc">这是第三个p标签</p>
</body>

   效果:

这是第一个p标签

这是第二个p标签

这是第三个p标签

 

   e. E[att$="val"]

    选择具有att属性且属性值为以val结尾的字符串的E元素。

  例子源代码:

/* CSS代码 */
p[class$="a"] {
    color:red;
}
<!-- HTML代码 -->
<body>
    <p class="aaa">这是第一个p标签</p>
    <p class="abc">这是第二个p标签</p>
    <p class="cba">这是第三个p标签</p>
</body>

  效果:

这是第一个p标签

这是第二个p标签

这是第三个p标签

 

  f. E[att*="val"]

   选择具有att属性且属性值为包含val的字符串的E元素。

  例子源代码:

/* CSS代码 */
p[class*="a"] {
    color:red;
}
<!-- HTML代码 -->
<body>
    <p class="abc">这是第一个p标签</p>
    <p class="a-b-c">这是第二个p标签</p>
    <p class="c_b_a">这是第三个p标签</p>
</body>

   效果:

这是第一个p标签

这是第二个p标签

这是第三个p标签

 

  g. E[att|="val"]

    选择具有att属性且属性值为以val开头并用连接符"-"分隔的字符串的E元素。

  例子源代码:

/* CSS代码 */
p[class|="a"] {
    color:red;
}
<!-- HTML代码 -->
<body>
    <p class="abc">这是第一个p标签</p>
    <p class="a-b-c">这是第二个p标签</p>
    <p class="c-b-a">这是第三个p标签</p>
</body>

  效果:

这是第一个p标签

这是第二个p标签

这是第三个p标签

 

8.伪对象选择符

  *CSS3将伪对象选择符前面的单个冒号(:)修改为双冒号(::)用以区别伪类选择符,但以前的写法仍然有效。

  *伪对象选择符与包含规则的花括号之间不能紧挨着,需留有空格或换行

 

  a. E:first-letter/E::first-letter

   设置对象内的第一个字符的样式。

  例子源代码:

/* CSS代码 */
p:first-letter {
    font-size:30px;font-weight:bold;
}
p::first-letter {
    font-size:30px;font-weight:bold;
}
<!-- HTML代码 -->
<body>
    <p>早起的鸟儿有虫吃</p>
</body>

  效果:

早起的鸟儿有虫吃

 

   b. E:first-line/E::first-line

    设置对象内的第一行的样式。

  例子源代码:

/* CSS代码 */
p:first-line {
    color:gray;
}
p::first-line {
    color:gray;
}
<!-- HTML代码 -->
<body>
    <p>早起的鸟儿有虫吃:其它鸟儿还在窝里睡觉,那些勤劳的鸟儿早早勤劳,很快就抓到虫子吃了,就是辛勤劳动的人可以得到好的回报。 早起的虫儿被鸟吃:其它虫儿还在窝里睡觉,而那些不安分的虫儿、因为早早起来活动被鸟发现了,最后成了鸟儿的腹中餐,否定了勤奋,问题不在于早起,而是该谁做什么就做什么,不该谁做什么就不要去做。</p>
</body>

  效果:

早起的鸟儿有虫吃:其它鸟儿还在窝里睡觉,那些勤劳的鸟儿早早勤劳,很快就抓到虫子吃了,就是辛勤劳动的人可以得到好的回报。 早起的虫儿被鸟吃:其它虫儿还在窝里睡觉,而那些不安分的虫儿、因为早早起来活动被鸟发现了,最后成了鸟儿的腹中餐,否定了勤奋,问题不在于早起,而是该谁做什么就做什么,不该谁做什么就不要去做。

 

   c. E:before/E::before

    设置在对象前(依据对象树的逻辑结构)发生的内容。用来和content属性一起使用。

  例子源代码:

/* CSS代码 */
p:before {
    content:"广州是个好地方,";color:gray;
}
p::before {
    content:"广州是个好地方,";color:gray;
}
<!-- HTML代码 -->
<body>
    <p>高楼大厦,四通八达。</p>
</body>

  效果:

高楼大厦,四通八达。

 

   d. E:after/E::after

   设置在对象后(依据对象树的逻辑结构)发生的内容。用来和content属性一起使用。

  例子源代码:

/* CSS代码 */
p:after {
    content:"高楼大厦,四通八达。";color:gray;
}
p::after {
    content:"高楼大厦,四通八达。";color:gray;
}
<!-- HTML代码 -->
<body>
    <p>广州是个好地方,</p>
</body>

  效果:

广州是个好地方,

 

  e. E::placeholder

   设置对象文字占位符的样式。

  *::placeholder 伪元素用于控制表单输入框占位符的外观。

  *需要注意的是,除了Firefox是 ::[prefix]placeholder,其他浏览器都是使用 ::[prefix]input-placeholder。

  例子源代码:

/* CSS代码 */
input::-webkit-input-placeholder {      /*Chrome4.0+*/
    color: green;
}
input:-ms-input-placeholder {       /*IE10+*/
    color: green;
}
input:-moz-placeholder {        /*Firefox4-18*/
    color: green;
}
input::-moz-placeholder {       /*Firefox19+*/
    color: green;
}
<!-- HTML代码 -->
<body>
    <input type="text"  placeholder="请输入..."/>
</body>

  效果:

 

 

   f. E::selection

    设置对象被选择时的颜色。

  *需要注意的是,::selection只能定义被选择时的background-color,color及text-shadow (IE11尚不支持定义该属性)。

  例子源代码:

/* CSS代码 */
p::-moz-selection{
    background:#000;color:#f00;
}
p::selection{
    background:#000;color:#f00;
}

 

<!-- HTML代码 -->
<body>
    <h3>选中下面的文字,看看它的颜色</h3>
    <p>你选中这段文字后,看看它们的文本颜色和背景色,就能明白::selection的作用。</p>
</body>

  效果:

选中下面的文字,看看它的颜色

你选中这段文字后,看看它们的文本颜色和背景色,就能明白::selection的作用。

 

posted @ 2016-08-10 11:19  mossbaoo  阅读(520)  评论(3编辑  收藏  举报