点击区域消失源于父容器高度塌陷,因浮动元素脱离文档流且未触发BFC或设height,导致offsetHeight为0;应使用伪元素clearfix清除浮动,避免overflow:hidden裁剪溢出内容。
浮动元素脱离文档流后,父容器若没触发BFC或设height,计算高度时直接忽略子项,导致offsetHeight为0——你看到的“内容还在”,但实际点击区域只剩一条线甚至完全空白。用开发者工具检查父容器的computed height,接近0就是这个原因。
overflow: hidden虽能触发BFC,但会意外裁剪下拉菜单、tooltip等溢出内容。现代项目里唯一稳妥的清除方式是伪元素:
.clearfix::after { content: ""; display: table; clear: both;}
.container加class="clearfix"负margin只是把左右栏“拉回”视觉位置,它不修复父容器塌陷。一旦塌陷发生,.main的margin-bottom、.left的padding-top等所有垂直间距都会失效,连带让整个三栏区域失去可点击范围。
.container有正确高度(靠clearfix),再调负margin.main必须设width: 100%,不能写固定宽,否则自适应失效后点击区错位position: relative不能漏,否则left/right偏移无效,视觉错位进一步干扰点击热区iOS Safari或微信X5内核中,浮动+负margin组合容易触发硬件加速异常,表现为:开发者工具里元素渲染正常,但getBoundingClientRect()返回的top/left为NaN,或pointer-events完全不响应。
立即学习“前端免费学习笔记(深入)”;
zoom: 1或overflow: auto救老IE——它们在移动端反而加剧错乱margin-left: -200px,禁用-100%
display: grid,grid-template-areas控制顺序,点击区域由浏览器原生保障,不靠hack