CSS3---选择器

1.结构性伪类选择器---:root从字面上我们就可以很清楚的理解是根选择器,他的意思就是匹配元素E所在文档的根元素。在HTML文档中,根元素始终是<html>。

2.“:root”选择器等同于<html>元素,简单点说::root{background:orange}与 html {background:orange;} 得到的效果等同。 建议使用:root方法。

  另外在IE9以下还可以借助“:root”实现hack功能

特别注意细节问题:当body{background:;}使用背景颜色,:root{}也使用背景颜色时,body里改变的只能是body里面内容颜色,剩下的都是root里定义的颜色。如果:root里没有指定背景颜色,则整体背景颜色为body定义的颜色。

3.:empty选择器表示的就是空。用来选择没有任何内容的元素,这里没有内容指的是一点内容都没有,哪怕是一个空格。p:empty {display: none;}​

4.:not选择器称为否定选择器,和jQuery中的:not选择器一模一样,可以选择除某个元素之外的所有元素。

5.:target选择器称为目标选择器,用来匹配文档(页面)的url的某个标志符的目标元素。

  1、具体来说,触发元素的URL中的标志符通常会包含一个#号,后面带有一个标志符名称

  2、:target就是用来匹配id为“brand”的元素(id="brand"的元素)。

  3、多个url(多个target)处理:就像上面的例子,#brand与后面的id="brand"是对应的,当同一个页面上有很多的url的时候你可以取不同的名字,只要#号后对的名称与id=""中的名称对应就可以了。

  4、

  #brand:target { background: orange; color: #fff; }

  #jake:target { background: blue; color: #fff; }

  #aron:target { background: red; color: #fff; }

  上面的代码可以对不同的target对象分别设置不的样式。

6.“:first-child”选择器表示的是选择父元素的第一个子元素的元素E。简单点理解就是选择元素中的第一个子元素,记住是子元素,而不是后代元素

7.“:last-child”选择器与“:first-child”选择器作用类似,不同的是“:last-child”选择器选择的是元素的最后一个子元素。例如,需要改变的是列表中的最后一个“li”的背景色,就可以使用这个选择器,

8.“:nth-child(n)”选择器用来定位某个父元素的一个或多个特定的子元素。其中“n”是其参数,而且可以是整数值(1,2,3,4),也可以是表达式(2n+1、-n+5)和关键词(odd、even),但参数n的起始值始终是1,而不是0。也就是说,参数n的值为0时,选择器将选择不到任何匹配的元素。

  经验与技巧:当“:nth-child(n)”选择器中的n为一个表达式时,其中n是从0开始计算,当表达式的值为0或小于0的时候,不选择任何匹配的元素

9.“:nth-last-child(n)”选择器和前面的“:nth-child(n)”选择器非常的相似,只是这里多了一个“last”,所起的作用和“:nth-child(n)”选择器有所区别,从某父元素的最后一个子元素开始计算,来选择特定的元素。

10.“:first-of-type”选择器类似于“:first-child”选择器,不同之处就是指定了元素的类型,其主要用来定位一个父元素下的某个类型的第一个子元素。

11.“:nth-of-type(n)选择器和“:nth-child(n)”选择器非常类似,不同的是它只计算父元素中指定的某种类型的子元素。当某个元素中的子元素不单单是同一种类型的子元素时,使用“:nth-of-type(n)”选择器来定位于父元素中某种类型的子元素是非常方便和有用的。在“:nth-of-type(n)”选择器中的“n”和“:nth-child(n)”选择器中的“n”参数也一样,可以是具体的整数,也可以是表达式,还可以是关键词。

12.“:last-of-type选择器和“:first-of-type”选择器功能是一样的,不同的是他选择是父元素下的某个类型的最后一个子元素

13.“:nth-last-of-type(n)选择器和“:nth-of-type(n)”选择器是一样的,选择父元素中指定的某种子元素类型,但它的起始方向是从最后一个子元素开始,而且它的使用方法类似于上节中介绍的“:nth-last-child(n)”选择器一样。

14.“:only-child选择器选择的是父元素中只有一个子元素,而且只有唯一的一个子元素。也就是说,匹配的元素的父元素中仅有一个子元素,而且是一个唯一的子元素。

15.::before::after这两个主要用来给元素的前面或后面插入内容,这两个常和"content"配合使用使用场景最多的就是清除浮动。不过这个属性对于img和input元素不起作用。

content配合CSS的伪类或者伪元素,一般可以做以下四件事情:

功能

功能说明

none

不生成任何内容

attr

插入标签属性值

url

使用指定的绝对或相对地址插入一个外部资源(图像,声频,视频或浏览器支持的其他任何资源)

string

插入字符串

在CSS中有一种清除浮动的方法叫“clearfix”。而这个“clearfix”方法就中就使用了“content”,只不过只是在这里插入了一个空格。如下所示:

.clearfix:before,

.clearfix:after {

       content:””;

       display:table;

}

.clearfix:after {

       clear:both;

       overflow:hidden;

}

 插入元素属性值的方法:

假设我们有一个元素:

<a href="##" title="我是一个title属性值,我插在你的后面">我是元素</a>

可以通过”:after”和”content:attr(title)”将元素的”title”值插入到元素内容“我是元素”之后:

a:after {

  content:attr(title);

       color:#f00;

}
“:first-line” 选择器匹配文本块的首行。
“:first-letter” 选择器选择文本块的首字母
在CSS3中除了结构性伪类选择器外,还有一种UI元素状态伪类选择器,这些选择器在共同特点是:指定的样式只有当前元素处于某种状态下时才起作用,在默认状态下不起作用。
在CSS3中,共有17种UI元素状态伪类选择器,分别是:E:hover E:active E:focus E:enabled E:disabled E:read-write E:read-only E:checked E:default
E:indeterminate E:selection E:invalid E:valid E:required E:optional E:in-range

16.在Web的表单中,有些表单元素有可用(“:enabled”)和不可用(“:disabled”)状态,比如输入框,密码框,复选框等。在默认情况之下,这些表单元素都处在可用状态。

17.在表单元素中,单选按钮和复选按钮都具有选中和未选中状态。(大家都知道,要覆写这两个按钮默认样式比较困难)。在CSS3中,我们可以通过状态选择器“:checked”配合其他标签实现自定义样式。而“:checked”表示的是选中状态。

18.“::selection”伪元素是用来匹配突出显示的文本。浏览器默认情况下,选择网站文本是深蓝的背景,白色的字体, 有的设计要求不使用上图那种浏览器默认的突出文本效果,需要一个与众不同的效果,此时“::selection”伪元素就非常的实用。不过在Firefox浏览器还需要添加前缀。

19.“:read-only”伪类选择器用来指定处于只读状态元素的样式。简单点理解就是,元素中设置了“readonly=’readonly’”

20.“:read-write”选择器刚好与“:read-only”选择器相反,主要用来指定当元素处于非只读状态时的样式。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>伪类选择器</title>
    <link href="index08.css" rel="stylesheet" type="text/css">
</head>
<body>
    <p>这是第一行内容<br/>这是第二行内容,哈哈哈哈哈哈</p>
    <hr/>
    <ul>
        <li>列表1</li>
        <li>列表2</li>
        <li>列表3</li>
        <li>列表4</li>
        <li>列表5</li>
        <li>列表6</li>
    </ul>
    <hr/>
<h2>
    hello world!你好中国!
</h2>
    <hr/>
    <table border="1px">
        <tr>
            <th>表格1</th>
            <th>表格2</th>
            <th>表格3</th>
        </tr>
        <tr>
            <td>内容1</td>
            <td>内容2</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>内容2</td>
            <td>内容3</td>
        </tr>
        <tr>
            <td>内容1</td>
            <td></td>
            <td></td>
        </tr>
    </table>
    <hr/>
    <a href="#a1">菜单1</a>
    <a href="#a2">菜单2</a>
    <a href="#a3">菜单3</a>
    <a href="#a4">菜单4</a>
    <div id="a1">
       <h3>菜单内容1</h3>
    </div>
    <div id="a2">
       <h3>菜单内容2</h3>
    </div>
    <div id="a3">
       <h3>菜单内容3</h3>
    </div>
    <div id="a4">
       <h3>菜单内容4</h3>
    </div>
<hr/>
    <div class="type1">
        <h3>标题1</h3>
        <a>链接1</a><br/>
        <a>链接2</a>
        <h3>标题2</h3>
        <h3>标题3</h3>
        <a>链接3</a>
        <h3>标题4</h3>
        <a>链接4</a>
        <h3>标题5</h3>
        <a>链接5</a>
        <h3>标题6</h3>
        <a>链接6</a>
    </div>
    <hr/>
    <input class="Text" type="text"name="name">
    <input class="Text" type="text"name="age">
    <input type="checkbox">金毛
    <input type="checkbox">萨摩耶
    <input type="checkbox">大狗狗
    <hr/>
    <script>
        function radio_change() {
            var radio1=document.getElementById("radio1");
            var radio2=document.getElementById("radio2");
            var text=document.getElementById("text1");
            if(radio1.checked){
                text.disabled="";
            }else{
                text.value="";
                text.disabled="disabled"
            }
        }
    </script>
    <div class="div">
        <input type="radio" id="radio1" name="radio" onchange="radio_change()">可用
        <input type="radio" id="radio2" name="radio" onchange="radio_change()">不可用
        <input type="text" id="text1" disabled>
    </div>

</body>
</html>
:root{
    background-color:lightpink;
}
body{
    margin: 30px;
    counter-reset: paracount;/*默认初始值为1,也可指定其他值*/
    background-color: darkseagreen;
}
p:first-line{
    color: cornflowerblue;
}
p:first-letter{
    font-size: 30px;
    color: #ff6471;
}
li:before{
    counter-increment: paracount;/*默认增值为1,也可指定其他值*/
    content:counter(paracount)".";
    /*content: "-----";*/
}
li:after{
    content: "*******";
    font-size: 10px;
    color: darkgray;
}
li:first-child{
    width: 150px;
    background-color: red;
}
li:last-child{
    width: 150px;
    background-color:darkviolet;/*紫色*/
}
li:nth-child(3){
    width: 150px;
    background-color:yellow;
}
li:nth-last-child(2){
    width: 150px;
    background-color:lightblue;
}
/*li:nth-last-child(odd){!*      倒着数为奇数行改变颜色   odd为奇数  even为偶数 *!*/
    /* 150px;*/
    /*background-color:lightblue;*/
/*}*/
body *:not(h2){
    font-style: italic;
}
:empty{/*内容为空白的时候运用这个样式      这里的例子是:表格内容为空的时候背景颜色变为黄色*/
    background-color: red;
}
table{
    border-collapse: collapse;
}
:target{
    background-color: #37b9ff;
    width: 200px;
}
.type1 h3:nth-of-type(odd){  /*只计算同类标签*/
    width: 200px;
    color: yellow;
}
.type1 a:nth-last-child(odd){/*计算是把h3和a标签一起进行计算的,也就是说所有子元素一起来计算   所以要想只计算同一类型的的样式需要使用 nth-of-type()*/
    width: 150px;
    color:lightblue ;
}
/*注意顺序不能颠倒*/
.Text:hover{
    background-color: cornflowerblue;
}
.Text:focus{
    background-color: brown;
}
.Text:active{
    background-color: yellow;
}
input[type="checkbox"]:checked{
    outline:2px  solid gold;
    background-color: blue;
}
.div input[type="text"]:enabled{
    background-color: yellow;
}
.div input[type="text"]:disabled{
    background-color: darkgray;
}

 

原文地址:https://www.cnblogs.com/yuxingyoucan/p/5375376.html