CSS3新特性-结构伪类选择器nth-child(n)

一、nth-child(n)

选择某个父元素的一个或多个特定的子元素

  1. n 可以是数字,关键字和公式
  2. n 如果是数字,就是选择第 n 个子元素, 里面数字从1开始…
  3. n 可以是关键字:even 偶数,odd 奇数
  4. n 可以是公式:常见的公式如下 ( 如果n是公式,则从0开始计算,但是第 0 个元素或者超出了元素的个数会被忽略 )
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        ul {
            margin: 50px auto;
            width: 1000px;
        }

        li {
            float: left;
            width: 40px;
            height: 40px;
            line-height: 40px;
            text-align: center;
            margin: 20px;
            list-style: none;
            border: 1px solid black;
            color: white;
            font-weight: 700;
        }

        /*------------------------------------*/
        /* 1.需求:选择所有的偶数li */
        /* li:nth-child(even)效果相同 */
        ul li:nth-child(2n) {
            background-color: pink;
        }

        /* 2.需求:选择所有的奇数li */
        /*li:nth-child(odd)效果相同 */
        ul li:nth-child(2n-1) {
            background-color: skyblue;
        }

        /* 3.需求:选择5的倍数的li */
        ul li:nth-child(5n) {
            color: red;
        }

        /* 4.需求:选择前五个li */
        /* 只能n写在前面 */
        /* n从0开始,运算结果为0结束,不包含0:-0+5/-1+5/-2+5/-3+5/-4+5/-5+5-0停止执行,不执行 */
        ul li:nth-child(-n+5) {
            background-color: bisque;
        }

        /* 5.需求:选择倒数五个li */
        ul li:nth-last-child(-n+5) {
            background-color: blueviolet;
        }

        /* 6.需求:选择第49-60的li */
        ul li:nth-child(-n+60):nth-last-child(-n+48) {
            background-color: darkgoldenrod;
        }

        /* 7.需求:选择第一个li */
        ul li:first-child {
            background-color: palegreen;
        }

        /* 8.需求,选择最后一个li */
        ul li:last-child {
            background-color: midnightblue;
        }

        /* 9.需求:选择第54个li */
        ul li:nth-child(54) {
            border-radius: 50%;
        }
    </style>
</head>

<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
        <li>10</li>
        <li>11</li>
        <li>12</li>
        <li>13</li>
        <li>14</li>
        <li>15</li>
        <li>16</li>
        <li>17</li>
        <li>18</li>
        <li>19</li>
        <li>20</li>
        <li>21</li>
        <li>22</li>
        <li>23</li>
        <li>24</li>
        <li>25</li>
        <li>26</li>
        <li>27</li>
        <li>28</li>
        <li>29</li>
        <li>30</li>
        <li>31</li>
        <li>32</li>
        <li>33</li>
        <li>34</li>
        <li>35</li>
        <li>36</li>
        <li>37</li>
        <li>38</li>
        <li>39</li>
        <li>40</li>
        <li>41</li>
        <li>42</li>
        <li>43</li>
        <li>44</li>
        <li>45</li>
        <li>46</li>
        <li>47</li>
        <li>48</li>
        <li>49</li>
        <li>50</li>
        <li>51</li>
        <li>52</li>
        <li>53</li>
        <li>54</li>
        <li>55</li>
        <li>56</li>
        <li>57</li>
        <li>58</li>
        <li>59</li>
        <li>60</li>
        <li>61</li>
        <li>62</li>
        <li>63</li>
        <li>64</li>
        <li>65</li>
        <li>66</li>
        <li>67</li>
        <li>68</li>
        <li>69</li>
        <li>70</li>
        <li>71</li>
        <li>72</li>
        <li>73</li>
        <li>74</li>
        <li>75</li>
        <li>76</li>
        <li>77</li>
        <li>78</li>
        <li>79</li>
        <li>80</li>
        <li>81</li>
        <li>82</li>
        <li>83</li>
        <li>84</li>
        <li>85</li>
        <li>86</li>
        <li>87</li>
        <li>88</li>
        <li>89</li>
        <li>90</li>
        <li>91</li>
        <li>92</li>
        <li>93</li>
        <li>94</li>
        <li>95</li>
        <li>96</li>
    </ul>
</body>

</html>

效果图:
在这里插入图片描述

二、与nth-of-type的区别

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>结构伪类选择器</title>
    <style>
        /* 先找到div里的第一个孩子,再看是不是p标签,不是就不执行 */
        div p:first-child {
            color: red;
        }

        /* 先找到div里面的p标签,再找p标签里的第一个 */
        div p:first-of-type {
            background-color: #f34;
        }
    </style>
</head>

<body>

    <div>
        <h1>1</h1>
        <p>1</p>
        <p>2</p>
        <p>3</p>
    </div>
</body>

</html>

区别:

  1. nth-child 对父元素里面所有孩子排序选择。即先找到第n个孩子,然后看看是否和指定子元素匹配,是就执行,不是就不执行。
  2. nth-of-type 对父元素里面指定子元素进行排序选择。 即先去匹配指定子元素,然后在里面找第n个孩子 。

分享完毕,不妥之处,敬请批评指正,谢谢大家!

发布了4 篇原创文章 · 获赞 5 · 访问量 92

猜你喜欢

转载自blog.csdn.net/al654123/article/details/104560803