Css 可变宽度取决于位置?

Css 可变宽度取决于位置?,css,Css,如果我将position:absolute指定给元素,则其宽度将不会随内部文本的不同而变化 另一方面,如果我将position:relative指定给该元素,则宽度将根据内部文本的不同而变化 这里我有两个菜单,每个菜单都有不同的位置属性: 这是什么原因?为什么宽度取决于位置属性? 我想让它根据文本大小而变化 谢谢。宽度的默认值为自动,这意味着它将根据需要调整自身以适应布局。对于块级元素(display:block等),这意味着适应父容器;对于内联元素(display:inline等),这意味着

如果我将
position:absolute
指定给元素,则其
宽度将不会随内部文本的不同而变化

另一方面,如果我将
position:relative
指定给该元素,则
宽度将根据内部文本的不同而变化

这里我有两个菜单,每个菜单都有不同的
位置
属性:

这是什么原因?为什么
宽度
取决于
位置
属性? 我想让它根据文本大小而变化


谢谢。

宽度的默认值为
自动
,这意味着它将根据需要调整自身以适应布局。对于块级元素(
display:block
等),这意味着适应父容器;对于内联元素(
display:inline
等),这意味着适应内容

位置
属性的因素是,值
相对
不将元素从常规流布局中移除,因此基本规则仍然保持不变。值
absolute
确实会将其从常规流布局中移除,因此不再有父级作为宽度的基础,因此会返回以适应内容


相关规则在中定义(太长,无法引用)。

+1精彩的解释。但是..现在如此普遍的浮动菜单的解决方案是什么呢?好吧,最后你有两个选择-让浏览器缩小以适应,或者指定一个固定的宽度。对于没有关系布局的东西,没有其他可行的选择。这也是我检查过的所有下拉列表的工作原理。如果你需要一些具体的东西,你可以问一个问题,看看是否有可能我最终使用了@jasonmerino命名的
空白:nowrap
。它似乎起到了作用。因为它迫使内容更宽,因此收缩到适合的行为必须考虑到这一点。我知道这并不是在回答你的问题,但如果你需要绝对定位,但不希望文本被包装,你可以使用
空白:nowrap
on
。floatingMenu