CSS布局中两个独立section元素未正常分离的问题求助
问题原因
两个独立section出现布局粘连、表单被挤到右上角的核心原因是浮动未清除,和元素嵌套关系无关:
- 你为
.middle内的article设置了左浮动、侧边图片设置了右浮动,浮动元素会脱离常规文档流,父元素如果没有做清除浮动处理,高度不会被浮动的子元素撑开,只会塌陷到非浮动内容的高度。 - 你给
.middle设置的display: inline-block、在两个section之间加<br>、给后面的表单设width:100%都没法解决浮动塌陷的问题,后续的.infoform会自动顺着浮动元素留下的空隙往上排布,视觉上就像和前一个section合并成了同一个区块,内容被挤到右侧剩余空间里。 - 另外你的HTML存在语法错误:
<section.middle>和</section.middle>是错误写法,正确的类名写法应该是<section class="middle">,这个错误会导致浏览器DOM解析异常,加重布局错乱。
修复步骤
按以下顺序修改即可解决问题:
- 修正HTML标签语法错误,把middle区块的标签改为标准写法:
<!-- 错误写法 --> <section.middle> <!-- 中间内容 --> </section.middle> <!-- 正确写法 --> <section class="middle"> <!-- 中间内容 --> </section>
- 给
.middle区块添加清除浮动规则,让它能完整包裹内部浮动的子元素,阻断浮动对后续区块的影响:
.middle{ display:inline-block; width: 100%; /* 避免inline-block元素宽度随内容收缩 */ overflow: hidden; /* 触发BFC,自动识别内部浮动元素高度,清除塌陷 */ }
如果不想用overflow:hidden(后续如果要做超出元素的下拉菜单会被裁剪),也可以用伪元素清除浮动的标准写法:
.middle::after { content: ""; display: block; clear: both; }
- 额外修复小问题:
- 提交按钮的属性写错了,
type-submit要改为type="submit",不然点击不会触发表单提交 - 如果要实现水平表单单行排列的效果,可以给
.form-inline下的label、input、button设置display: inline-block,搭配适当的外边距避免内容挤在一起。
- 提交按钮的属性写错了,
内容的提问来源于stack exchange,提问作者BonChon
相关产品推荐
相关产品推荐

