美文网首页
浅谈CSS中的盒模型

浅谈CSS中的盒模型

作者: 这样你就找不到我了 | 来源:发表于2022-01-13 12:59 被阅读0次

显然,盒模型比我想象的,比我最开始在前端课程中学到的其实要复杂得多。

我将现阶段学到的内容与过去学习所留下的印象进行对比,得出了如下我以为CSS盒模型中的难点和容易被忽视的点。

有必要提一句,盒模型的基本结构是需要牢记在心的。

它是一切开始的基础


image.png

关于设置盒子的宽度和高度

在MDN的文章中,盒模型被分为标准盒模型替代盒模型
通常我们一开始学习的盒模型是标准盒模型,它的width和heigth属性所设置的是content的宽度和高度,而不是盒子部分的宽度和高度(把border和它所围起来的部分叫盒子部分)
所以在练习布局的时候,我们有时候会觉得这个width和heigth很怪,并不能很方便直接地将我们心中所想象的布局表达出来,有时甚至需要计算。

而替代盒模型更符合我们的直觉。替代盒模型中的width heigth所指即为border所包括部分的width heigth.


4.jpg

将浏览器默认的标准盒模型改为替代盒模型

.x {
    box-sizing:border-box;
}

关于边界的正负数

margin可以有负数,而padding不可以为负数。
负数意味着样式会重叠入侵。
[图片上传失败...(image-b2c4e1-1642049365894)]

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>外边距为负</title>
        <style>
            span {
                background-color: #00FFFF;
                border: solid;
                margin-left: -20px;
                margin-bottom: 10px;
            }
            .box1 {
                background-color: #87CEEB;
                margin-top: 10px;
                width: 200px;
            }
            .box2{
                background-color: #008000;
                width: 200px;
                margin-top: -10px;
            }
            section {
                margin-top: 13px;
                margin-bottom: 87px;
            }
            header {
                margin-top: 87px;
            }
        
            footer {
                margin-bottom: 13px;
            }
            
        </style>
    </head>
    <body>
        <span>Inline盒子</span>
        <span>Inline盒子2</span>
        <div class='box1'>block盒子1</div>
        <div class='box2'>block盒子2</div>
    </body>
</html>

关于外边距折叠(塌陷)

可以参考视频:CSS外边距塌陷 - Web前端工程师面试题讲解

折叠的规则很好理解,大的覆盖小的,长的覆盖短的。
比如A和B的外边距折叠,A的外边距为10, B的外边距为20,那么结果是AB的间距为20。
外边距重叠的情况一共有三种。

  • 垂直方向上外边距相接的元素

之所以是垂直方向,是因为折叠发生在block元素上,block元素并不存在水平相接的情况。
对于Inline元素,比如说两个水平相接的span标签,实测是不会折叠的。


1.jpg
  • 父子元素之间的折叠

这个有点复杂,MDN的说法如下:

如果没有边框border,内边距padding,行内内容,也没有创建块级格式上下文或清除浮动来分开一个块级元素的上边界margin-top 与其内一个或多个后代块级元素的上边界margin-top;或没有边框,内边距,行内内容,高度height,最小高度min-height或 最大高度max-height 来分开一个块级元素的下边界margin-bottom与其内的一个或多个后代后代块元素的下边界margin-bottom,则就会出现父块元素和其内后代块元素外边界重叠,重叠部分最终会溢出到父级块元素外面。

举例如下:
设置了border:solid, 正常:


3.jpg

将border:solid设置为none后,出现了折叠。(可以理解为偏移的参照系变化了,未设置Border,参照变成了上面的divB)


5.jpg

更为深入的探究,等往后遇到了再说吧。

  • 空元素
    空元素自己的top和bottom折叠
    同时遵循1

参考:MDN盒模型

相关文章

  • 6.3盒模式

    盒模型 什么是CSS盒模型? CSS盒模型仅仅是一个形象的比喻, HTML中的标签都是盒模型 CSS盒模型指那些可...

  • 盒模型

    什么是CSS盒模型? CSS盒模型仅仅是一个形象的比喻, HTML中的标签都是盒模型 CSS盒模型指那些可以设置宽...

  • 浅谈CSS中的盒模型

    显然,盒模型比我想象的,比我最开始在前端课程中学到的其实要复杂得多。 我将现阶段学到的内容与过去学习所留下的印象进...

  • 1.CSS盒模型

    css盒模型 css中,Box Model叫盒子模型;盒模型规定了 元素内容(content)、内边距(paddi...

  • CSS盒模型作业

    前言:本章主要讲CSS盒模型,CSS盒模型是CSS中most import 的一个概念,如果我们想学好CSS,那么...

  • CSS3之盒模型

    一、CSS盒模型简介 在CSS中主要有以下盒模型:inline、inline-block、block、table、...

  • 任务九~盒模型

    一、盒模型包括哪些属性? CSS盒模型~即定义了Web页面中的元素是如何看做盒子来解析CSS盒模型属性有: con...

  • 盒子模型

    CSS中由一种基础设计模式叫盒模型,盒模型定义了Web页面中的元素如何来解析.CSS中每一个元素都是一个盒模型,包...

  • CSS盒模型讲解

    CSS中,最重要的概念之一,就是盒模型。 盒模型由以下CSS属性组成: 内容 padding 内边距 borde...

  • CSS可视化格式模型学习

    CSS最重要的三个概念是浮动、定位和盒模型 盒模型 css中每个元素都是一个盒模型,盒模型有两种模式,第一种是标准...

网友评论

      本文标题:浅谈CSS中的盒模型

      本文链接:https://www.haomeiwen.com/subject/qqyncrtx.html