css 常见盒模型错误有哪些_新手容易踩坑点汇总
发布时间 - 2025-12-31 00:00:00 点击率:次默认 box-sizing: content-box 导致 width 仅指内容区,加上 padding 和 border 后总宽为 242px;推荐全局设 * { box-sizing: border-box; } 统一预期。
width 设了 200px,结果元素宽 242px?这是 content-box 的默认行为
新手最常懵的点:明明写了 width: 200px,加了 padding: 20px 和 border: 1px solid,一测发现实际占位是 242
px。这不是 bug,是 W3C 标准盒模型(box-sizing: content-box)的本意——width 只管内容区,padding 和 border 得额外加。
- 总宽度 =
width+ 左右padding+ 左右border+ 左右margin - height 同理,垂直方向也一样“偷偷加高”
- 用 Chrome DevTools 的“Computed”面板点开盒模型图示,能立刻看到四层尺寸拆分
子元素 width: 100% + padding 导致父容器溢出滚动条
典型翻车场景:父容器设了 width: 100%,子元素也写 width: 100% 再加 padding: 15px,结果横向出现滚动条,布局错位。
- 原因:content-box 下,
100%指父容器 content 宽度,padding 是额外加在它外面的 - 解决不是靠“调小 width”,而是统一用
box-sizing: border-box - 推荐做法:全局重置,避免漏写
* { box-sizing: border-box; }
两个 div 垂直挨着,margin-top 和 margin-bottom 却“合并”成一个值
这就是 margin collapsing(外边距折叠):相邻块级元素的垂直 margin 不叠加,而是取其中较大者。比如上元素 margin-bottom: 30px,下元素 margin-top: 20px,实际间距只有 30px,不是 50px。
- 只发生在垂直方向(上下),左右 margin 不会折叠
- 父子嵌套时也可能发生 margin 传递(子元素 top margin “顶穿”父容器)
- 常见解法:
overflow: hidden、display: flow-root或给父容器加border/padding
百分比 padding 居然按父容器宽度算高度?没错,这是规范
写 padding-top: 20%,结果发现高度随父容器宽度变化,而不是自身高度——这不是浏览器 bug,是 CSS 规范明确规定的:所有方向的百分比 padding 和 margin(除 margin 的 left/right 在某些旧环境外)都基于父容器的 宽度 计算。
- 想实现等比例缩放的正方形容器?可以利用这个特性:
padding-top: 100%+height: 0+ 绝对定位子元素 - 但别指望它响应自身 height 变化;若需真正按高度算,请改用
calc()或 JS 动态设置 - flex/grid 容器中该行为不变,但布局上下文可能掩盖问题
实际开发中,最省心的起点就是那行 * { box-sizing: border-box; }——它不改变逻辑,只把“宽度预期”和“代码所见”对齐。其余坑,基本都是忘了它,或没意识到 margin 和 padding 在盒模型里根本不是“装饰”,而是参与空间计算的硬性组成部分。
# css
# js
# 浏览器
# 绝对定位
# overflow
# chrome
# chrome devtools
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
网站建设整体流程解析,建站其实很容易!
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何在Windows 2008云服务器安全搭建网站?
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
如何在宝塔面板中修改默认建站目录?
javascript中的try catch异常捕获机制用法分析
LinuxCD持续部署教程_自动发布与回滚机制
实例解析angularjs的filter过滤器
如何在腾讯云服务器上快速搭建个人网站?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
Mybatis 中的insertOrUpdate操作
iOS验证手机号的正则表达式
Python高阶函数应用_函数作为参数说明【指导】
如何用狗爹虚拟主机快速搭建网站?
如何为不同团队 ID 动态生成多个非值班状态按钮
微信h5制作网站有哪些,免费微信H5页面制作工具?
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
如何在阿里云虚拟服务器快速搭建网站?
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
WEB开发之注册页面验证码倒计时代码的实现
,网页ppt怎么弄成自己的ppt?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
原生JS获取元素集合的子元素宽度实例
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
如何在橙子建站中快速调整背景颜色?
大型企业网站制作流程,做网站需要注册公司吗?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
🚀拖拽式CMS建站能否实现高效与个性化并存?
详解jQuery中基本的动画方法
香港服务器WordPress建站指南:SEO优化与高效部署策略
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
iOS UIView常见属性方法小结
实现点击下箭头变上箭头来回切换的两种方法【推荐】
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel如何处理异常和错误?(Handler示例)
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
如何快速建站并高效导出源代码?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
zabbix利用python脚本发送报警邮件的方法
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
Laravel怎么实现模型属性的自动加密
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
Laravel Docker环境搭建教程_Laravel Sail使用指南

