CSS有哪些属性可以继承?
1.背景介绍
了解css样式表的继承,我们先从⽂档树(HTML DOM)开始,⽂档树由HTML元素组成,⽂档树和家族树类似,也有祖先、后代、⽗亲、孩⼦、兄弟
css样式表继承指的是,特定的css属性向下传递到后代元素
2.知识剖析
对于⼀些可以继承的属性,可以只设置上级的CSS样式表树形,⼦级(下级)不⽤设置,会⾃动继承此CSS属性,可以减少CSS代码,便于维护。
那么有哪些属性可以⾃动继承呢
有继承性的属性:
1、字体系列属性
font:组合字体
font-family:规定元素的字体系列
font-weight:设置字体的粗细
font-size:设置字体的尺⼨
font-style:定义字体的风格
font-variant:设置⼩型⼤写字母的字体显⽰⽂本,这意味着所有的⼩写字母
均会被转换为⼤写,但是所有使⽤⼩型⼤写字体的字母与其余⽂本
相⽐,其字体尺⼨更⼩。
font-stretch:允许你使⽂字变宽或变窄。所有主流浏览器都不⽀持。
font-size-adjust:为某个元素规定⼀个 aspect 值,字体的⼩写字母 "x"
的⾼度与"font-size" ⾼度之间的⽐率被称为⼀个字体的 aspect 值。
这样就可以保持⾸选字体的 x-height。
有继承性的属性:
2、⽂本系列属性
text-indent:⽂本缩进
text-align:⽂本⽔平对齐
text-shadow:设置⽂本阴影
line-height:⾏⾼
word-spacing:增加或减少单词间的空⽩(即字间隔)letter-spacing:增加或减少字符间的空⽩(字符间距)text-transform:控制⽂本⼤⼩写
direction:规定⽂本的书写⽅向
color:⽂本颜⾊
有继承性的属性:
3、元素可见性:visibility
list-style-position、list-style
7、光标属性:cursor
8、还有⼀些不常⽤的;speak,page等属性,暂不讲解;所有元素可以继承的属性:
1、元素可见性:visibility
2、光标属性:cursor
内联元素可以继承的属性:
1、字体系列属性
2、除text-indent、text-align之外的⽂本系列属性
块级元素可以继承的属性:
text-indent、text-align
⽆继承的属性
1、display
3、盒⼦模型的属性:宽度、⾼度、内外边距、边框等
4、背景属性:背景图⽚、颜⾊、位置等
5、定位属性:浮动、清除浮动、定位position等
6、⽣成内容属性:content、counter-reset、counter-increment
7、轮廓样式属性:outline-style、outline-width、outline-color、outline
8、页⾯样式属性:size、page-break-before、page-break-after
继承中⽐较特殊的⼏点
1、a 标签的字体颜⾊不能被继承
1、<h1>-<h6>标签字体的⼤下也是不能被继承的
因为它们都有⼀个默认值
3.常见问题
问题1:多种样式混合应⽤的优先级问题
问题2:font-size的继承问题
4.解决⽅案
当有多个规则都能应⽤于同⼀个元素时,权重越⾼的样式将被优先采⽤。
”important>内联 >ID>类 >标签 |伪类|属性选择 >伪对象 >继承 >通配符”
font-size是可以被继承的。但是它的⽅式有⼀些特别。Font-size的⼦类继承的不是实际值,⽽是计算后的值。下⾯是⼀个例⼦
<p>字体⼤⼩属性<em>继承特性</em>的演⽰代码</p>
p { font-size:14px;}
由于浏览器默认字体⼤⼩是16px,⽽p定义了字体14px,所以em继承了p的字体⼤⼩属性,也是14px;
p { font-size:85%;}
浏览器默认字体⼤⼩16px,⽽p定义了字体⼤⼩(16px X 85% = 13.6px). 13.6px这个值将被⼦元素em继承。
p { font-size:0.85em;}
浏览器默认字体⼤⼩16px,⽽p定义了字体⼤⼩(16px X 0.85 = 13.6px). 13.6px这个值将被⼦元素em继承。
body { font-size: 85%; }
h1 { font-size: 200%; }
h2 { font-size: 150%; }
css中的position属性浏览器默认字体⼤⼩16px,⽽body定义了字体⼤⼩(16px X 85% = 13.6px). 如果⼦元素没有指定字体⼤⼩13.6px这个值将被⼦元素继承。
5.编码实战
6.扩展思考
inherit关键字
inherit 关键字指定⼀个属性应从⽗元素继承它的值。
inherit 关键字可⽤于任何 HTML 元素上的任何 CSS 属性。
除了inherit关键字外,还有什么其他的关键字继承特性
在css3中新增加了⼏个继承特性
initial:⽤来设置css属性值为它的默认值,也就是浏览器默认设置的css属性值。
unset:⼀个属性定义了unset值,如果该属性是默认继承属性,该值等同于inherit,如果该属性是⾮继承属性,该值等同于initial
all: [ inherit | initial | unset ]: 最后,all是⼀个属性⽽不是⼀个值。你可以指定inherit、initial或者unset来影响所有的属性,例如重置所有CSS属性为浏览器默认:
7.参考⽂献
8.更多讨论
1.关键字是否能通⽤:
关键字可以强制更改是否继承属性,不管该属性能不能继承,设置inherit和强制继承⽗元素的某些属性;鸣谢
感谢⼤家观看!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论