在我们为元素添加样式的时候,或多或少会出现一个元素会有几个不同规则的样式。有#id的,有.class,直接标签元素的,还有各种组合起来的选择器。那CSS到底如何解决这些冲突呢,我们这次专门来探讨一下。

  CSS也称层叠样式,层叠(cascade)也就是说,将重复定义的样式,先通过重要度的筛选,再通过一定的规则,重新排列覆盖。而这个规则就是,选择器的特殊性。(重要度就不详细说明了,一般认为!important>行内样式>内联样式表>外联样式表>浏览器默认样式)

  特殊性

每种选择器都会默认分配一个数值,然后将一个规则的选择器数值相加,计算出其特殊性。

  选择器的特殊性有4个等级,a,b,c,d(正常来说,一个规则的选择器应该不会超过10个,这样我们可以转化成以10为基数计算特殊性)

  • a:行内样式,那么a = 1 。
  • b:ID选择器的总数 。
  • c:类、伪类和属性选择器的总数。
  • d:类型选择器和伪元素选择器总数。

或许这样说,有点难以理解,我们可以举栗子。

style = ""             ------------ 特殊性:1000

#warp #content{}       ------------ 特殊性:200

#content .smClass{}    ------------ 特殊性:110

div.#content{}         ------------ 特殊性:101

#content{}             ------------ 特殊性:100

p.class1.class2        ------------ 特殊性:21

p.class1               ------------ 特殊性:11

.class                 ------------ 特殊性:10

div p{}                ------------ 特殊性:2

p{}                     ------------ 特殊性:1

当然,若一个元素的两套规则特殊性相等,则后定义的规则优先。

通过这样一番描述,相信大家对选择器的特殊性有了一定的了解。所以当出现了一些样式定义却未显示的情况时,要看一下是否有样式覆盖的情况,合理使用样式表选择器的优先级。

大家赶紧动手去试试吧!

(若有不准确或错误的地方,希望大家指出,我会赶紧修改)

CSS选择器的特殊性的更多相关文章

  1. css选择器的特殊性值

    今天从前端那拿来写好的页面,就开始动工,首先,照旧处理导航栏高亮的问题, 说到处理高亮的问题,不同的人会有不同的方法,比如: //类名为nav的元素下的第n个a元素 .nav a:nth-of-typ ...

  2. CSS选择器的特殊性和LOVE HA

    在CSS中当几个相同的选择器对同一个元素有不同的规则时,该怎么应用这些规则呢? 答案就是:CSS特殊性(CSS specificity) 选择器特殊性有选择器本身组成,特殊性由4个数值表述:0, 0, ...

  3. 深入理解CSS选择器优先级的计算

    选择器的优先级关系到元素应用哪个样式.在CSS2.1的规范(http://www.w3.org/TR/2009/CR-CSS2-20090908/cascade.html#specificity)中是 ...

  4. css优先级之特殊性

    在前端开发的时候,css构建样式规则,这个时候我们会遇到一个问题:当我们对同一个元素做多个样式规则,其中发生了冲突的时候,css是如何选择最终呈现的样式 如下: div{ color:red; } d ...

  5. CSS选择器特殊性与重要性

    特殊性 在编写CSS代码的时候,我们会出现多个样式规则作用于同一个元素的情况,例如 <!-- HTML --> <header> <nav class="nav ...

  6. CSS选择器与CSS的继承,层叠和特殊性

    什么是选择器?选择器{样式;},在{}之前的部分就是"选择器","选择器"指明了{}中的"样式"的作用对象,也就是"样式" ...

  7. CSS选择器中的特殊性

    我们来看一下一个简单的例子: <!DOCTYPE html><html lang="en"><head> <meta charset=&q ...

  8. CSS选择器的权重与优先规则?

    我们做项目的时候,经常遇到样式层叠问题,被其他的样式覆盖,或者写的权重不高没效果,对权重没有具体的分析,做了一个总结. css继承是从一个元素向其后代元素传递属性值所采用的机制.确定应当向一个元素应用 ...

  9. css选择器万年不变的优先级和权重

    我们在使用CSS对网页元素定义样式时经常会遇到这种情况:要对一般元素应用一般样式,然后在更特殊的元素上覆盖它们.那么我们怎么样来保证我们所新定义的元素样式能覆盖目标元素上原有的样式呢? 在CSS中,会 ...

随机推荐

  1. IOS代码

    //// MJViewController.m// UITableView-编辑模式//// Created by mj on 13-4-11.// Copyright (c) 2013年 itcas ...

  2. NDK(15)在ndk代码中注册和注销native函数

    转自:  http://www.cnblogs.com/canphp/archive/2012/11/13/2768937.html C和C++注册native函数的方式大致上相同,下面给出具体的代码 ...

  3. 从unity3d官网下载教程

    http://unity3d.com/learn/tutorials/projects/tanks-tutorial 官网的教程提供的下载链接https://www.assetstore.unity3 ...

  4. bzoj1934: [Shoi2007]Vote 善意的投票

    最大流..建图方式都是玄学啊.. //Dinic是O(n2m)的. #include<cstdio> #include<cstring> #include<cctype& ...

  5. UVa 12096 The SetStack Computer【STL】

    题意:给出一个空的栈,支持集合的操作,求每次操作后,栈顶集合的元素个数 从紫书给的例子 A={{},{{}}} B={{},{{{}}}} A是栈顶元素,A是一个集合,同时作为一个集合的A,它自身里面 ...

  6. [转]ASP.NET数据库连接字符串总结

    这个不难,而且很重要,但总忘,找了篇比较全的,作为资料. 原文链接http://developer.51cto.com/art/201107/275406.htm 关于数据库链接字符串的相关知识,我们 ...

  7. Java [Leetcode 112]Path Sum

    题目描述: Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding ...

  8. Java [Leetcode 110]Balanced Binary Tree

    题目描述: Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced b ...

  9. 02day2

    油滴扩展 [问题描述] 在一个长方形框子里,最多有 N(0≤N≤6)个相异的点.在其中任何-个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能 ...

  10. LeetCode: 3SumClosest

    Title : Given an array S of n integers, find three integers in S such that the sum is closest to a g ...