run in this way,   no why,   only for you heart
CSDN博客(点击进入) CSDN
51CTO(点击进入) 51CTO

CSS3 结构伪类选择器

今天在B站看了一个CSS3 关于结构伪类选择器的视频,总结加深下印象:

选择器 作用
first-child 匹配子集的第一个元素
last-child 匹配子集的最后一个元素
nth-child(n) 根据索引n匹配值
nth-last-child(n) 根据索引n匹配值,索引从最后一个开始数
nth-of-type(n) 根据标签Type和索引n匹配值
nth-last-of-type(n) 根据标签Type和倒数索引n匹配值
only-child 当标签下有且仅有一个匹配的元素时,才会有作用,如果有多个元素不会有作用

首先画一个基于ul的横向列表,后面伪类选择器会基于此ul列表展开:

	<!DOCTYPE html>
	<html lang="en">
	<head>
	    <meta charset="UTF-8">
	    <meta name="viewport" content="width=device-width, initial-scale=1.0">
	    <meta http-equiv="X-UA-Compatible" content="ie=edge">
	    <title>结构伪类选择器</title>
	    <style>
	        * {
	            padding: 0px;
	            margin: 0px;
	        }
	
	        .clearfix{
	            clear: both;
	            overflow: auto;
	        }
	
	        .demo {
	            border: 1px solid #ccc;
	            width: 300px;
	            margin: 50px auto;
	            padding: 10px;
	        }
	
	        .demo li {
	            float: left;
	            list-style: none;
	            padding: 2px;
	            border: 1px solid #ccc;
	            margin-right: 4px;
	            width: 20px;
	        }
	
	        .demo a{
	            display: block;
	            width: 20px;
	            height: 20px;
	            text-align: center;
	            border-radius: 10px;
	            background-color: rgb(180, 51, 255);
	            text-decoration: none;
	        }
			/*
				伪类选择器操作区
			*/
	    </style>
	</head>
	<body>
	    <div class="demo clearfix">
	        <ul class="clearfix">
	            <li><a href="">1</a></li>
	            <li><a href="">2</a></li>
	            <li><a href="">3</a></li>
	            <li><a href="">4</a></li>
	            <li><a href="">5</a></li>
	            <li><a href="">6</a></li>
	            <li><a href="">7</a></li>
	            <li><a href="">8</a></li>
	            <li><a href="">9</a></li>
	            <li><a href="">10</a></li>
	        </ul>
	    </div>
	</body>
	</html>

在这里插入图片描述
1. first-child:匹配子集的第一个元素。
    将demo下第一个li标签背景变为红色:

	.demo li:first-child{
	    background-color: red;
    }

在这里插入图片描述
2. last-child:匹配子集的最后一个元素。
    将demo下最后一个li标签背景变为红色:

	.demo li:last-child{
    	background-color: red;
    }

在这里插入图片描述
3. nth-child(n):根据索引n匹配值
    nth-child(n):匹配所有索引
    nth-child(2n) 或 nth-child(even):匹配偶数索引
    nth-child(2n+1) 或 nth-child(odd):匹配奇数索引
    nth-child(n+4):匹配第4个以后的索引,包括第4个
    nth-child(3n+1):匹配1,4,7…索引值(当n=0时,n=1时,n=2时…)

    将demo下奇数索引li标签背景变为红色:

	.demo li:nth-child(2n+1){
     	background-color: red;
    }

在这里插入图片描述
4. nth-last-child(n):根据索引n匹配值,索引从最后一个开始数,与 nth-child(n) 效果相反
    将demo下倒数的奇数索引li标签背景变为红色:

	.demo li:nth-last-child(2n+1){
    	background-color: red;
    }

在这里插入图片描述
5. nth-of-type(n):根据标签Type和索引n匹配值,与 nth-child(n) 效果类似,但加了一个标签筛选
    如果ul下第一个标签是span标签,使用选择器nth-child(n):ul下的第一个li标签索引值是2,而使用选择器nth-of-type(n):ul下的第一个li标签索引值是1。

6. nth-last-of-type(n):根据标签Type和倒数索引n匹配值,与 nth-of-type(n)效果类似,但索引是倒数开始

7. only-child:当标签下有且仅有一个匹配的元素时,才会有作用,如果有多个元素不会有作用。

	.demo li:only-child{
    	background-color: red;
    }
	<div class="demo clearfix">
        <ul class="clearfix">          
            <li><a href="">10</a></li>
        </ul>
    </div>

在这里插入图片描述

8. only-of-type:当标签下有且仅有一个匹配的元素且元素内容为空时,才会有作用,如果有多个元素或元素内不为空不会有作用。

	.demo li:only-of-type{
       background-color: red;
    }
    <div class="demo clearfix">
        <ul class="clearfix">          
            <li></li>
        </ul>
    </div>

在这里插入图片描述


有的伪类选择器可能在某些浏览器无法使用,可以使用下面这个网站查看选择器对浏览器的兼容性。
https://caniuse.com/

posted @ 2019-12-01 23:39  _小龙人  阅读(188)  评论(0编辑  收藏  举报