zoukankan      html  css  js  c++  java
  • css基本选择器

    css基本选择器

    1,基础选择器(重点)

    * :通用选择器匹配任何元素 代码:*{ : }

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    *{color: red} <!--此处是对所有的标签进行设置-->
    </style>
    </head>
    <body>
    ni
    <div>hello div</div>
    <p>hello</p>
    <p>ni</p>
    <a href="">点击</a>

    </body>
    </html>

    效果是:所有标签都变红如下:

      

    标签选择器即通过标签名字来匹配

    代码:标签名{: } 

     如下:对div标签进行设置

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    div{color: red}<!--此处是对标签名为div的标签进行设置-->
        </style>
    </head>
    <body>
    <div>hello div</div>
    <p>hello</p>
    <p>ni</p>
    <a href="">点击</a>

    </body>

    class选择器,匹配所有class属性中包含class="info"的元素,class 可以重复

    匹配class 时一定要加上 .

    代码:.class值{ : } 字典中是设置内容。如下:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    .ss{color: gold}
    </style>
    </head>
    <body>

    <p class="ss">hello</p>
    <a class="ss">nide </a>
    <p>hao</p>
    </body>

    效果如下:

    标签名和class选择器可以一起使用如下:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    div.ss{color: green}
    </style>
    </head>
    <body>
    <div>who</div>
    <p class="ss">hello</p>
    <p class="ss">nide </p>
    <div class="ss">i am</div>
    <p>hao</p>
    </body>

    效果如下:

    id 选择器

     代码:#id值{ : } 字典中是设置内容

    在body中找一个id匹配的标签。(HTML中ID属性应唯一,相当于人的身份证号码)

    匹配id 时需要加上#。如下:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    #ss{color: gold} <!--此处是对Id='ss'的标签进行设置-->
    </style>
    </head>
    <body>

    <p id="ss">hello</p>
    <p>ni</p>
    <p>hao</p>
    </body>

    2,组合选择器

    注意嵌套规则:

    1. 块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,只能包含内联元素
    2. 有几个特殊的块级元素只能包含内联系元素,不能包含块级元素。如:h1,h2,h3,h4,h5,h6,p,dt
    3. li内可以包含div
    4. 块级元素与块级元素并列,内练元素与内练元素并列

    1)E,F 多元素选择器,同时匹配E元素或者F元素,E和F之间用逗号隔开(重点)。例如:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    div.ss,#tt{color: green}
    </style>
    </head>
    <body>
    <div>who</div>
    <p class="ss">hello</p>
    <p class="ss">nide </p>
    <div class="ss">i am</div>
    <p id="tt">hao</p>
    </body>

    效果图如下:

    2)E F 后代元素选择器 例如匹配所有属于E元素后代的F元素,E和F之间以空格隔开

    例如:将class ='div1'的div标签里边的所有div标签内容变红 代码如下:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    .div1 {color: red}
    </style>
    </head>
    <body>

    <div>who</div>

    <div class="div1">
    <div>
    <a href="">a</a>
    <p>ppp</p>
    <div>div3</div>
    </div>
    </div>

    </body>

     

    3)E>F  子元素选择器,匹配所有E元素的子元素F,仅找到E的下一层元素就不找了 之间用>隔开

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    .div1>.div2{color:green}
    </style>
    </head>
    <body>

    <div>who</div>

    <div class="div1">
    <div>
    <a href="">a</a>
    <p>ppp</p>
    <div>div3</div>
    </div>
    <p>p ele</p>
    <div class="div2">div2</div>
    </div>

    </body>

    4) E+F 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F 以+号隔开,只会向下找紧挨着的。

    例如:将<div>div after</div>标签变为背景色变为绿色代码如下:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    .div1+div{background-color: green}
    </style>
    </head>
    <body>

    <div>who</div>

    <div class="div1">
    <div>
    <a href="">a</a>
    <p>ppp</p>
    <div>div3</div>
    </div>
    <p>p ele</p>
    <div class="div2">div2</div>
    </div>
    <div>div after</div>
    </body>

    3,属性选择器(重点)

    可以自己设置属性

    1)E[att]  匹配所有具有att属性的E元素,不考虑它的属性值(注意:E在此处可以省略.

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    [alex]{color: red}
    </style>
    </head>
    <body>

    <div>who</div>
    <div alex="sb">alex</div>

    <div>div after</div>
    </body>

    2)E[att=val]   匹配所有att属性等于val的E元素

    例如:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    p[alex='sb']{color: red}
    </style>
    </head>
    <body>

    <div>who</div>
    <p alex="sb">alex1</p>
    <div alex="sb">alex2</div>

    <div>div after</div>
    </body>

    3)E[att~=val]   匹配所有att属性具有多个空格分隔的值,其中一个值等于val的E元素 例如:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    div[alex~='sb']{color: red}
    </style>
    </head>
    <body>

    <div>who</div>
    <p alex="ab sb">alex1</p>
    <div alex="bc sb">alex2</div>
    <div alex="ab sb">alex3</div>

    <div>div after</div>
    </body>

    4)E[att^=val]   匹配属性值以指定值val开头的每个元素

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    p[alex^='sb']{color: red}
    </style>
    </head>
    <body>

    <div>who</div>
    <p alex="sb ad">alex1</p>
    <div alex="sb ss">alex2</div>
    <div alex="ss">alex3</div>

    <div>div after</div>
    </body>

    5)E[att$=val]   匹配属性值以指定值val结尾的每个元素

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    div[alex$='ss']{color: red}
    </style>
    </head>
    <body>

    <div>who</div>
    <p alex="sb ad">alex1</p>
    <div alex="sb ss">alex2</div>
    <div alex="ss">alex3</div>

    <div>div after</div>
    </body>

    6)E[att$*val]   匹配属性值中包含指定值val的每个元素

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    div[alex*='sb']{color: red}
    </style>
    </head>
    <body>

    <div>who</div>
    <p alex="sb ad">alex1</p>
    <div alex="sb ss">alex2</div>
    <div alex="sa sb">alex3</div>

    <div>div after</div>
    </body>

    4,伪类

    CSS是伪类是用来给选择器添加一些特殊效果。

    anchor 伪类:专门用于控制链接的显示效果

    标签名:link (代表没有接触过的链接),用于定义了链接的常规状态

    标签名:hover(鼠标放在链接上的状态),用于产生视觉效果

    标签名:visited (访问过的链接)用于阅读文章,能清楚的判断已访问过的链接

    标签名:active(正在访问的链接)

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    a:link{
    color: red;
    }
    a:visited{
    color: blue;
    }
    a:hover{
    color: green;
    }
    a:active{
    color: yellow;
    }

    </style>
    </head>
    <body>
    <a href="123.png">hello-world</a>

    <div class="box">
    <div class="top"></div>
    <div class="botton"></div>
    </div>
    <div class="add">hello yuan</div>
    </body>

    补充:before after 伪类

    : before  p:before 在每个<p>元素之前插入内容

    : after  p:after 在每个<p> 元素之后插入内容

    p:before 在每个<p>元素的内容之前插入内容

    p:before{content:"hello":color:red}

    p:after 在每个<p>元素的内容之后插入元素

    p:after{content:"hello";color:red} 例如:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>

    .box{
    100px;
    }
    .top,.botton{
    100px;
    height: 100px;
    background-color: chartreuse;
    }
    .box:hover .botton{
    background-color: red;
    }
    .add:after{
    content: '欢迎登录';
    color: gold;
    }
    </style>
    </head>
    <body>
    <a href="123.png">hello-world</a>

    <div class="box">
    <div class="top"></div>
    <div class="botton"></div>
    </div>
    <div class="add">hello yuan</div>
    </body>

    效果图如下:

    鼠标经过图片任何地方,部分会出现效果 代码如下:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>

    .box{
    100px;
    }
    .top,.botton{
    100px;
    height: 100px;
    background-color: chartreuse;
    }
    .box:hover .botton{
    background-color: red;
    }

    </style>
    </head>
    <body>

    <div class="box">
    <div class="top"></div>
    <div class="botton"></div>
    </div>
    </body>

    5, CSS优先级和继承

    -CSS优先级:是指CSS样式在浏览器中被解析的先后顺序

    样式表中的特殊性描述了不同规则的相对权重,它的基本规则是:

    1,内联样式表的权值最高   style ="" -------1000

    2,统计选择符中的ID属性个数  #id---------- 100

    3,同级选择符中的CLASS属性个数  .class ------10

    4,统计选择符中的HTML标签名个数  p--------1

    按照这些规则将数字符串逐位相加,就得到最终的权重,然后在比较取舍时按照从左到右的顺序逐位比较。权重高的优先级别高

    例1:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    #div1{color: red}

    </style>
    </head>
    <div style="color: green" id="div1">hello</div>

    </body>

    ====》结果是字体颜色为绿色,因为style文本优先级最高

    ***************************************

    例子2:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    div{color: gold}
    .div1 .div3{color: red}
    #div1 .div3{color: green}

    </style>
    </head>
    <body>

    <div id="div1">
    <div class="div2">
    <div class="div3">
    嵌套优先级
    </div>
    </div>
    </div>

    </body>

    ======》结果是:字体为绿色,因为id的优先级高

    ************************************************

    例2:

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    div{color: gold}
    .div1 .div3{color: red}
    .div3{color: green}

    </style>
    </head>
    <body>

    <div class="div1">
    <div class="div2">
    <div class="div3">
    嵌套优先级
    </div>
    </div>
    </div>

    </body>

    ====》结果是:字体为红色 分析:因为.div1.div3的权重为10+10=20,最高,所以为红色字体

    附加说明:

    1,文本的样式优先级为1000 所以始终高于外部定义。这里文内样式指形如<div style="color:red>bleh</div>的样式,而外部定义指经由<link>或者<style>卷标定义的规则

    2,有 ! import声明的规则高于一切

    3,如果 !important声明冲突,则比较优先权

    4,如果优先权一样,则按照在源码中出现的顺序决定,后来者居上

    5,由继承而得到的样式没有specificity的计算,它低于一切其他的规则,比如:(全局选择符*定义的规则)

    -CSS继承

    继承是CSS的一个主要特征,他是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如BODY定义了颜色值,也会应用到整个段落的文本中

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    #div1{color: red}

    </style>
    </head>
    <div id="div1">
    hello1
    <div class="div2">
    hello2
    <div class="div3">
    嵌套优先级
    </div>
    </div>
    </div>

    </body>

    ===》结果是:hello1 hello2 以及嵌套优先级字体都为红色。

    注意:继承的权重的很低的,只要给加个颜色值,这个颜色值马上会覆盖掉它继承的颜色。

    此外,CSS继承也是由限制的,有一些属性不能被继承例如:border,margin,padding,background等

    <head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
    #div1{color: red}
    .div3{color: yellow}


    </style>
    </head>
    <div id="div1">
    hello1
    <div class="div2">
    hello2
    <div class="div3">
    嵌套优先级
    </div>
    </div>
    </div>

    </body>

    ===>结果是:嵌套优先级的字体为黄色,其余还是红色

  • 相关阅读:
    MATLAB简易验证码识别程序介绍
    [Java面试三]JavaWeb基础知识总结.
    [Java面试十二]数据库概念相关
    [Java面试十一]数据库总结.
    [Java面试十]浏览器跨域问题.
    [Java面试九]脚本语言知识总结.
    [Java面试八]Hibernate总结以及在面试中的一些问题.
    [Java面试七]Mybatis总结以及在面试中的一些问题.
    [Java面试六]SpringMVC总结以及在面试中的一些问题.
    [Java面试五]Spring总结以及在面试中的一些问题.
  • 原文地址:https://www.cnblogs.com/wode110/p/15030250.html
Copyright © 2011-2022 走看看