zoukankan      html  css  js  c++  java
  • css中的声明冲突

    css中会出现一种非常常见的现象:声明冲突

    而规则之间属性相同,值却不同,这就是声明冲突

    冲突并不是一个错误,那如何解决冲突?

    层叠机制用于处理声明冲突(浏览器会自动触发层叠机制)

    层叠的过程:

    一.比较优先级(优先级高的胜出,低的淘汰)

     一个声明的优先级与它的来源和重要性有关

    来源(优先级的从低到高):

    1.浏览器默认样式表中的声明

    2.用户样式表中的普通声明

    3.作者样式表中的普通声明

    4.作者样式表中的重要声明

    5.用户样式表中的重要声明

    重要性:若属性值后跟上! important 就表示这是一条重要声明,反之则是普通声明。

    若优先级相同,则比较特殊性

    二.比较特殊性

    每个声明都有一个权重(特殊性、特指度 Specificity Weight)

    特殊性高的会被保留

    一个声明的特殊性,取决于规则适用范围的大小

    规则适用范围越大,特殊性越低

    规则适用范围越小,特殊性越高

    特殊性从高到低:行内样式——id选择器——类选择器——元素选择器——通配符选择器

    在比较特殊性时,每个冲突的声明会生成四个数字分组(a、b、c、d)来比较特殊性

    a越大,特殊性越高,若a相同,比较b...

    a:若声明是行内样式,则为1,飞否则为0(<h1  style = "box">)

    b:规则中ID选择器的个数(#)

    c:规则中类选择器、伪类选择器、属性选择器的个数(类选择器: .    伪类::link   :hover  属性:input[type="text"])

    d:规则中元素选择器、伪元素选择器的个数(伪元素选择器(以两个冒号开始)  例:.testselect::selection 例:i::before)

    若特殊性相同,比较源次序

    三.源次序

    最后出现的声明胜出,其他的淘汰

    该规则实际应用:

    1.css reset代码前置

    2.a元素的伪类书写顺序

    复用:元素可以有多个class属性值,共用其中一个属性值放相同的样式

  • 相关阅读:
    Daily Scrum 12.14
    Daily Scrum 12.13
    sss
    sss
    sss
    sss
    sss
    sss
    sss
    sss
  • 原文地址:https://www.cnblogs.com/ohmyrose/p/8047859.html
Copyright © 2011-2022 走看看