css权重及优先级问题

几个值的对比

初始值

指定值

计算值

应用值

CSS属性的 指定值 (specified value)会通过下面3种途径取得: 在当前文档的样式表中给这个属性赋的值,会被优先使用。

如果在当前文档的样式表中没有给这个属性赋值,那么它会尝试从父元素那继承一个值。

如果上面的两种途径都不可行,则把CSS规范中针对这个元素的这个属性的初始值作为指定值

应用值(used value)是完成所有计算后最终使用的值。计算出CSS属性的最终值有三个步骤。

首先,指定值specified value 取自样式层叠 (选取样式表里权重最高的规则), 继承 (如果属性可以继承则取父元素的值),或者默认值。

然后,按规范算出 计算值computed value。

最后,计算布局(尺寸比如 auto 或 百分数 换算为像素值 ), 结果即 应用值used value。

这些步骤是在内部完成的,脚本只能使用 window.getComputedStyle 获得最终的应用值。

CSS 2.0 只定义了 计算值 computed value 作为属性计算的最后一步。 CSS 2.1 引进了定义明显不同的的应用值,这样当父元素的计算值为百分数时子元素可以显式地继承其高宽。 对于不依赖于布局的 CSS 属性 (例如 display, font-size, line-height)计算值与应用值一样,否则就会不一样

优先级

优先级是浏览器是通过判断哪些属性值与元素最相关以决定并应用到该元素上的。优先级仅由选择器组成的匹配规则决定的。

优先级是根据由每种选择器类型构成的级联字串计算而成的。他是一个对应匹配表达式的权重。

如果优先级相同,靠后的 CSS 会应用到元素上。

下列是一份优先级逐级增加的选择器列表:

通用选择器(*)

元素(类型)选择器

类选择器

属性选择器

伪类

ID 选择器

内联样式

!important 规则例外 Link

当 !important 规则被应用在一个样式声明中时,该样式声明会覆盖CSS中任何其他的声明, 无论它处在声明列表中的哪里. 尽管如此,!important规则还是与优先级毫无关系.使用 !important 不是一个好习惯,因为它改变了你样式表本来的级联规则,从而使其难以调试。

一些经验法则:

Never 永远不要在全站范围的 css 上使用!important

Only 只在需要覆盖全站或外部 css(例如引用的 ExtJs 或者 YUI )的特定页面中使用!important

Never 永远不要在你的插件中使用!important

Always 要优化考虑使用样式规则的优先级来解决问题而不是!important

怎样覆盖掉 !important

很简单,你只需要再加一条 !important 的CSS语句,将其应用到更高优先级的选择器(在原有基础上添加额外的标签、类或 ID 选择器)上;

或是保持选择器一样,但添加的位置需要在原有声明的后面(优先级相同的情况下,后边定义的会覆盖前边定义的)。

:not 伪类例外

:not 否定伪类在优先级计算中不会被看作是伪类. 事实上, 在计算选择器数量时还是会把其中的选择器当做普通选择器进行计数.

无视DOM树中的距离

有如下样式声明: body h1 { color: green;}html h1 { color: purple;}

当它应用在下面的HTML时: Here is a title!

浏览器会将它渲染成purple,即后面的优先级更高

外边距合并

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。

外边距合并初看上去可能有点奇怪,但是实际上,它是有意义的。以由几个段落组成的典型文本页面为例。第一个段落上面的空间等于段落的上外边距。如果没有外边距合并,后续所有段落之间的外边距都将是相邻上外边距和下外边距的和。这意味着段落之间的空间是页面顶部的两倍。如果发生外边距合并,段落之间的上外边距和下外边距就合并在一起,这样各处的距离就一致了。

可替换元素

CSS 里,可替换元素是这样一些元素, 其展现不是由CSS来控制的。这些外部元素的展现不依赖于CSS规范。 典型的可替换元素有

、 、 以及 、 这样的表单元素。 一些元素,比如 和 ,只在一些特殊情况下是可替换元素。 使用了 CSS content 属性插入的对象被称作匿名的可替换元素。

CSS在某些情况下会对可替换元素做特殊处理,比如计算外边距和处理值为 auto 的情况。

需要注意的是,一部分(并非全部)可替换元素,本身具有尺寸和基线,会被一些 CSS 属性用到,比如 vertical-align。

LINKS

MDN

w3school

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

html css控制优先级,css权重及优先级问题_html/css_WEB-ITnose相关推荐

  1. CSS Specificity--CSS特性、权重、优先级---CSS specificity规则、

    2019独角兽企业重金招聘Python工程师标准>>> CSS Specificity As mentioned above, CSS styles follow an order ...

  2. CSS控制段落和文字属性和背景

    一.CSS控制段落: 段落缩进:text-indent:20px; 文字方向:text-align:center; 文字修饰:text-decoration:underline:下划线 overlin ...

  3. CSS样式优先级与权重计算方式

    CSS一共有四种样式控制方式:行内样式.内嵌样式.链接样式.导入样式(@import).选择器则有标签选择器,类名选择器,ID选择器,和伪标签选择器四种.那么它们的优先级与权重又是计算的呢? 首先上权 ...

  4. CSS常用的选择器和优先级的权重问题

    CSS注释 CSS修改页面中的所有标签,必须借助选择器选中. 选择器中,可以写多对CSS属性,用{}包裹: 每个属性名与属性值之间用:分隔,多对属性之间,必须用;来分隔 选择器{  属性1:属性值1; ...

  5. CSS中的层叠性、继承性、优先级、权重

    css三大特性: 三大特性:层叠性.继承性.优先级 层叠性: 指多种css样式的叠加,是浏览器处理多种css样式冲突的能力,如果给一个元素通过不同或者相同的选择器设置相同的属性但属性值不同时,权重相同 ...

  6. css样式优先级和权重问题

    内联样式: <div style="font-size: 12px;">姓名</div> 外部样式: <link rel="styleshe ...

  7. html盒子优先级设置,CSS 基础(盒模型、选择器、权重、优先级)

    层叠样式表(Cascading Style Sheets) 盒模型 盒模型包含四部分:margin.border.padding.content.如果不使用doctype声明,浏览器默认使用自己的模式 ...

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

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

  9. CSS权重与优先级-详细分析

    本文总结内容: CSS 的权重与优先级相关问题 我们有没有被 CSS 权重以及优先级相关的问题困扰过; 虽然我们一直在使用 CSS 来实现我们的页面效果, 但是对于这些概念都是很模糊的; 这里就来为大 ...

最新文章

  1. Matlab与线性代数--广义逆矩阵
  2. 设置TextView下划线并响应点击事件(SpannableString)
  3. 易能变频器说明书故障代码_易能变频器故障代码大全是什么?E013故障是什么?...
  4. 技术人的灵魂 3 问,阿里工程师如何解答?
  5. JavaScript内核系列 第8章 面向对象的JavaScript(下)
  6. linux目录所属用户和组,管理用户所属的用户组《 Linux 文件与目录权限 》
  7. 程序员面试金典 - 面试题 16.24. 数对和(双指针/哈希map)
  8. C++ 中map容器
  9. AutoJs学习-TTS抢语音红包
  10. python怎么启动编程_启动Python编程有哪些方法?
  11. 打开IIS管理器的两种方式
  12. fiddler 手机 https 抓包
  13. 为什么unity中我的模型是红颜色的
  14. windows程序设计相关思想
  15. 2022-2028全球与中国锂离子电池正极材料市场现状及未来发展趋势
  16. 洛谷 P1772 [ZJOI2006]物流运输
  17. 在React中使用防抖节流
  18. PyQt5技术分享:制作一个美观的Dock栏
  19. 山东自考c语言程序设计停考了吗,2019年10月山东自考停考二十多个专业 自考专业停考怎么办...
  20. java unicode u003d_这一串是 unicode 编码吗?怎么还原成字符串?

热门文章

  1. 工作225:当前导致name报错
  2. 工作49:loaction注意
  3. 前端学习(2366):条件编译跨端兼容
  4. 前端学习(1816):前端面试题之作用域和值类型传递的参数1
  5. 前端学习(1598):ref转发
  6. 玩转oracle 11g(38):rman备份-全库恢复
  7. java学习(71):GUL边界布局管理器
  8. slide简介(大数据技术)
  9. A Quantization-Friendly Separable Convolution for MobileNets
  10. Zabbix 3.0 配置企业微信报警(注册---测试)