美文网首页
CSS 选择器

CSS 选择器

作者: 大大大老猫 | 来源:发表于2019-04-13 22:24 被阅读0次

CSS 选择器

CSS 基本选择器及其扩展

CSS 基本选择器

  1. 通配符选择器 *
  2. 元素选择器 使用标签的名称
  3. 类选择器 使用 . 进行匹配
  4. ID 选择器 使用 # 进行匹配
  5. 后代选择器 使用空格进行匹配
>代码案例

```html
<style>
    * {   /* 通配符选择器 */
        margin: 0;
        padding: 0;
    }

    p { /* 元素选择器 */
        color: pink;
    }

    div {  /* 元素选择器 */ 
        width: 100px;
        height: 100px;
    }

    #test-id{  /* ID选择器 */
        font-size:24px;
    }

    .test-class{ /* 类选择器 */
        color:red;
    }

    .test-class p{  /* 后代选择器 */
        color:pink;
    }

</style>

<body>
    <div id="test-id" class="test-class">
        这是一个 div 块级元素
        <p>这是一个p标签</p>
    </div>
</body>

```

CSS 扩展选择器

  1. 直接后代选择器 使用 > 匹配

  2. 相邻兄弟选择器 使用 + 匹配

  3. 通用兄弟选择器 使用 ~ 匹配

  4. 选择器分组 使用 , 分组

    代码案例

    <style>
        .container>div {  /* 直接后代选择器 */
            border: purple 1px solid;
        }
    
        .div1+p { /* 相邻兄弟选择器 */
            color: pink;
        }
    
        .div1~p { /* 通用兄弟选择器 */
            border: springgreen 1px solid;
        }
    
        .test1,
        .test2,
        .test3 {  /* 选择器分组 */ 
            font-size: 50px;
            color: yellowgreen;
        }
    </style>
    
    <body>
        <div class="container">
            <div class="div1">1</div>
            <p>p1相邻兄弟</p>
            <div>
                div2
                <div>div2-1</div>
            </div>
            <div>3</div>
            <p>p2通用兄弟</p>
            <div class="test1">4</div>
            <div class="test2">5</div>
            <div class="test3">6</div>
            <div>7</div>
        </div>
    </body>
    
    

属性选择器

存在和值选择器

  1. [attr] 该选择器选择包含 arrt 属性的所有元素,不论 attr 的值如何。

  2. [attr=val] 该选择器仅选择 attr 属性被赋值为 val 的所有元素。

  3. [attr~=val] 表示带有 attr 命名的属性的元素,并且该属性是一个以空格作为分割的值列表,其中至少包含一个值为 val。

    代码案例

    <style>
        div[name] {  /* [attr] */
            background: dodgerblue;
        }
    
        div[name="dalaomao"] { /* [attr=val] */
            border: 1px solid pink;
        }
    
        div[name~="test"] {/* [attr~=val] */
            color: yellowgreen;
        }
    </style>
    
    <body>
        <div class="container">
            <div name="dalaomao">带name属性的div</div>
            <div name="test xss">测试2的div</div>
        </div>
    </body>
    

子串值属性选择器

  1. [attr|=val] 选择 attr 属性值为 val(包含val),或者val-开头的元素。

  2. [attr^=val] 选择 attr 属性值以 val(包含 val) 开头的元素。

  3. [attr$=val] 选择 attr 属性值以 val(包含 val) 结尾的元素。

  4. [attr*=val] 选择 attr 属性值中包含字符串 val 的元素。

    代码案例

    <style>
        ul>li[class|="atguigu"] {  /* [attr|=val] */
            border: 1px solid;
        }
    
        ul>li[class^="atguigu"] {/* [attr^=val] */
            border-color: yellowgreen;
        }
    
        ul>li[class$="guigu"] {/* [attr$=val] */
            background: deeppink;
        }
    
        ul>li[class*="-"]{/* [attr*=val] */
            background: deepskyblue;
        }
    </style>
    
    <body>
        <ul>
            <li class="atguigu">atguigu</li>
            <li class="atguigu-1">atguigu-1</li>
            <li class="atguigu-2">atguigu-2</li>
            <li class="atguigu-3">atguigu-3</li>
            <li class="atguigu-4">atguigu-4</li>
            <li class="guigu">guigu</li>
            <li class="guigu1">guigu1</li>
            <li class="guigu2">guigu2</li>
        </ul>
    </body>
    

伪类与伪元素选择器

链接伪类

以下三个伪类仅可以作用于 "链接" 上,故叫 “链接伪类”,又叫“锚点伪类”.

  1. :link 表示作为超链接,并指向一个未访问地址的所有锚。

  2. :visited 表示作为超链接,并指向一个已访问地址的所有锚。

  3. :target 表示一个特殊元素,它的 ID 是URI 的片段标识符。

    代码案例

    <style>
        /* link & visited 使用方法 */
        .container a:link {  /* :link */
            color: pink;
        }
    
        .container a:visited { /* :visited */
            color: green;
        }
    </style>
    
    <body>
        <div class="container">
            <a href="#">Click me.</a>
        </div>
    </body>
    

    target 面试题(用CSS实现选项卡)

    <style>
        * {
            padding: 0;
            margin: 0;
        }
    
        a {
            text-decoration: none;
            color: deeppink;
        }
    
        div {
            width: 200px;
            height: 200px;
            background: pink;
            display: none;
            font: 50px/200px "Copperplate";
        }
    
        :target{
            display: block;
        }
    
    </style>
    <body>
        <a href="#div1">div1</a>
        <a href="#div2">div2</a>
        <a href="#div3">div3</a>
        <div id="div1">DIV1</div>
        <div id="div2">DIV2</div>
        <div id="div3">DIV3</div>
    </body>
    

动态伪类

  1. :hover 表示鼠标悬浮到元素上时。

  2. :active 表示匹配被用户激活的元素(鼠标按下未抬起时)。

    代码案例

     <style>
         .container a:hover {  /* :hover */
             color: deeppink;
         }
    
         .container a:active {/* :active */
             color: deepskyblue;
         }
     </style>
    
     <body>
         <div class="container">
             <a href="#">Click me.</a>
         </div>
     </body>
    
    

表单伪类

  1. :enabled 匹配可编辑的表单

  2. :disabled 匹配被禁用的表单

  3. :checked 匹配被选中的表单

  4. :focus 匹配获取焦点的表单

    代码案例

     <style>
         .container input:enabled {  /* 可编辑的表单 背景色改为 粉色 */
             background: pink;
         }
    
         .container input:disabled { /* 禁用的表单 背景色改为 绿色 */
             background: green;
         }
    
         .container input:focus {  /* 表单获取焦点时背景颜色改为 深粉色 */
             background: deeppink;
         }
     </style>
    
     <body>
         <div class="container">
             <input type="text">
             <input type="text" disabled>
         </div>
     </body>
    
    

    自定义单选按钮案例

     <style>
         * {
             margin: 0;
             padding: 0;
         }
    
         label {
             float: left;
             width: 100px;
             height: 100px;
             border: 1px solid;
             border-radius: 50%;
             position: relative;
         }
    
         input {
             position: absolute;
             top: -50px;
             left: -50px;
             display: none;
         }
    
         span {
             position: absolute;
             border-radius: 50%;
             top: 0;
             left: 0;
             bottom: 0;
             right: 0;
         }
    
         input:checked+span {
             background: pink;
         }
     </style>
    
     <body>
         <label>
             <input type="radio" name="test" checked>
             <span></span>
         </label>
         <label>
             <input type="radio" name="test">
             <span></span>
         </label>
         <label>
             <input type="radio" name="test">
             <span></span>
         </label>
     </body>
    
    

结构性伪类

注意:

① index 的值从 1 开始计数.

② index 可以为变量 n (只能是 n)

  1. :nth-child(idnex) 系列

    :first-child

    :last-child

    nth-last-child(idnex)

    only-child 相当于 :first-child:last-child 或者 :nth-child(index):nth-last-child(index)

    代码案例

    <style>
        /*
            获取 ul 下边的所有子元素,并且匹配到第一个子元素,并且 这个子元素必须是 li.
        */
    
        /* 第一个是 li标签 的时候生效 */
        ul>li:nth-child(1) {
            color: palegreen;
        }
    
        /* 第一个标签是 p标签 的时候生效 */
        ul>p:first-child {
            color: deeppink;
        }
    
        /* 最后一个标签是 li标签 的时候生效 */
        ul>li:last-child {
            color: green;
        }
    
        /* 倒数第二个标签是 li标签 的时候生效 */
        ul>li:nth-last-child(2) {
            color: deepskyblue;
        }
    
        /* 只有一个 p标签 的时候生效 */
        ul>p:only-child {
            color: violet;
        }
    </style>
    
    <body>
        <ul>
            <p>我是 ul 的第一个 p 儿子</p>
            <li>1</li>
            <p>我是 ul 的第二个 p 儿子</p>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <a href="#">我是a标签</a>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
        </ul>
    </body>
    
  2. :nth-of-type(index) 系列

    :first-of-type

    :last-of-type

    :nth-last-type(index)

    only-of-type

    代码案例

    <style>
        /* 我要选择的是第二个 li标签 */
        ul>li:nth-of-type(2) {
            color: deeppink;
        }
    
        /* 我要选择的是倒数第二个 li标签 */
        ul>li:nth-last-of-type(2) {
            color: blueviolet;
        }
    
        /* 我要选择的是第一个 li标签 */
        ul>li:first-of-type {
            color: greenyellow;
        }
    
        /* 我要选择的是最后一个 li标签 */
        ul>li:last-child {
            color: hotpink;
        }
    
       
        /* 我要选择的是仅有的一个 a标签 */
        ul>a:only-of-type {
            color: yellowgreen;
        }
    </style>
    
    <body>
        <ul>
            <p>我就是一个 p1 .</p>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <a href="#">我是一个 a标签 </a>
            <li>7</li>
            <li>8</li>
            <p>我就是一个 p2 .</p>
        </ul>
    </body>
    
  3. :not

  4. :empty 内容必须是空的,有空格都不行,有 attr 没关系。

伪元素选择器

未完待续.

CSS 声明的优先级

相关文章

  • CSS选择器

    CSS 元素选择器CSS 选择器分组CSS 类选择器详解CSS ID 选择器详解CSS 属性选择器详解CSS 后代...

  • CSS选择器

    目录: CSS派生选择器 CSS元素选择器 CSS Id 和 Class选择器 CSS 属性选择器 CSS 派生选...

  • css选择器

    css选择器】 1.css属性选择器 2.css伪类选择器 3.css层次选择器

  • CSS 选择器

    CSS 选择器 CSS 基本选择器及其扩展 CSS 基本选择器 通配符选择器 * 元素选择器 使用标签的名称...

  • Sublime 学习web的css

    html + css + js css引用 css外部样式 css优先级 css的选择器 标签选择器 类选择器 i...

  • CSS选择器

    CSS选择器的作用 CSS 选择器用于定位我们想要给予样式的 HTML 元素。 CSS选择器的类型 CSS选择器大...

  • JQuery CSS选择器

    CSS普通选择器 选择器函数 CSS伪类选择器

  • CSS-选择器1-概述

    CSS选择器-系列文章 CSS选择器-系列文章下一节 CSS选择器2-类选择器CSS3参考手册

  • CSS选择器、优先级以及!important知识总结

    一、CSS选择器 关于CSS选择器,首先请看这里:CSS 选择器参考手册 通过以上,我们可以将CSS选择器分为以下...

  • CSS

    CSS规则 at 规则 CSS选择器 CSS选择器 继承与层叠 继承与层叠 CSS 属性 CSS 属性 CSS值 ...

网友评论

      本文标题:CSS 选择器

      本文链接:https://www.haomeiwen.com/subject/rekdwqtx.html