一、优先级

  • 不同级别
    1. 在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式。
    2. 作为style属性写在元素内的样式
    3. id选择器
    4. 类选择器
    5. 元素选择器
    6. 通配符选择器
    7. 浏览器自定义或继承

    总结排序:!important > 行内样式 > ID选择器 > 类选择器 > 元素 > 通配符 > 继承 > 浏览器默认属性

  • 同一级别
  • (1) 同一级别中后写的会覆盖先写的样式

    (2) 同一级别css引入方式不同,优先级不同
    总结排序:内联(行内)样式 > 内部样式表 > 外部样式表 > 导入样式(@import)。

    对于选择器优先级,还可以通过计算权重值来比较。(请参见:狠狠戳我)

    例1、
    test.css文件

    #my{background:blue;}

    html文件

    <link rel="stylesheet" type="text/css" href="./css/test.css">
    <style>
    /*这里是内部样式*/
    #my{background:red;}
    </style><span id="my">333</span>

    执行结果:span最后为红色。
    说明css引入方式优先级:内部样式表 > 外部样式表

    例2、

     <link rel="stylesheet" type="text/css" href="./css/test.css"><style>#my{background:red;}</style><span id="my" style="background: yellow">333</span>

    执行结果:span最后为黄色。
    说明css引入方式优先级:内联(行内)样式 > 内部样式表 > 外部样式表

    二、选择器

    1、普通选择器
    选择器 eg 描述
    通用选择器 * * 选择所有元素。
    类选择器 .class .message 选择 class="intro" 的所有元素。
    id选择器 #id #head 选择 id="firstname" 的所有元素。
    元素选择器 el p 选择所有 <p> 元素。
    选择器分组 el,el div,p 选择所有 <div> 元素和所有 <p> 元素。
    后代选择器 el el div p 选择 <div> 元素内部的所有 <p> 元素。
    子元素选择器 el > el div>p 选择 <div> 的第一子代的 所有<p> 元素。
    相邻兄弟选择器 el + el div+p 选择与<div>同级且紧接在其后的第一个 <p> 元素
    2、属性选择器
    类型 eg 描述
    [attribute] [target] 选择带有 target 属性所有元素
    [attribute=value] [target=_blank] 选择 target="_blank" 的所有元素
    [attribute~=value] [title~=flower] 选择 title 属性包含单词 "flower" 的所有元素
    [attribute¦=value] [lang¦=en] 选择 lang 属性值以 "en" 开头的所有元素。
    [attribute^=”value”] [abc^=”def”] 选择 abc 属性值以 “def” 开头的所有元素
    [attribute$=”value”] [abc$=”def”] 选择 abc 属性值以 “def” 结尾的所有元素
    [attribute*=”value”] [abc*=”def”] 选择 abc 属性值中包含子串 “def” 的所有元素
    3、伪类
    类型 eg 描述
    :link a:link 选择所有未被访问的链接
    :visited a:visited 选择所有已被访问的链接
    :active a:active 选择正在被点击的活动链接
    :hover a:hover 选择鼠标指针位于其上的链接
    :focus input:focus 选择获得焦点的 input 元素
    :lang(language) p:lang(it) 选择带有以 "it" 开头的 lang 属性值的每个 <p> 元素

    注:link、visited、active、hover的顺序,为LoVe HAte

    4、伪元素
    类型 eg 描述
    :before p:before 在每个 <p> 元素的内容之前插入内容
    :after p:after 在每个 <p> 元素的内容之后插入内容
    :first-letter p:first-letter 选择每个 <p> 元素的首字母
    :first-line p:first-line 选择每个 <p> 元素的首行
    :first-child p:first-child 选择属于父元素的第一个子元素的每个 <p> 元素
    el1~el2 p~ul 选择前面有 <p> 元素的每个 <ul> 元素。
    :first-of-type p:first-of-type 选择属于其父元素的首个 <p> 元素的每个 <p> 元素。
    :last-of-type p:last-of-type 选择属于其父元素的最后 <p> 元素的每个 <p> 元素。
    :only-of-type p:only-of-type 选择属于其父元素唯一的 <p> 元素的每个 <p> 元素。
    :only-child p:only-child 选择属于其父元素的唯一子元素的每个 <p> 元素。
    :nth-child(n) p:nth-child(2) 选择属于其父元素的第二个子元素的每个 <p> 元素。
    :nth-last-child(n) p:nth-last-child(2) 同上,从最后一个子元素开始计数。
    :nth-of-type(n) p:nth-of-type(2) 选择属于其父元素第二个 <p> 元素的每个 <p> 元素。
    :nth-last-of-type(n) p:nth-last-of-type(2) 同上,但是从最后一个子元素开始计数。
    :last-child p:last-child 选择属于其父元素最后一个子元素每个 <p> 元素。
    :root :root 选择文档的根元素。
    :empty p:empty 选择没有子元素的每个 <p> 元素(包括文本节点)。
    :target #news:target 选择当前活动的 #news 元素。
    :enabled input:enabled 选择每个启用的 <input> 元素。
    :disabled input:disabled 选择每个禁用的 <input> 元素
    :checked input:checked 选择每个被选中的 <input> 元素。
    :not(selector) :not(p) 选择非 <p> 元素的每个元素。
    ::selection ::selection 选择被用户选取的元素部分。

    三、一些注意

    1、id选择器

    www3school中所说:“一个id选择器 只能在一个文档中使用一次“,
    但在css实践中你会发现 两个同样的id都会生效。

    <style>
    span{margin: 5px;}
    #my{background:red;}
    </style><span id="my">666</span><span id="my">333</span>

    执行结果为:

    问:那为什么官方文档只让使用一次呢?

    答:若使用两次,第一影响就是不能通过W3的校验。
    在页面显示上,目前的浏览器css还都允许你犯这个错误,用多个相同ID“一般情况下”也能正常显示。
    但是当你需要用JavaScript通过id来控制这个div,那就会出现错误。因为js里获取DOM是通过getElementById,而如果页面出现同一个id几次,这样就获取不到了。所以id要有唯一性。

    2、多类选择器

    类选择器很简单,那多类选择器呢?好好看下面的例子及注释。
    www3school
    例1:2个类

    <style type="text/css">
    .important {font-weight:bold;}
    .warning {font-style:italic;}/*.important和.warning之间不能有空格*/
    /*.warning.important {background:silver;}颠倒顺序执行结果不变*/
    .important.warning {background:silver;}
    </style><p class="important">This paragraph is very important.</p>
    <p class="warning">This is a warning.</p>
    <p class="important warning">This paragraph is a very important warning.</p>
    

    执行结果:

    例2:3个类
    注:如果一个多类选择器包含类名列表中没有的一个类名,匹配就会失败。

    <style>
    .important {font-weight:bold;}
    .warning {font-style:italic;}
    /*.important和.warning之间不能有空格*/
    /*.warning.important {background:silver;}颠倒顺序执行结果不变*/
    .important.warning {background:silver;}
    </style><p class="important">This paragraph is very important.</p>
    <p class="warning">This is a warning.</p>
    <p class="important urgent warning">This paragraph is a very important warning.</p>

    执行结果:同上

CSS选择器及优先级 总结相关推荐

  1. 详解CSS选择器、优先级与匹配原理

    选择器种类 严格来讲,选择器的种类可以分为三种:标签名选择器.类选择器和ID选择器.而所谓的后代选择器和群组选择器只不过是对前三种选择器的扩展应用.而在标签内写入style=""的 ...

  2. CSS选择器的优先级的相关介绍

    css选择器的优先级 使用不同的选择器,选中同一个元素并且设样式的时候, 这样样式就会产生冲突,最终到底采用哪一个选择器定义的样式,由选择器的优先级(权重)决定,优先级高的优先显示 优先级规则(权重值 ...

  3. 【CSS笔记】CSS选择器的优先级(权重)

    目录 1.1.选择器的优先级 1.2.CSS选择器权重 1.1.选择器的优先级 CSS选择器的优先级顺序如下所示: 内联样式(style) > id选择器 > class选择器 > ...

  4. CSS选择器的优先级是怎样的?

    CSS选择器的优先级是:内联 > ID选择器 > 类选择器 > 标签选择器 到具体的计算层面,优先级是由 A .B.C.D 的值来决定的,其中它们的值计算规则如下: A 的值等于 1 ...

  5. css选择器的优先级

    1. 引言 选择器类型过多将导致一些问题,是什么问题呢?咱们直接举例子说明. 上图中,css中的两个选择器都是针对<span>的,而且两个设置的颜色不一样,这里的<span>到 ...

  6. [转]《精通css》笔记1:css选择器与优先级

    本文转自:http://www.cnblogs.com/webmoon/archive/2012/12/02/2798183.html css选择器 一.基础选择器 css基础选择器有标签选择器.类选 ...

  7. css选择器的优先级和权重问题

    CSS选择器的种类: 1.id选择器如:(id="name",id="name_txt)(*name) 2.class选择器(如:class="head&quo ...

  8. 一张图搞定CSS选择器的优先级

    0 总览 如果发生CSS的冲突问题, 即A样式与B样式冲突 1 首先比较CSS样式的来源不同的来源有不同的优先级如果来源相同, 即同源时, 则进入下一阶段2 比较是否为内联样式如果A样式与B样式同源, ...

  9. CSS——选择器及优先级

    一.CSS选择器的种类 标签选择器:div 类选择器:.container id选择器:#child1 后代选择器:.container div,表示container类里面的所有div标签 子选择器 ...

  10. css选择器的优先级,以及用法

    目录 前言 一.css选择器 二.css选择器优先级排序 三.css选择器的总结 1.  !important 2.内联选择器 3.id选择器 4.类别选择器 5.属性选择器(内容较多) 6.伪类选择 ...

最新文章

  1. 零起点学算法24——求正弦和余弦
  2. SQL语句中 left join 后用 on 还是 where,区别大了!
  3. 显示并查询纯真官方最新IP地址的免费代码
  4. vc 6.0 显示文件全路径_Linux常用命令大全(非常全!!!)
  5. Tomcat使用shutdown.bat关闭会将其他Tomcat关掉的问题
  6. 【Java网络编程(四)】手写TCP聊天室——控制台版
  7. html之关于空白和空白字符
  8. C语言之程序中内存的来源:栈 堆 数据段
  9. 【Flink】Rowtime timestamp is null. Please make sure that a proper TimestampAssigner is defined and th
  10. stl之截取:以一段字符串截取字符串
  11. Linux常用50条命令
  12. HTML + CSS + JS知识点复习(第一次)
  13. Taro框架中开发H5使用微信分享
  14. u3d计算向量间夹角
  15. 后羿采集器怎么导出数据_后羿SEO:如何用后羿采集器查收录?(附详细步骤图)...
  16. 管程法----生产者和消费者
  17. 操作系统中的管程是什么概念呢?
  18. uniapp 无法启动手机照相机
  19. 三维目标识别算法综述
  20. 手动制作U盘启动盘(确保纯净的win系统)

热门文章

  1. 大数据(二)大数据相关的技术
  2. APP创业——时不待人
  3. Ubuntu 16.04.5 LTS 下载地址
  4. 不会做UI自动化测试?一起设计框架再实践吧
  5. java json 下划线_为什么rest接口返回json建议采用下划线形式,不要用驼峰
  6. 【ubuntu18.04安装】128G u盘安装ubuntu18.04
  7. Dynamic ReLU 解读
  8. ManagementClass类解析和C#如何获取硬件的相关信息
  9. phpMyAdmin必须启用Cookies 才能登录的解决办法
  10. 微信小程序设置 本地图片为背景图