css - 如何使相对div跨越其绝对内容?

标签 css css-position

这是一个非常基本的问题,但它已经让我困惑了几个小时: 如何使相对定位的 div 跨越其绝对定位的内容?

http://jsfiddle.net/X6ay2/10/

HTML

<div class="outer">
    <div class="inner"></div>
</div>

CSS:

.outer {
    display: inline-block;
    position: relative; 
    background: blue;
    height: 100px;
    padding: 20px;
}
.inner {
    position: absolute;
    width: 50px;
    height: 50px;
    background: red;
}

最佳答案

你真的不能直接定位,因为绝对定位的元素不在文档流中,所以不再真正“属于”它们的父元素。一种解决方法是将绝对定位的 div 设置为 100% 宽度和 left:0,这将强制它扩展到父级的宽度。

.outer {
    display: inline-block;
    position: relative; 
    background: blue;
    height: 100px;
    padding: 20px;
}
.inner {
    position: absolute;
    width: 100%;
    left: 0;
    height: 50px;
    background: red;
}

http://jsfiddle.net/X6ay2/14/

需要注意的是,如果内部 div 有内边距,它将超出 100%。要阻止这种情况,请使内部 div 使用 border-box box-sizing 属性。

.inner {
    padding: 10px;
    box-sizing: border-box;
    -moz-box-sizing:border-box;
}

http://jsfiddle.net/X6ay2/15/

关于css - 如何使相对div跨越其绝对内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18173542/

相关文章:

css - 位置粘性,但始终在视口(viewport)底部

html - 仅使用 css 在 div 上从 sprite 表中拉伸(stretch)图像的一部分

当我再次打开时,HTML 不会链接到 CSS

javascript - ajax 注册表单上的关闭图标关闭表单,但不清除所有数据字段

html - 相对div中的绝对位置图像

html 页脚出现在包装内?

jquery - 绝对定位的div出现时展开页面

html - 使复选框在标签外可点击

jquery - AngularJS - 样式不适用于附加的 html

html - 工具提示最小高度有效但最小宽度无效