-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
面试官:css选择器有哪些?优先级?哪些属性可以继承? #95
Comments
伪元素前面应该是两个冒号,你写成一个冒号了;:enabled 选择被启用的元素,你写成被禁用的元素了; |
简单总结依据上文思路,从选择器、优先级、属性可继承三方面简单记录一下。 选择器与优先级根据优先级排序 内联样式 > id 选择器 > 类、伪类选择器、属性选择器 > 元素、伪元素选择器 > 后代、子代、兄弟选择器 当多种样式要同时作用于同一元素时,最终的显示效果就要由优先级来决定,用 A、B、C、D 四个默认值都是0的值来依次代表 内联样式、id选择器、类选择器伪类选择器属性选择器、元素选择器伪元素选择器。
由上面的方法,每组样式都会算出一组结果为
属性是否可继承
不可继承: 注意点多种样式作用于同一元素才有必要用优先级来判断要显示的是哪种样式 测试<body>
<div id="test" class="six testClass">
<div id="test2" class="six2">
<div id="test3" class="six3 six33">
<p>666</p>
</div>
</div>
</div>
</body> #test {
background-color: red;
}
#test>#test2 {
background-color: yellow;
}
#test>.six2>#test3 {
background-color: black;
}
#test>.six2>.six3 {
background-color: blue;
}
/* 最终显示颜色为black,理由是#test>.six2>#test3的优先级在这里最高者 */ #test {
background-color: red;
}
#test>#test2 {
background-color: yellow;
}
#test>.six2>.six3 {
background-color: blue;
}
#test>.six2>.six33 {
background-color: yellowgreen;
}
最终显示为yellowgreen,理由是发生了样式覆盖 #test {
background-color: red;
}
#test>#test2 {
background-color: yellow;
}
#test>.six2>.six3 {
background-color: blue;
}
#test>.six2>.six33 {
background-color: yellowgreen;
}
p {
background-color: aqua;
}
最终显示为aqua,理由是作用于p元素上的只有一个标签选择器,没有其它选择器与之冲突。
题外话:优先级的使用场景是多种选择器作用于同一个元素上,才需要去计算优先级,用之判断显示的是哪组选择器控制的样式 |
h1-h6标签字体的大小也是不能被继承的 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
一、选择器
CSS选择器是CSS规则的第一部分
它是元素和其他部分组合起来告诉浏览器哪个HTML元素应当是被选为应用规则中的CSS属性值的方式
选择器所选择的元素,叫做“选择器的对象”
我们从一个
Html
结构开始关于
css
属性选择器常用的有:id选择器(#box),选择id为box的元素
类选择器(.one),选择类名为one的所有元素
标签选择器(div),选择标签为div的所有元素
后代选择器(#box div),选择id为box元素内部所有的div元素
子选择器(.one>one_1),选择父元素为.one的所有.one_1的元素
相邻同胞选择器(.one+.two),选择紧接在.one之后的所有.two元素
群组选择器(div,p),选择div、p的所有元素
还有一些使用频率相对没那么多的选择器:
在
CSS3
中新增的选择器有如下:二、优先级
相信大家对
CSS
选择器的优先级都不陌生:到具体的计算层⾯,优先级是由 A 、B、C、D 的值来决定的,其中它们的值计算规则如下:
如果存在内联样式,那么 A = 1, 否则 A = 0
B的值等于 ID选择器出现的次数
C的值等于 类选择器 和 属性选择器 和 伪类 出现的总次数
D 的值等于 标签选择器 和 伪元素 出现的总次数
这里举个例子:
套用上面的算法,依次求出
A
B
C
D
的值:因为没有内联样式 ,所以 A = 0
ID选择器总共出现了1次, B = 1
类选择器出现了1次, 属性选择器出现了0次,伪类选择器出现0次,所以 C = (1 + 0 + 0) = 1
标签选择器出现了3次, 伪元素出现了0次,所以 D = (3 + 0) = 3
上面算出的
A
、B
、C
、D
可以简记作:(0, 1, 1, 3)
知道了优先级是如何计算之后,就来看看比较规则:
经过上面的优先级计算规则,我们知道内联样式的优先级最高,如果外部样式需要覆盖内联样式,就需要使用
!important
三、继承属性
在
css
中,继承是指的是给父元素设置一些属性,后代元素会自动拥有这些属性关于继承属性,可以分成:
visibility
quotes:设置嵌套引用的引号类型
cursor:箭头可以变成需要的形状
继承中比较特殊的几点:
a 标签的字体颜色不能被继承
h1-h6标签字体的大下也是不能被继承的
无继承的属性
display
文本属性:vertical-align、text-decoration
盒子模型的属性:宽度、高度、内外边距、边框等
背景属性:背景图片、颜色、位置等
定位属性:浮动、清除浮动、定位position等
生成内容属性:content、counter-reset、counter-increment
轮廓样式属性:outline-style、outline-width、outline-color、outline
页面样式属性:size、page-break-before、page-break-after
参考文献
The text was updated successfully, but these errors were encountered: