如何不使用gap属性为flex布局创建间距以兼容旧浏览器
替代
gap实现10px间距的兼容方案 针对不支持gap属性的浏览器,你可以使用负margin + 子元素边距的方案实现完全一致的10px间距效果,无需修改原有HTML结构,仅调整CSS即可:
调整后的完整CSS代码
html, body { height: 100%; margin: 0; padding: 0; } body { background: #353198; } .outer { display: flex; flex-wrap: wrap; min-height: 100%; margin: auto; justify-content: center; align-content: center; width: 290px; /* 负margin抵消第一行、第一列的多余边距 */ margin-top: -5px; margin-left: -5px; background: green; } .thePlay { width: 90px; height: 90px; border-radius: 50%; cursor: pointer; border: none; fill: blue; background: transparent; padding: 0; filter: drop-shadow(3px 3px 3px rgba(0, 0, 0, 0.7)); /* 子元素双向边距组合形成10px间距 */ margin-top: 5px; margin-left: 5px; }
实现原理
我们把gap:10px的间距拆分为双向各5px的边距:
- 给所有子元素设置
margin-top: 5px、margin-left: 5px,任意两个相邻元素的水平/垂直间距就是5px + 5px = 10px,完全符合需求 - 外层父容器设置负的
margin-top: -5px、margin-left: -5px,抵消第一行顶部、第一列左侧多余的边距,最终效果和原生gap完全一致,不会产生额外的外间距
最终效果
内容的提问来源于stack exchange,提问作者user17382064
相关产品推荐
相关产品推荐

