选择器和层叠

常见CSS属性:

属性color,示例 color:red,描述 设置元素内容的颜色

属性 text-align,示例 text-align:center,描述 设置元素内容的对齐 text-align,方式 text-align:center, 描述设置元素内容的对齐方式

属性 font-size, 示例 font-size:28px, 描述 设置元素内容的文字大小

属性 font-weight, 示例font-weight:bold, 描述 设置元素内容的文字粗细

属性 background, 示例 background:red, 描述 设置元素的背景颜色

CSS选择器:

CSS选择器,决定了将规则应用到哪些元素上;

三种基本选择器:元素选择器、类选择器、ID选择器;

除此之外,CSS还提供了大量的选择器。

选择器:

选择器组合;简单选择器;选择器分组。

简单选择器:元素选择器、类选择器、ID选择器、通配选择器、属性选择器、伪类选择器、伪元素选择器;前三种是常用的。

声明冲突:

作者样式表(有网页开发者书写的样式表):行内样式表、内部样式表、外部样式表;浏览器默认样式表;用户样式表。发生冲突时最终以作者样式表为主。

层叠概述:

什么是层叠:

层叠是一种机制,用于解决CSS声明冲突;多个相同的CSS声明(属性),应用到同一个元素上。

<h1 class="red">Lorem</h1>

影响它的CSS规则:

.red{color:red;}作者样式表

body h1{color:yellow; font-size:26px;}作者样式表

h1{color:green; text-align:center;}作者样式表

h1{display: block; font-size: 2em; font-weight: bold;}浏览器默认样式表

text-align:center

display: block

font-weight: bold

层叠

color:red

font-size:26px;

h1最终样式:

红色 “Lorem”

层叠是一种机制,用于解决CSS声明冲突;

层叠的整个过程,是浏览器根据规则自动完成的;

学习层叠,就是学习层叠过程中的规则;

学习层叠的目的,是为了在开发时更好的掌控元素的样式。

层叠的过程:

1.比较优先级:优先级低的声明会被淘汰,优先级高的声明胜出

2.比较特殊性:特殊性低的声明会被淘汰,特殊性高的声明胜出

3.比较源次序:源次序靠前的声明会被淘汰,靠后的声明胜出

经过这三个步骤,仅会有一个声明最终胜出,其他的全部被淘汰。

每一个声明都有一个优先级

当发生冲突时,优先级高的会保留,优先级低的会被淘汰

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

来源:作者样式表,浏览器默认样式表,用户样式表。

重要性:若属性值后跟上!important,则表示一条重要声明,否则,表示普通声明

示例:

color:red;普通声明。

color:red !important;重要声明。

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

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

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

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

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

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

比较优先级-示例:

<h1 class="red">Lorem</h1>

作者样式表:

.red{color:red;font-size:40px !important;}

h1{text-align:center;font-size:26px;}

浏览器默认样式表:

h1{display: block; font-size: 2em; font-weight: bold;}

最终结果实现:font-size:40px

比较特殊性-总体规则:

每一个声明都有一个特殊性(Specificity);

当发生冲突时,特殊性高的会保留,特殊性低的会被淘汰;

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

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

行内样式>ID选择器 >类选择器>元素选择器>通配符选择器

特殊性从高到低。

比较特殊性-示例:

<style>

#tp{color:black; text-align: center;}

.red{color:red; font-size:18px;}

p{color:yellow; font-weight:bold;}

*{color:white;}

</style>

<p id="tp" class="red" style="color:green">

Lorem ipsum dolor sit amet...

</p>

比较结果:color:green

在比较特殊性时,每一个冲突的声明,会生成4个数字(a,b,c,d),以比较特殊性。

a越大,特殊性越高,若a相同,比较b,b越大,特殊性越高,依次类推...

a: 若声明是行内样式,则为1,否则为0

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

c: 规则中类选择器、伪类选择器和属性选择器的个数

d: 规则中元素选择器、伪元素选择器的个数

页面中的一个<a>元素,受到下面规则的影响

在比较特殊性时,每一个冲突的声明,会生成4个数字(a,b,c,d),以比较特殊性;

a越大,特殊性越高,若a相同,比较b,b越大,特殊性越高,依次类推...

a: 若声明是行内样式,则为1,否则为0

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

c: 规则中类选择器、伪类选择器和属性选择器的个数

d: 规则中元素选择器、伪元素选择器的个数

当计算选择器分组的时候,要分开计算。

比较源次序:

body p{color:red}

div p{color:green}

特殊性相同,比较源次序,最后出现的声明胜出,其他的全部淘汰。

该规则的实际应用:

CSS Reset代码前置;

a元素的伪类书写顺序。

其中a元素的伪类书写顺序:

:hover 鼠标悬停到元素上的样式,适用于其他元素

:link 链接已被访问过的样式

:visited 链接已被访问过的样式(为了保护用户隐私,一些声明在该伪类中是无效的)

:active 链接被激活时的样式。

继承:

什么是继承:

继承(inherit),是指子元素会自动拥有父元素的某些CSS属性;

CSS代码:

body{color:red}

HTML代码:

<body>

body中的内容

<p>p元素中的内容</p>

</body>

p元素自动拥有了父元素body的color属性。

继承是自动发生的,开发者不需要书写任何额外的代码;

某些CSS属性并不不是所有CSS属性都可以被子元素继承;

可被继承的属性:color、font-size、font-weight、text-align

不可被继承的属性:background-color

继承须有传递性:

有些属性在页面的某个区域中具有通用性;

若没有继承,则必须为该区域的每个元素指定样式,导致代码重复臃肿。

什么是继承-示例:

继承发生的场景:

一个元素的某个CSS属性,只有满足下面两个条件,才会继承父元素:

该属性是可继承的属性

该属性在样式表中没有声明

强制继承:

强制继承,也叫做显式继承,是指将CSS属性值设置为 inherit

这样做,通常有两个原因:

为了继承有些不可继承的属性;

为了继承已被声明过的属性。

属性值计算过程简介:

color:?

h1 class="test">Lorem</h1>

CSS属性值:

color:

background-color:

text-align:

font-size:

font-weight:

display:

其他CSS属性:...

作者样式表:

.red{color:red;font-size:40px;}

h1{font-size:26px;}

div h1.red{font-size:3em; font-size:30px;}

浏览器默认样式表:

h1{display: block; font-size: 2em; font-weight: bold;}

2.层叠冲突:对样式表有冲突的声明使用层叠规则,确定CSS属性值

3.使用继承:对仍然没有值的属性,若可以继承,则继承父元素的值

4.使用默认值:对仍然没有值的属性,使用默认值

<h1 class="test">Lorem</h1>

CSS属性值:

color:red

background-color:

text-align:center

font-size:30px

font-weight:bold

display:block

其他CSS属性:...

这一条background-color:transparent

原文地址:https://www.cnblogs.com/zai1/p/10987233.html

时间: 2024-11-12 14:38:35

选择器和层叠的相关文章

CSS选择器,层叠

CSS选择器 .class .intro 选择 class="intro" 的所有元素. 1 #id #firstname 选择 id="firstname" 的所有元素. 1 * * 选择所有元素. 2 element p 选择所有 <p> 元素. 1 element,element div,p 选择所有 <div> 元素和所有 <p> 元素. 1 element?element div p 选择 <div> 元素内

CSS选择器、层叠、继承的那些事

题外话 最近看了<精通CSS,高级web标准解决方案>这本书.所以接下来的几篇文章结合自己的理解,参照本书做一下总结. 好,废话不多说,开始进入正题. CSS的前世今生 在很久很久以前,早期的浏览器只支持简易版本的HTML,使用HTML添加基本的格式和结构.但是随着web的流行,人们开始不满足于只有结构和文本的样式了!! 看一下1999年搜狐的页面: 人都是爱美的,所以HTML开始用来表现页面了,这样一来就web领域就变得一团糟了,试想一下当你把所有的样式都装在同一个HTML文档的时候,是多么

CSS选择器优先级(转)

原文:http://www.cnblogs.com/wangfupeng1988/p/4285251.html 另外,w3c有文章介绍了CSS选择器的特定性,见https://www.w3.org/TR/css3-selectors/#specificity 1. 引言 上一节<css知多少(5)——选择器>最后提到,选择器类型过多将导致一些问题,是什么问题呢?咱们直接举例子说明. 上图中,css中的两个选择器都是针对<span>的,而且两个设置的颜色不一样,这里的<span

jQuery常用选择器总结

jQuery常用选择器总结: 我们都知道jQuery是JavaScript(JS)的框架,它的语法简单使用方便,被广大开发人员青睐.现在我就它常用的并且十分强大的选择器的方式,做一个总结.鉴于它的选择器方式众多,我就自己平时工作之中所遇到的常见的方式做一个总结. 一,元素查找方式: $("#myElement")    选择id为myElement的元素,因为id在使用中是唯一的,所以这样的选择也是指定的不变的. $("div")    选择所有的div标签元素,返

css知多少(6)——选择器的优先级(转)

1. 引言 上一节<css知多少(5)--选择器>最后提到,选择器类型过多将导致一些问题,是什么问题呢?咱们直接举例子说明. 上图中,css中的两个选择器都是针对<span>的,而且两个设置的颜色不一样,这里的<span>到底听从谁的命令? 上面还是比较简单的,下面在来一个复杂的: 上图中的<li>该显示成什么颜色呢? 2. 特指度 要解决以上问题,我们需要引入一个概念--特指度(specificity).特指度表示一个css选择器表达式的重要程度,可以通过

CSS:结构和层叠

特殊性 特殊性(specificity):对于每个规则,用户代理会计算选择器的特殊性并将特殊性附加到规则中的各个声明.如果一个元素有两个或多个冲突的属性声明,有最高特殊性的声明就会胜出. 选择器的特殊性由选择器本身组件确定,特殊性值表述为4个部分.特殊性排序从左向右,特殊性值为1,0,0,0大于以0开头的所有特殊性值,不论后面的数是什么,以此类推. 对于选择其中给定的各个ID属性值+(0,1,0,0) 对于选择器中给定的各个类的属性值.属性选择或伪类+(0,0,1,0) 对于选择器中给定的各个元

CSS学习摘要-层叠和继承

当有多个选择器作用在一个元素上时,哪个规则最终会应用到元素上? 其实这是通过层叠机制来控制的,这也和样式继承(元素从其父元素那里获得属性值)有关. 元素的最终样式可以在多个地方定义,它们以复杂的形式相互影响.这些复杂的相互作用使CSS变得非常强大,但也使其非常难于调试和理解. 层叠 CSS 是 Cascading Style Sheets 的缩写,这暗示层叠(cascade)的概念是很重要的.在最基本的层面上,它表明CSS规则的顺序很重要,但它比那更复杂.什么选择器在层叠中胜出取决于三个因素(这

深入理解 CSS(Cascading Style Sheets)中的层叠(Cascading)

标题中的 Cascading 亦可以理解为级联. 进入正文,这是一个很有意思的现象.可以直接跳到 总结一下 部分,看完再回过头来阅读本文. 引子 假设我们有如下结构: <p class="txt" style="color:red">123456789</p> 上面的 p 标签只有一个内联 CSS,很明显,在没有其他样式的干预下,文本 .txt 的颜色肯定就是红色的. 如果此时,我们希望改变 .txt p 标签元素的内容文字的颜色,但是不能去

CSS权威指南-第三版--读书笔记

第一章:CSS和文档 html是结构化语言,css是样式语言,html主要用来被强大的搜索引擎更好的索引,更好的让一个盲人通过语音浏览器来了解我们的网页,这也就是为什么说html是结构话语言,因为这是W3C规定的,大家都在遵循,统一的标准会给所有人带来便利(比如上面提到的盲人). 从web的衰落开始谈起,当时web只是用简单的html来编写,大量的流行,为了更好的展示,于是出现了一些<font>,<center>等用来表现的标签,使得html非常的混乱.1996年,CSS已经成为一