如何将div定位到父容器底部?绝对定位导致元素重叠如何解决?
你用绝对定位出现重叠和变形,是因为绝对定位元素会脱离正常文档流,父元素不会计算它的高度,且你没有给父元素设置position: relative,导致按钮是相对于整个页面而非父容器定位,自然会出现布局错乱,不需要用JS就能解决,下面是两种常用方案:
方案1:Flex布局(更推荐,无脱流问题,适配性更好)
给父容器和内容区增加Flex相关属性,让内容区自动撑开剩余空间,将按钮区域挤到父容器底部:
修改后的CSS代码:
/* 父容器新增属性 */ #box { display: flex; flex-direction: column; min-height: 200px; /* 替换为你需要的父容器高度,需要固定高度就写height */ } /* 内容区新增属性,自动占满剩余空间 */ .box-body { flex: 1; margin-bottom: 25px; /* 替换你原来写在.button-div的padding-top,效果一致 */ } /* 原.button-div的bottom属性可以直接删除,不需要额外定位 */ .button-div { margin: 0 auto; text-align: center; }
方案2:绝对定位适配方案
如果你坚持要用绝对定位,只需要补全父容器的定位规则,预留出按钮区域的位置即可避免重叠:
修改后的CSS代码:
/* 父容器新增属性,作为绝对定位的参照基准 */ #box { position: relative; padding-bottom: 80px; /* 预留按钮的高度空间,避免上层内容和按钮重叠,可自行调整数值 */ } .button-div { position: absolute; bottom: 20px; /* 距离父容器底部的间距,可自行调整 */ left: 0; right: 0; margin: 0 auto; text-align: center; }
额外注意
你原有CSS里的padding-top: 25 px;存在语法错误,数值和单位之间不能有空格,正确写法是padding-top: 25px;,否则浏览器不会识别该属性。
内容的提问来源于stack exchange,提问作者Mayur
相关产品推荐
相关产品推荐

