html – 如何使固定的div继承父级的宽度?

有没有办法固定定位div可以继承父级的宽度?

我知道固定宽度是相对于窗口的,所以这段代码不起作用:

#wrapper{
        position: relative;
        width:500px;
        height: 20px;
        background-color: blue;
}

#header{
        position: fixed;
        width: 100%;
        height: 20px;
        background-color: rgba(255,0.5);
}
<div id="wrapper">
  #wrapper
        <div id="header">
          #header
        </div>
    </div>

解决方法

在#header选择器上使用width属性的inherit值.

为何如此有效

通过指定position:fixed到#header元素,#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: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.5);
}
<div id="wrapper">
  #wrapper
  <div id="header">
    #header
  </div>
</div>

相关文章

操作步骤 1、进入elasticsearch的plugin,进入ik。进入config。 2、在config下面建立以.dic为后缀的字典...
lengend data数据中若存在&#39;&#39;,则表示换行,用&#39;&#39;切割。
代码实现 option = { backgroundColor: &amp;#39;#080b30&amp;#39;, tooltip: { trigger: &...
问题原因 原因在于直接在js中取的变量并复制给var变量。 于是就变成这样。 解决办法 var data = &#...
前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选...
对于很多人来说,用字符编码都是熟能生巧,而不清楚为什么是那样的字符编码,所以我在这列了一个表,翻...