CSS优先级
一.CSS代码出现的几个位置
多重样式(Multiple Styles):如果外部样式、内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况。
一般情况下,优先级如下:(外部样式)External style sheet <(内部样式)Internal style sheet <(内联样式)Inline style
还有一种不常用的CSS导入方式:@import url(mycss/haha.css),这种方式是页面显示出来之后在加载css,所以页面一开始没有css定义显示比较混乱,过了一会儿才加载css显示正常,页面会闪烁一下.
二.选择器的优先级
每个选择器都有一个优先级.这个优先级可以定义为五元组(a,b,c,d,e)
第一个数字(a)表示style属性,即内联样式。
第二个数字(b)表示id选择器,b表示id选择器的个数。
第三个数字(c)表示class选择器,c表示类及伪类的个数,包括class(.btn)和属性css选择器(比如li[id=red])。
第四个数字(d)表示tag选择器,d表示元素和伪元素(如first-child)的个数。
第五个数字(e)表示这个句子是整个css系统中的第几个选择器.
当判断一个选择器的优先级时,按照这五元组进行比较,第一个相同比较第二个,前两个相同比较第三个...第五个数字肯定不同,于是优先级就排出来了.其实比较时比较五个数字比较费力,不如直接将他们乘以权值映射为一个int.浏览器实现时到底采用什么方式并不重要,重要的是明白这个道理.下面给出浏览器解析css和渲染元素的伪代码.
def initSelectors():
for selector in css:
selector.priority=0
#这是第几个选择器
selector.priority+=css.indexOf(selector)
if selector is important:
selector.priority+=10000
if selector is inline:#内联样式至高无上,如果为内联样式,其它几个的值肯定是0
selector.priority+=len(css)**4
else:
for i in selector:
if i is idSelector:
selector.priority+=len(css)**3
elif i is classSelector:
selector.priority+=len(css)**2
elif i is tagSelector:
selector.priority+=len(css)
def renderElements():
for element in html:
attrTable={}
for selector in selectors:
if element is selector:
for attrbute in selector:
if attrTable[attrbute]==null or attrTable[attrbute].priority<selector.priority:
attrTable[attrbute]=selector[attrbute]
attrTable[attrbute].priority=selector.priority
render(element,attrTable)
通用css选择器(*)是0优先级。
如果两个CSS选择器有同样的优先级,在样式表中后面的那个起作用。
CSS选择器只有4种:
- 内联样式
style='font-size:18px;'内联样式其实相当于无名选择器 - id选择器
- class选择器,伪类选择器
- tag选择器,伪元素选择器
三.选择器与选择器之间的三种连接关系
- 空格表示后代
- +表示兄弟
- >表示子代
四.最近jquery中用到的几个选择器
$('.answer input[value=0]').attr('checked',true)
$(".question_answers").find('input:first').attr('checked',true)
$("button[id^=peer]").click();
$("label:contains('正确'):not(:contains('部分'))").each(function(){$(this).prev().attr('checked',true)})
CSS优先级的更多相关文章
- css选择器及css优先级
三个css选择器:id选择器#test1{ }.class选择器.test2{ }.标签选择器div{ }对三个div:<div>我是普通div</div>.<div i ...
- 关于CSS的优先级,CSS优先级计算
原则一: 继承不如指定原则二: #id > .class > 标签选择符原则三:越具体越强大原则四:标签#id >#id ; 标签.class > .class CSS优先级权 ...
- css 优先级 机制
多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External style sheet ...
- z-index、display、selector选择器优先级css优先级面试用到
z-index:控制元素叠放顺序,哪个z-index数值越大,那个优先被叠放在上面. relative.absolute.fixed这三种情况可以使用z-index. static不可以使用. dis ...
- css优先级和层叠
css优先级和层叠 1.优先级 计算方法: a.行内样式 b.id选择器的数量 c.类,伪类和属性选择器的数量 d.标签选择器和伪元素选择 ...
- 使用background和background-image对CSS优先级造成影响
在写一个关于背景图的CSS时候发现一个奇怪的现象, 原图: 如下代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...
- CSS优先级算法是如何计算?
CSS的specificity特性或非凡性,它是一个衡量css优先级的一个标准, 既然的标准就有判定规定和计算方式,specificity用一个四位数来表示, 更像四级从左到右,左的最大级,一级大于一 ...
- CSS优先级总结(转载)
样式的优先级 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External styl ...
- css优先级计算
主要的css选择器有id,class,tag,[],:,::等,而通常需要对其优先级进行判断的有id,class,tag,另外内联样式和!important也和css的优先级有关系. 如果将这五种不同 ...
- css 优先级
css优先级的四大原则: 原则一: 继承不如指定 如果某样式是继承来的永远不如具体指定的优先级高.例子1:CODE:<style type="text/css"> &l ...
随机推荐
- 使用Adminlite + ASP.NET MVC5(C#) + Entityframework + AutoFac + AutoMapper写了个api接口文档管理系统
一.演示: 接口查看:http://apidoc.docode.top/ 接口后台:http://apiadmin.docode.top/ 登录:administrator,123456 二.使用到的 ...
- ASP.NET MVC——URL路由
在MVC之前,ASP.NET假设请求的URL与服务器上的文件之间有关联,服务器接受请求,并输出相应的文件.而在引入MVC后,请求是由控制器的动作方法来处理的.为了处理URL,便引入了路由系统. 首先我 ...
- js正则表达式校验非正整数:^((-\d+)|(0+))$
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- pyhton学习笔记(基础五:数据类型、数据运算)
数据类型初识 1. 数字 整数:2是一个整数的例子 长整数 不过是大一些的整数 3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3*10-4. (-5+4j ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 7.外部接口的设计
目 录 第七章 外部接口的设计... 2 7.1 插件接口... 2 7.2 图形显示接口... 3 7.3 ...
- WCF实现事件通知相关应用技巧介绍
WCF实现事件通知是一个比较容易掌握的知识点,不过在实现的过程中,我们还是需要注意一些事项,以保证功能的完善性. WCF中有一些方法的应用对于初学者来说还是比较容易应用.只要熟练的联系这些方法操作,一 ...
- 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(前言)
一直希望能够搭建一个完整的,基础Web框架,方便日后接一些外快的时候,能够省时省力,终于花了一周的时间,把这个东西搞定了.特此写下此博客,一来是纪念,二来是希望能够为别人提供方便.顺带说一下,恩,组合 ...
- iOS提交AppStore后申请加急审核
提交审核后进去下面链接申请加急审核链接:https://developer.apple.com/appstore/contact/appreviewteam/index.html 在I would l ...
- 关于addSubView需要注意的事项 -今天吃了一个大亏
addSubview: Adds a view to the end of the receiver’s list of subviews. 译:增加一个视图到接收者的子视图列表中. - (void) ...
- Java之递归求和的两张方法
方法一: package com.smbea.demo; public class Student { private int sum = 0; /** * 递归求和 * @param num */ ...