css3新增了选择器,还有人不知道吗?

简介: 前言CSS3给我们新增了选择器,可以更加便捷,更加自由的选择目标元素,你还不知道吗?属性选择器属性选择器可以根据元素特定属性的来选择元素。这样就可以不用借助于类或者 id 选择器。

image.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /*1.必须是input,且包含value这个属性*/
        input[value]{
            color:red;
        }
        /* 2. 选择属性=值得元素 */
        input[type="password"]{
            background-color: pink;
        }
        /* 3.匹配具有class属性且值以 icon 开头的 div元素 */
        div[class^="icon"]{
            color: blue;
        }
        /*4.匹配具有class属性且值以data结尾的div元素 */
        div[class$="data"]{
            color:green;
        }
        /*5.匹配具有class属性且值包含om的div元素 */
        div[class*="om"]{
            color: orange;
        }
    </style>
</head>
<body>
    <input type="text">
    <input type="text" value="请输入用户名">
    <input type="password" name="" id="">
    <div class="icon1">小图标1</div>
    <div class="icon2">小图标2</div>
    <div class="icon3">小图标3</div>
    <div class="icon4">小图标4</div>
    <div class="icon5">小图标5</div>
    <div class="icon1-data">我是阿牛</div>
    <div class="icon2-data">阿牛</div>
    <div class="icon3-data">哇</div>
    <div class="xom1">你好</div>
    <div class="yom2">好</div>
</body>
</html>

image.png

image.png

区别:


nth - child 对父元素里面所有孩子排序选择(序号是固定的)先找到第 n 个孩子,然后看是否和 E 匹配。

nth - of - type 对父元素里面指定子元素进行排序选择。先去匹配 E ,然后再根据E找第 n 个孩子。

注: nth - child ( n )选择某个父元素的一个或多个特定的子元素。


n 可以是数字,关键字和公式。

n 如果是数字,就是选择第 n 个子元素,里面数字从1开始…。

n 可以是关键字: even 偶数, odd 奇数。

n 可以是公式;常见的公式如下(如果 n 是公式,则从0开始计算,但是第0个元素或者超出了元素的个数会被忽略)

image.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 选择ul里的第一个孩子li */
       ul li:first-child{
           background-color: red;
       }
       /* 选择ul里的最后一个孩子li*/
       ul li:last-child{
           background-color: green;
       }
       /* 选择ul里的第2个孩子li */
       ul li:nth-child(2){
           background-color: skyblue;
       }
        /* 选择ol里的第偶数个孩子li */
        ol li:nth-child(even){
            background-color: blue;
        }
         /* 选择ol里的第奇数个孩子li */
        ol li:nth-child(2n+1){
            background-color: yellow;
        }
    </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>
    </ul>
    <ol>
        <li>我是第1个孩子</li>
        <li>我是第2个孩子</li>
        <li>我是第3个孩子</li>
        <li>我是第4个孩子</li>
        <li>我是第5个孩子</li>
        <li>我是第6个孩子</li>
        <li>我是第7个孩子</li>
        <li>我是第8个孩子</li>
    </ol>
</body>
</html>

image.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* :nth-child()会把所有盒子都排序,然后看前面的div,所以下面这个匹配不上 */
        section div:nth-child(1) {
            background-color: green;
        }
        /* :nth-of-type()会把指定的盒子排序,先去找到前面的div,然后看是第几个div */
        section div:nth-of-type(2){
            background-color: red;
        }
    </style>
</head>
<body>
    <section>
        <p>你</p>
        <div>我</div>
        <div>他</div>
    </section>
</body>
</html>

image.png

image.png

注意:


before 和 after 创建一个元素,但是属于行内元素。

新创建的这个元素在文档树中是找不到的,所以我们称为伪元素。

语法: element :: before {}

before 和 after 必须有 content 属性。

before 在父元素内容的前面创建元素,after 在父元素内容的后面插入元素。

伪元素选择器和标签选择器一样,权重为1 。

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
      div{
          width: 200px;
          height: 200px;
          background-color: skyblue;
        }
        /* 创建的是行内元素,设置宽高要转换为行内块或者浮动 */
      div::before{
          /* content属性是必须要写的 */
          content: '我';
          float: left;
          width: 30px;
          height: 30px;
          background-color: pink;
      }
      div::after{
          content: '阿牛';
      }
    </style>
</head>
<body>
    <div>
    </div>
</body>
</html>

image.png

相关文章
|
2月前
|
前端开发
CSS:高级选择器
CSS:高级选择器
40 1
|
2月前
|
前端开发 JavaScript
CSS:基础选择器
CSS:基础选择器
47 1
|
22天前
|
前端开发 JavaScript UED
深入理解与应用 CSS 伪类选择器
【10月更文挑战第23天】通过以上对 CSS 伪类选择器的深入探讨,我们可以更好地理解和应用它们,为网页设计和开发带来更丰富、更灵活的样式效果。同时,要注意在实际应用中根据具体情况合理选择和使用伪类选择器,以达到最佳的设计效果和用户体验。
31 2
|
2月前
|
前端开发 JavaScript 容器
谁动了我的选择器?深入理解CSS选择器优先级
该文章详细解释了CSS选择器的工作原理,包括不同种类选择器的权重计算规则,并通过实例说明了如何解决样式冲突问题,确保所需的样式能够正确应用到目标元素上。
|
2月前
|
前端开发
前端基础(四)_CSS层叠样式表_什么是css_css样式的引入方式_样式表的优先级_样式选择器
本文详细介绍了CSS(层叠样式表)的基本概念、语法规则、引入方式、样式表的优先级和样式选择器。文章解释了CSS的作用,展示了如何在HTML中通过行内样式、内部样式和外部样式引入CSS,讨论了不同CSS选择器的优先级和如何确定最终的样式应用。此外,还强调了使用`!important`规则时的优先级高于行内样式。
86 1
|
1月前
|
前端开发
CSS常见的选择器
CSS常见的选择器
18 0
|
2月前
|
前端开发 JavaScript
【CSS】选择器
【CSS】选择器
|
3月前
|
前端开发
CSS3选择器
【8月更文挑战第23天】CSS3选择器。
32 1
|
3月前
|
前端开发
CSS中的层级选择器&伪类选择器和伪元素选择器
CSS中的层级选择器&伪类选择器和伪元素选择器
|
3月前
|
前端开发 数据安全/隐私保护
探秘CSS类型选择器:解码前端设计的神秘密码!
探秘CSS类型选择器:解码前端设计的神秘密码!
探秘CSS类型选择器:解码前端设计的神秘密码!