Css 具有绝对位置的div的宽度取决于其父级';宽度是多少?
我想要一个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 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中呈现的段落如何在每行中断开所有单词。谢谢