Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 具有绝对位置的div的宽度取决于其父级';宽度是多少?_Css_Html_Css Position - Fatal编程技术网

Css 具有绝对位置的div的宽度取决于其父级';宽度是多少?

Css 具有绝对位置的div的宽度取决于其父级';宽度是多少?,css,html,css-position,Css,Html,Css Position,我想要一个div的宽度,其绝对位置取决于它的内容,而不是它的父级。比如说, <div style="position:absolute"> <div style="position:absolute"> <div style="position:absolute">Div in Div</div> </div> </div> 除名 将导致换行,如中所示 看起来内部div的宽度将取决于其父级的宽度,即使其位置是绝

我想要一个div的宽度,其绝对位置取决于它的内容,而不是它的父级。比如说,

<div style="position:absolute">
 <div style="position:absolute">
  <div style="position:absolute">Div in Div</div>
 </div>
</div>

除名
将导致换行,如中所示

看起来内部div的宽度将取决于其父级的宽度,即使其位置是绝对的。例如,如果我们为其父级指定宽度,它将按预期工作(无换行):

不幸的是,我无法预先指定父级的宽度——最终我将根据其子级指定其宽度。我必须使用绝对位置。在纯CSS中可能吗



一些背景:我并不是在试图制作一个页面来完成一些设计——我知道,为了任何合理的需求,有三个堆叠的绝对位置是疯狂的。相反,我正在做一些实验,看看绝对定位是否可以作为解决一系列布局问题的通用方法(多功能复杂布局,通常需要巧妙地使用静态/绝对/浮动)。不幸的是,我遇到了这个问题,这使得在任何地方使用绝对位置的想法都很愚蠢。

元素在从文档流中删除之前就获得了它的宽度和高度。当您绝对定位外部元素时,它将从流中移除,因为它没有直接内容,所以它的宽度为0,高度为0。因此,其中试图添加文本的另一个division元素将继承父元素的宽度0。因此,它只会扩展到最长单词的宽度,以容纳内容,然后将所有其他内容拆分为新的行。完成后,它将从文档流中删除该元素,并自行关闭

因此,为了回答您的第一个问题,,如果未在元素本身上指定宽度和/或高度,则绝对定位的元素会注意其父元素的尺寸。你知道你孩子的宽度是多少吗


至于你的第二个问题。。。您可以使用
空白:nowrap
。这不是一个很好的解决方案。更可取的是,找到一种更好的方式来组织内容,这样就不需要三个相互嵌套的绝对定位元素。你说你必须使用它们。。。真正地更可能的情况是,您还没有找到更好的方法,但如果您选择沿着这条路走下去,这是另一个问题。

如果未设置固定的
宽度,则带有
position:absolute
fixed
的块级元素将自动绑定到其父元素的宽度。如果您不希望子元素具有固定的宽度,您可以通过给它一个非常高的
右边距来有效地解决这个问题,例如

.inner-div {
    position: absolute;
    margin-right: -10000px;
}
然后,它的宽度将绑定到父级的宽度减去负边距,因此实际上只取决于它的内容


更新的fiddle:

如果指定子元素的宽度,则父元素将调整为子元素的宽度。我不确定这就是你要找的!。。。。是的,空格可以防止单词换行,但是只有当屏幕(即主体)无法容纳单词时才可以换行吗?也就是说,将父级的宽度设置为100%(虽然我们并没有真正设置它;相反,为子级设置CSS属性)?@tomyeh:目前我唯一能想到的方法是设置
left:0;右:在元素上设置0
,然后在设置宽度时删除
right
属性。+1。正在寻找关于绝对定位元素的子元素宽度的解释(有关),但未找到任何解释。我花了很长时间才发现这一点。不知道为什么它在搜索中没有出现更高的位置。答案应该被接受吗?非常有价值的解释!“.扩展到最长单词的宽度以允许内容…”解释了在绝对div中呈现的段落如何在每行中断开所有单词。谢谢