【CSS非全解03】CSS基础-盒模型

两种盒模型

盒模型

直观地感受下盒模型demo

  • content-box 内容盒:以内容为盒子的边界(宽高度)
  • border-box 边框盒:以边框为盒子的边界(宽高度)

请说一下盒模型

标准回答:

CSS 盒模型分两种:

一种是content box,另一种是border box;

区别是:

content box的宽、高度只包含content;

border box的宽、高度包含到border(以内),包括border、padding和content;

区别

只在设置了宽高后有区别

content-box 是写了多少宽度,内容就是多少宽度,但是如果设置了padding、border和margin,整个加起来,不符合视觉习惯。

border-box 为了符合视觉习惯,压缩了content的内容,除去margin以外的宽度,边框的最左边到最右边就是宽度,从而使得宽度迎合视觉习惯

尺寸计算公式

在浏览器缩放比例1的情况下,F12(Chrome)打开检查元素,查看开发者工具>Styles

content-box [width | height] = content

border-box [width | height] = content + padding + border

很多人对盒模型有误解。把margin算进去的那是盒子占据的位置,而不是盒子的大小

盒子的大小为content+padding+border即内容的(width)+内边距的再加上边框,而不加上margin

content 二维 width和height;可见

border、padding和margin 二维的-top,-bottmom, -left,-right

border可见,通过border-, border-style, border-color属性

border: [border-width ||border-style ||border-color |inherit];

padding和margin透明(无显现属性transparent elements),间接可见

CSS padding margin border属性详解 by Ruthless

影响和盒子有关的其他内容

mdn参考

CSS 基础框盒模型介绍 mdn

假如框盒上设有背景(background-colorbackground-image),背景将会一直延伸至边框的外沿(默认为在边框下层延伸,边框会盖在背景上)。此默认表现可通过 CSS 属性 background-clip 来改变。

可替换元素外,对于行内元素来说,尽管内容周围存在内边距与边框,但其占用空间(每一行文字的高度)则由 line-height属性决定,即使边框和内边距仍会显示在内容周围。

哪个好用

border-box 边框盒更好用,因为宽度不用考虑padding和border的影响,压缩点内容,要看,如果是处理文字,可以用text-overflow等来省略

因为border-box的width会将padding和border包含在内,布局时更好控制,尤其是在响应式布局中。

有一篇墙推IE怪异盒模型的文章:《把所有元素的box-sizing都设置成border-box吧!》

有一种推荐而且很常见的做法:

* {
    box-sizing:border-box;
}

块级盒的默认宽度

如果未声明宽度,并且盒子是静态或者相对定位,有内容content,宽度会保持 100%的 宽度,改变了paddingborder的值不为0后, 块级盒会向内推动,而不是向外扩展。

但是,如果明确设置盒子的宽度为 100%,那么 padding 就会向外延展。

盒子的默认宽度并不真的是 100%

而是剩下的可能值(剩余真实存在的宽度)。

很多情况下,盒子的默认宽度(剩余可能值)对于设置/不设置宽度都是非常有用

CSS盒模型详解+定位,翻的是CSS Tricks: The CSS Box Model

你真的理解浏览器盒模型吗?

前端精华总结


边框盒 VS 内容盒Demo

变态的margin合并

margin不会影响盒子本身的大小,但是它会影响和盒子有关的其他内容,比如margin合并

哪些情况会合并

上下合并,左右不合并,这样设计,方便写margin时不用再算除以2的问题,直接合并

  • 父子margin合并(第一个子元素的上边距,最后一个子元素的下边距)
  • 兄弟间上下margin合并

如何阻止合并

父子合并(内外block):

  • padding/border挡住合并
  • overflow:hidden挡住合并
  • display:flex,不知道为什么,别问我,文档规定

父子margin间存在padding或border,就加了阻隔,隔开父子margin,自然就不能合并了

兄弟合并(上下block):

  • 符合预期的
  • inline-block消除,margin分开计算不会合并
  • CSS属性逐年增多,一条条死记

基本单位

长度单位

  • px像素
  • em相对于自身font-size的倍数1,2,3,4em=1x,2x,3x,4x font-size
  • 百分数
  • 整数
  • rem
  • vw | vh
  • 其他,少,不用了解

颜色

  • hsla(h, s, l, a): (30°, 100%, 100%, 0.5)

  • rgba(r, g, b,a): (255, 127, 0,0.5)

  • Hex triplet: #FF7F00

  • 淘宝色#FF6600

  • 透明transparent

CSS values and units mdn

CSS length mdn

自动填充背景色

在body上添加一个颜色,外面也同样变成这个色,但并不意味着背景全是body,只有加了border,才能看出body的实际范围

用border来确定body在哪

W3C 组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落、列表、标题、图片以及层。

盒模型主要定义四个区域:内容(content)、边框距(padding)、边界(border)和边距(margin)。

margin,background-color,background-image,padding,content,border之间的层次、关系和相互影响。

用3D画一张box model层次图

  1. margin:层的边框以外留的空白
  2. background-color:背景颜色
  3. background-image:背景图片
  4. padding:层的边框到层的内容之间的空白
  5. border:边框
  6. content:内容

用CSS实现彩虹


·未完待续·


参考文章

相关文章



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容

  • 一、CSS入门 1、css选择器 选择器的作用是“用于确定(选定)要进行样式设定的标签(元素)”。 有若干种形式的...
    宠辱不惊丶岁月静好阅读 1,538评论 0 6
  • 大家好,我是IT修真院的学员,一位正直纯洁善良的web前端程序员 今天给大家分享一下如何理解盒模型? 1.背景介绍...
    宁静森林阅读 2,021评论 0 0
  • 其实,CSS就三个大模块: 盒子模型 、 浮动 、 定位,其余的都是细节。要求这三部分,无论如何也要学的非常精通...
    王玉伟的伟阅读 1,077评论 0 2
  • 1.行内元素和块级元素?img算什么?行内元素怎么转化为块级元素? 行内元素:和有他元素都在一行上,高度、行高及外...
    极乐君阅读 2,304评论 0 20
  • 三月,万物复苏,春色正浓。点点嫩叶,脉脉温情,殷殷桃花,是冬儿走的太匆忙,还是她不曾遗忘,遗忘了这春风十里桃花香?...
    零一春风数声阅读 481评论 0 4