css盒模型中的background-origin与border-box结合使用
发布时间 - 2026-01-11 00:00:00 点击率:次background-origin 默认值是 padding-box;它与 box-sizing 无关,显式设为 border-box 时背景原点在边框外边缘左上角,需配合 background-clip: border-box 才能显示在边框区域。
background-origin 默认值不是 border-box
background-origin 控制背景图像(或渐变)的定位参考区域,它和 border-box 没有自动绑定关系。很多人误以为设了 box-sizing: border-box 就会让 background-origin 默认以边框内边缘为起点,其实完全无关——box-sizing 只影响元素宽高的计算方式,而 background-origin 的默认值始终是 padding-box。
background-origin: border-box 的实际效果
当显式设置 background-origin: border-box 时,背景图像的 0 0 坐标点会落在元素的**边框外边缘左上角**(即包含 border 的整个盒区域的左上顶点)。这意味着:
- 如果元素有非零
border-width,背景图会“延伸进”边框区域(前提是background-clip允许) - 若同时设
background-clip: border-box,背景才真正绘制到边框内;否则即使origin在 border 外,clip仍可能裁掉它 - 该设置对
background-position: center等相对定位同样生效:中心点基准是 border-box 的中心,而非 padding-box
div {
width: 200px;
height: 100px;
border: 10px solid #333;
padding: 20px;
background-image: linear-gradient(45deg, red, blue);
background-origin: border-box; /* 起点在 border 外左上角 */
background-clip: border-box; /* 否则背景会被 padding-box 裁掉 */
}border-box 和 background-clip 的配合才是关键
单独用 background-origin: border-box 很少达到预期效果,因为默认的 background-clip: padding-box 会把背景限制在 padding 区域内,导致 origin 设在 border 外也没用。常见组合是:
-
background-origin: border-box+background-clip: border-box→ 背景铺满整个 border 区域 -
background-origin: padding-box+background-clip: content-box→ 背景只出现在内容区,且以 padding 左上为原点 -
background-origin: content-box+background-clip: content-box→ 背景严格限制在 content 区,原点在 content 左上角
注意:background-origin 和 background-clip 的取值必须兼容——比如 origin: content-box 但 clip: border-box 会导致背景从 content 区开始绘制,却向外扩展到 border 区,视觉上可能产生错位感。
立即学习“前端免费学习笔记(深入)”;
容易被忽略的兼容性与重绘问题
background-origin 在所有现代浏览器中支持良好,但有两个隐性坑:
- IE9+ 支持,但 IE9 不支持
content-box值,只认padding-box和border-box - 动画
background-position时,若origin是border-box且 border 宽度动态变化(如 hover 改border-width),会导致背景位置意外跳变——因为原点随 border 尺寸实时偏移 - 使用
background-origin: border-box的元素,若 border 非实线(如dashed或transparent),背景仍按 bor
der 占据的空间定位,但视觉上可能看不出效果
真正要让背景“贴着边框走”,重点不在 origin,而在同步控制 clip 和 border 的渲染边界。否则 origin 再准,也被 clip 截断了。
# css
# 浏览器
# 重绘
# 相对定位
# red
# position
# padding
# border
# background
# 默认值
# 才是
# 中心点
# 出现在
# 很多人
# 设为
# 而在
# 落在
# 会让
# 看不出
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
如何用虚拟主机快速搭建网站?详细步骤解析
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
如何续费美橙建站之星域名及服务?
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
jquery插件bootstrapValidator表单验证详解
html如何与html链接_实现多个HTML页面互相链接【互相】
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
WEB开发之注册页面验证码倒计时代码的实现
Python3.6正式版新特性预览
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
制作公司内部网站有哪些,内网如何建网站?
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
如何撰写建站申请书?关键要点有哪些?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
香港服务器WordPress建站指南:SEO优化与高效部署策略
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
如何用y主机助手快速搭建网站?
打造顶配客厅影院,这份100寸电视推荐名单请查收
QQ浏览器网页版登录入口 个人中心在线进入
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
Android实现代码画虚线边框背景效果
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
用yum安装MySQLdb模块的步骤方法
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
Laravel如何配置任务调度?(Cron Job示例)
详解jQuery中基本的动画方法
如何在云主机上快速搭建网站?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
如何在宝塔面板创建新站点?
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
Python进程池调度策略_任务分发说明【指导】
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
JavaScript如何实现音频处理_Web Audio API如何工作?
浅谈redis在项目中的应用
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
长沙企业网站制作哪家好,长沙水业集团官方网站?
Laravel如何实现API速率限制?(Rate Limiting教程)


der 占据的空间定位,但视觉上可能看不出效果