• CSS 样式引入方式、常用选择器以及优先级权重的计算


    常用的几种样式

    内联样式(行内样式)

    为元素添加一个style属性,属性值即为css样式。

    <html>
        <head>
            <title>内联样式</title>
        </head>
        <body>
            <div style="background: red;">内联样式</div>
        </body>
    </html>
    

    内部样式表(内嵌样式)

    在head标签下添加一个style元素标签,并在标签内编写css样式。

    <html>
        <head>
            <title>内部样式表</title>
            <style>
                *{
                    margin: 0;
                    padding: 0;
                }
                body{
                    font-size: 12px;
                }
            </style>
        </head>
        <body></body>
    </html>
    

    外部样式表(外联样式)

    将页面需要的CSS写在一个单独的扩展名为.css的文件中,并用link元素引用。

    <html>
        <head>
            <title>外部样式表</title>
            <link rel="stylesheet" type="text/css" href="..."/>
        </head>
        <body></body>
    </html>
    

    导入样式表

    导入样式和链接样式比较相似,采用import方式导入CSS样式表,在HTML初始化时,会被导入到HTML文件中,成为文件的一部分,类似第二种内嵌方式。

    <html>
        <head>
            <title>外部样式表</title>
            <style type="text/css">
                <!--
                @import url("style.css");
                -->
            </style>
        </head>
        <body></body>
    </html>
    

    不同类型的样式编写方式权重顺序

    • 就近原则
    • 内嵌样式 > 内部样式表 > 外联样式表 > 导入样式表

    CSS选择器分类

    基础选择器

    类型 含义
    * 通用元素选择器,匹配任何元素
    Element 标签选择器,匹配所有使用E标签的元素
    .className, Element.className class选择器,匹配所有id属性等于className的Element元素
    #idName, Element#idName id选择器,匹配所有id属性等于idName的Element元素

    组合选择器

    类型 含义
    E,F 多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔
    E F 后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔
    E>F 子元素选择器,匹配所有E元素的子元素F
    E+F 毗邻元素选择器,匹配所有紧随E元素之后的同级元素
    E~F 匹配任何在E元素之后的同级F元素

    属性选择器

    类型 含义
    [attr] 匹配所有具有attr属性的元素,不考虑它的值
    [attr=val] 匹配所有attr属性等于“val”的元素
    [attr~=val] 匹配所有attr属性具有多个空格分隔的值,其中一个值等于“val”的元素
    [attr|=val] 匹配所有attr属性具有多个连字号分隔的值、其中一个值以“val”开头的元素
    [attr^=value] 表示带有以 attr 命名的,且值是以"value"开头的属性的元素。
    [attr$=value] 表示带有以 attr 命名的,且值是以"value"结尾的属性的元素。
    [attr*=value] 表示带有以 attr 命名的,且值包含有"value"的属性的元素。

    伪类选择器

    类型 含义
    :first-child 匹配元素的第一个子元素
    :link 匹配所有未被点击的链接
    :visited 匹配所有已被点击的链接
    :active 匹配鼠标已经其上按下、还没有释放的元素
    :hover 匹配鼠标悬停其上的元素
    :focus 匹配获得当前焦点的元素
    :lang(c) 匹配lang属性等于c的元素
    :enabled 匹配表单中可用的元素
    :disabled 匹配表单中禁用的元素
    :checked 匹配表单中被选中的radio或checkbox元素
    ::section 匹配用户当前选中的元素
    :root 匹配文档的根元素,对于HTML文档,就是HTML元素
    :nth-child(n) 匹配其父元素的第n个子元素
    :nth-last-child(n) 匹配其父元素的倒数第n个子元素
    :nth-of-type(n) 与:nth-child()作用类似,但是仅匹配使用同种标签的元素
    :nth-last-of-type(n) 与:nth-last-child() 作用类似,但是仅匹配使用同种标签的元素
    :last-child 匹配父元素的最后一个子元素,等同于:nth-last-child(1)
    :first-of-type 匹配父元素下使用同种标签的第一个子元素,等同于:nth-of-type(1)
    :last-of-type 匹配父元素下使用同种标签的最后一个子元素,等同于:nth-last-of-type(1)
    :only-child 匹配父元素下仅有的一个子元素
    :only-of-type 匹配父元素下使用同种标签的唯一一个子元素
    :empty 匹配一个不包含任何子元素的元素
    :not(selector) 匹配不符合当前选择器的任何元素

    伪元素选择器

    类型 含义
    ::first-leter 匹配元素内容的第一个字母
    ::first-line 匹配元素内容的第一行
    :after, ::after 用来匹配已选中元素的一个虚拟的最后子元素。
    通常会配合content属性来为该元素添加装饰内容.这个虚拟元素默认是行内元素。
    :before, ::before 为当前元素创建一个子元素作为伪元素。
    常通过 content 属性来为一个元素添加修饰性的内容。 此元素默认为行内元素

    CSS样式权重优先级与计算

    从样式选择器看权重优先级

    important > 内嵌样式 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符

    权重值计算如下:

    • important的权重为最高
    • 内嵌样式的权重为1,0,0,0
    • ID的权重为0,1,0,0
    • 类的权重为0,0,1,0
    • 伪类的权重为0,0,1,0
    • 属性的权重为0,0,1,0
    • 标签的权重为0,0,0,1
    • 伪对象的权重为0,0,0,1
    • 通配符的权重为0,0,0,0

    我们把特殊性分为4个等级,每个等级代表一类选择器,每个等级的值为其所代表的选择器的个数乘以这一等级的权值,最后把所有等级的值相加得出选择器的特殊值。

    4个等级的定义如下:

    • 第一等:代表内联样式,如: style=””,权值为1000。
    • 第二等:代表ID选择器,如:#content,权值为100。
    • 第三等:代表类,伪类和属性选择器,如.content,权值为10。
    • 第四等:代表类型选择器和伪元素选择器,如div p,权值为1。

    计算效果图如下:

    权重值计算

    参考文档

  • 相关阅读:
    IntelliJ IDEA生成 Serializable 序列化 UID 的快捷键
    spring boot rabbitmq 多MQ配置 自动 创建 队列 RPC
    JAVA使用并行流(ParallelStream)时要注意的一些问题
    深入浅出Stream和parallelStream
    JAVA8 十大新特性详解
    redis客户端连接,最大连接数查询与设置
    如何在Java 8中愉快地处理日期和时间
    Jenkins:使用Git Parameter插件实现tag或分支的选择性构建
    Java正确获取客户端真实IP方法整理
    redis问题接囧办法及经验
  • 原文地址:https://www.cnblogs.com/damingge/p/6498813.html
Copyright © 2020-2023  润新知