CSS篇-面试题1-画一下盒子模型

虽互不曾谋面,但希望能和您成为笔尖下的朋友

以读书,技术,生活为主,偶尔撒点鸡汤

不作,不敷衍,意在真诚吐露,用心分享

点击左上方,可关注本刊

标星公众号(ID:itclanCoder)

如果不知道如何操作

点击这里,标星不迷路

━━━━━━

画一下盒子模型

它是所有布局控制的基础,虽然如今的前端是组件化开发模式

组件是一种对html 元素数据的封装,对原生 html标签元素的一种拓展,但底层核心依旧依赖DIV+CSS

盒子模型分为两种:标准盒模型(w3c 标准)和非标准盒模型(IE 传统/怪异盒模型)

共同点: 都是决定html标签元素在浏览器中如何进行布局,怎么显示,都是对元素计算尺寸的模型,拥有对html元素width,height,padding,border以及元素实际尺寸的计算关系

不同点:它们主要的区别在于元素的计算方式不同

标准盒模型(w3c 标准盒模型):一个盒模型包括 4 个区,分别是内框,内边距,边框,外边距,在指定一个元素的大小时,就是根据盒模型中的各个部分的大小来决定的

  • 内盒尺寸计算

元素大小:宽度 = 内容宽度+内边距+边框(width = width+padding-left+padding-right+border-left+border-right)

元素大小:高度 = 内容高度+内边距+边框(height = height+padding-top+padding-bottom+border-top+border-bottom)

  • 外盒尺寸计算

元素空间宽度 = 内容宽度+内边距+边框+外边距(width = width+padding(左右内边距)+border(左右边框)+margin(左右外边距)

元素空间高度 = 内容高度+内边距+边框+外边距(height = height+padding(上下内边距)+border(上下边框)+margin(上下外边距))

IE 传统/怪异盒模型

  • 内盒尺寸计算元素大小: 宽度 = 内容宽度(width 包含了元素的宽度+边框+内边距元素大小:高度 = 内容高度(height 包含了元素的高度+边框+内边距)

  • 外盒尺寸计算

元素空间宽度 = 内容宽度+外边距(width 包含了元素的内容宽度,边框+内边距)元素空间高度 = 内容高度+外边距(height 包含了元素的内容高度,边框+内边距)

综上所述: 在标准盒模型中,元素的宽度和高度仅仅包含内容的宽度,高度(不包含边框和内边距两个区域),而在怪异盒模型(IE 盒模型),元素的的宽度,高度含了边框,内边距

这样给 web 开发人员带来了很多麻烦

无论是哪种模型情况,最终都会触发标准盒模式

解决办法:在 css3 中增加了一个盒模型属性 box-sizing,它能够事件定义盒模型的尺寸解析方式,也就是可以通过属性值来决定盒子元素的计算方式,属性值有四个

box-sizing: content-box | border-box | inherit | padding-box
  • content-box: 默认值,元素保持 w3c 标准盒模型,元素的宽度和高度(width/height)等于元素的边框宽度(border)+元素的内边距(padding)+元素的内容宽度或高度(content width/height)即(borderpadding 不算到width范围内)

  • border-box:让元素变为 IE 怪异盒模型,元素的宽度或高度等于元素内容的宽度或高度,这里的内容宽度或高包含了元素的border,padding的内容的宽度或高度(即 borderpadding 划归到 width 范围内)

  • inherit:此值会使元素继承父元素的盒模型模式

  • padding-box:用来指定元素的宽度或高度包含内容的宽度或高度和内边距,但不包括边框宽度(将 padding算入width 范围)

总之,当设置为box-sizing:content-box时,将采用标准模式解析计算,当设置为box-sizing:border-box时,将采用怪异模式解析计算

box-sizing:主要用来控制元素的盒模型的解析模式,主要目的是控制元素的总宽度,标准盒模型中,默认就是content-box

设置属性box-sizing:border-box时,给元素添加边框(border)和内边距(padding),都不会影响元素盒子的总尺寸,也就是不会把盒子溢出,不会影响布局,这个在移动端布局时,经常用

而在标准盒模型下,一旦修改了元素的边框和内边距,就会影响元素的盒子尺寸,不得不重新计算元素的盒子尺寸大小,会影响到整个页面的布局




公众号(ID:itclanCoder)

码能让您早脱菜籍,文能让您洗净铅华

  可能您还想看更多:

小程序-云开发-实现微信云支付功能

表单输入框聚焦效果


微信小程序中 setData 详解

喜欢就点个在看再走吧

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值