如何使固定定位 div 继承父级的宽度?
How can I make a fixed positioned div inherit width of parent?
固定位置的 div 是否可以继承父级的宽度?
我知道固定宽度是相对于 window 的,所以这段代码不起作用:
#wrapper{
position: relative;
width:500px;
height: 20px;
background-color: blue;
}
#header{
position: fixed;
width: 100%;
height: 20px;
background-color: rgba(255,0,0,0.5);
}
<div id="wrapper">
#wrapper
<div id="header">
#header
</div>
</div>
改变
#wrapper{
position: relative;
width:500px;
}
到
#wrapper{
position: absolute;
width:500px;
}
在 #header
选择器上为 width
属性 使用 inherit
值。
为何如此有效
通过为 #header
元素指定 position: fixed
,#header
元素的位置是根据指定的视口计算的
在 CSS2 规范中:
http://www.w3.org/TR/2011/REC-CSS2-20110607/visuren.html#positioning-scheme
但是,position: fixed
并没有改变DOM结构,也就是说
#wrapper
元素仍然是 #header
元素的父元素。作为一个
因此,#header
仍然可以从其父元素继承 属性 值,即使它的位置是相对于视口确定的。
另请注意,如果您指定宽度的百分比值,固定元素将根据视口计算该值,如规范中所述。但是,这不适用于 width: inherit
,它的值来自父元素,而不是视口。
参见:http://www.w3.org/TR/2011/REC-CSS2-20110607/visudet.html#propdef-width
例如,如果您将 color
属性 添加到 #wrapper
,它将被 #header
继承。
区别在于 width
的 initial/default 值为 auto
而 color
为 inherit
。要使用 属性 获取父项,您需要指定 width: inherit
,而不是 width: 100%
;
注意:父元素和包含块之间有细微的区别。在大多数情况下,两者是相同的,但是对于固定定位的元素,它们是不同的。
#wrapper {
position: relative;
width: 500px;
height: 20px;
background-color: blue;
color: white; /* for demo */
}
#header {
position: fixed;
width: inherit;
height: 20px;
background-color: rgba(255, 0, 0, 0.5);
}
<div id="wrapper">
#wrapper
<div id="header">
#header
</div>
</div>
固定位置的 div 是否可以继承父级的宽度?
我知道固定宽度是相对于 window 的,所以这段代码不起作用:
#wrapper{
position: relative;
width:500px;
height: 20px;
background-color: blue;
}
#header{
position: fixed;
width: 100%;
height: 20px;
background-color: rgba(255,0,0,0.5);
}
<div id="wrapper">
#wrapper
<div id="header">
#header
</div>
</div>
改变
#wrapper{
position: relative;
width:500px;
}
到
#wrapper{
position: absolute;
width:500px;
}
在 #header
选择器上为 width
属性 使用 inherit
值。
为何如此有效
通过为 #header
元素指定 position: fixed
,#header
元素的位置是根据指定的视口计算的
在 CSS2 规范中:
http://www.w3.org/TR/2011/REC-CSS2-20110607/visuren.html#positioning-scheme
但是,position: fixed
并没有改变DOM结构,也就是说
#wrapper
元素仍然是 #header
元素的父元素。作为一个
因此,#header
仍然可以从其父元素继承 属性 值,即使它的位置是相对于视口确定的。
另请注意,如果您指定宽度的百分比值,固定元素将根据视口计算该值,如规范中所述。但是,这不适用于 width: inherit
,它的值来自父元素,而不是视口。
参见:http://www.w3.org/TR/2011/REC-CSS2-20110607/visudet.html#propdef-width
例如,如果您将 color
属性 添加到 #wrapper
,它将被 #header
继承。
区别在于 width
的 initial/default 值为 auto
而 color
为 inherit
。要使用 属性 获取父项,您需要指定 width: inherit
,而不是 width: 100%
;
注意:父元素和包含块之间有细微的区别。在大多数情况下,两者是相同的,但是对于固定定位的元素,它们是不同的。
#wrapper {
position: relative;
width: 500px;
height: 20px;
background-color: blue;
color: white; /* for demo */
}
#header {
position: fixed;
width: inherit;
height: 20px;
background-color: rgba(255, 0, 0, 0.5);
}
<div id="wrapper">
#wrapper
<div id="header">
#header
</div>
</div>