CSS选择器

  本节课给大家系统总结CSS选择器的概念,前面在讲解内部样式,引入style标签的时候, 讲解过通过元素名、类class、id三种方式给元素定义样式,从CSS选择器大的概念来看, 可以分别称为元素选择器、类.class选择器、id选择器,除了这三种最常用的还有大量 选择元素定义样式方式,比如通过符号*就可以定义所有元素遵守的样式。

通用选择器*

<style>
        *{
            padding: 0px;/*所有元素内边距为0*/
            margin: 0px;/*所有元素外边距为0*/
        }
    </style>

  在style样式里面使用符号a就意味着,a大括号里面的样式作用于所有超链接元素,使用符号*意味着所有的元素都要遵守*大括号里面的样式定义,比如你希望所有元素的内边距都是0,就可以使用*符号,这时你会想到 有些元素内边距不是0,会不会也被约束,前面说过不同样式定义方式的优先级问题。范围广的优先级低,通过类或者行内样式的方式都可以重新自定义其它内边距不是0的元素,会覆盖通过通用选择器定义的样式。如果你想把网站 的样式定义的简洁,代码少,就要把尝试把共同的样式抽象出来,就像编程中常常提到代码重用的编程思想。

关系选择器

<ul class="relation">
    <li>
        <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>

  使用后代选择器空格、子元素选择器>选择上面类relation定义的元素里面的第一层子元素li和内层所有的子元素li,注意空格与符号>的区别。

<style>
    .relation>li{
        /*选中.relation标记元素的子元素li,仅包含第一层*/
    }
    .relation li{
        /*选中.relation标记元素所有的子元素li*/
    }
</style>

动态伪类选择器

  其它的选择器约束的样式没有交互性,前面将结果一个伪类选择器hover鼠标事件,当鼠标移动到一个元素上时,hover定义的样式就会起作用,hover就是一个动态的选择器。 除了hover以外还有很多类似的动态选择器,语法格式都是约束的元素后面添加冒号:。

选择器link和visited

  大家使用原生的超链接元素应该有一个体验,点击过的超链接和没点击过的超链接显示的颜色不一样。 X:link{}定义超链接X没有被访问的时候显示的颜色,X:visited{}定义超链接X被访问后显示的颜色。

focus

  X:focus{}当鼠标单机输入框,文本框拥有输入焦点的时候显示的样式。