CSS盒子模型2

简介: CSS盒子模型

外边距:margin

margin属性设置外边框,即控制盒子和盒子之间的距离。

举例:

<head>
    <style>
      div{
        width:200px;
        height:200px;
        background-color: aqua;
      }
      .one{
        margin-bottom: 20px;
        margin-left: 20px;
        margin-top: 20px;
        margin-right:20px;
      }
    </style>
</head>
<body>
    <div class="one">1</div>
    <div>2</div>
</body>

显示如下:

同样的margin也可以有简写方式,方法和padding相同,这里就不进行赘述了。

实现让块级盒子水平居中:

我们可通过设置外边距让块级盒子水平居中,但是必须满足两个条件:

1:盒子必须指定宽度(width)
2:盒子左右的外边距都设置为auto

常见的写法有以下三种:

第一种:最推荐!!!

margin: 0 auto;//上下外边距为0,左右auto

第二种:

margin: auto;//上下左右均为auto

第三种:

margin-left: auto;
margin-right: auto;

举例:

将该盒子设置为举例页面上下100px,左右居中对齐

<head>
    <style>
      div{
        width:300px;
        margin: 100px auto;
        background-color: aquamarine;
      }
    </style>
</head>
<body>
    <div class="one">1</div>
</body>

显示如下:

注:上述方法是实现让块级元素水平居中,行内元素或者行内块元素如果想实现水平居中,那么只需要给它的父元素添加" text-align:"center" "即可

举例:

<head>
    <style>
      div{
        width:300px;
        margin: 100px auto;
        background-color: aquamarine;
      }
      span{
        width: 100px;
        background-color:blue;
      }
    </style>
</head>
<body>
    <div class="one">div
        <span>
            span
        </span>
    </div>
</body>

显示如下:

行内元素和行内块元素并未水平居中显示!

给父级元素添加text-align:“center”:

div{
        width:300px;
        margin: 100px auto;
        background-color: aquamarine;
        text-align: center;
      }

显示如下:

外边距合并:

使用margin定义块元素的垂直外边距时,可能会出现外边距的合并。

相邻块元素垂直外边距的合并:

当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有下边距margin-bottom,下面的元素有上边距margin-top,则他们之间的垂直间距不是margin-bottom与margin-top之和,取两个值中较大者这种现象被称为相邻块元素垂直外边距的合并。


杜绝这种现象的方法即为:尽量只给一个盒子添加margin值

举例:

准备两个颜色大小均不相同的盒子:

<head>
    <style>
        body {
            margin: 0;
        }
        .box1 {
            width: 200px;
            height: 200px;
            background-color:aqua;
        }
        .box2 {
            width: 100px;
            height: 100px;
            background-color:blueviolet;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>

两个盒子均为设置外边距的值,显示效果如下:

上下盒子都设置外边距,且下盒子的外边距值大于上盒子的,显示如下:

最终两盒子的距离为两者中的外边距较大值!

上盒子设有外边距,而下盒子未设置外边距:


嵌套块元素垂直外边距的塌陷:

对于两个嵌套关系(父子关系)的块元素,父元素有上外边距,同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。

举例:

准备两个具有嵌套关系的盒子:

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
        body {
            margin: 0;
        }
        .box1{
            width: 300px;
            height: 300px;
            background-color:aqua;
        }
        .span1 {
            width: 100px;
            height: 100px;
            background-color:blueviolet;
        }
    </style>
</head>
<body>
    <div class="box1"><div class="span1"></div></div>
</body>
</html>

父盒子和子盒子都未设置边距,显示如下:

我们可以看到这两个盒子都与网页的顶部紧紧相连。

将父盒子的margin-top设置为:30px,此时父盒子带着它的子盒子整体相对于页面向下移动了30px,显示效果如下:

但此时子盒子的上部还是紧贴父盒子


尝试通过设置子盒子的margin-top且设置子盒子的margin-top大于父盒子的margin-top,显示效果如下:


子盒子并未向下移动,而是父盒子和子盒子一起向下移动了些许距离,而这个距离即为父盒子和子盒子中margin-top中的较大值。


而这就被称为嵌套块元素垂直外边距的塌陷。

实现“”父子分离”:

为了解决上面这种“塌陷”的现象,有以下三种解决方案:

1:为父元素定义上边框:


注意:为了美观,这里我们将边框设置为transparent

.box1{
            width: 300px;
            height: 300px;
            border-top: 40px transparent solid;
            background-color:aqua;
 }

显示如下:

2:为父元素定义上内边距:

.box1{
            width: 300px;
            height: 300px;
            padding-top: 20px;
            background-color:aqua;
}

显示如下:

3:为父元素添加overflow:hidden

 .box1{
        width: 300px;
        height: 300px;
        overflow: hidden;
        background-color:aqua;
    }
    .span1 {
        width: 100px;
        height: 100px;
        margin-top: 20px;
        background-color:blueviolet;
    }

显示如下:

小tips:虽然以上三种方法都能够解决“塌陷问题”,但是我们还是最推荐最后一种,因为前两种方法都会改变块级元素的大小,不建议使用,而最后一种方法并没有改变,因此是最推荐,也是最常用的。


清除内外边距:

网页元素有很多都带有默认的内外边距,而且不同的浏览器默认的值也不相同。

举例:

因此在进行网页布局之前,我们首先要清除网页元素的内外边距,语法:

*表示选择页面中的所有网页元素

<style>
        *{
            padding: 0;
            margin: 0;
        }
    </style>

显示如下:

行内元素为了顾忌兼容性,尽量只设置左右外边距,不要设置上下内外边距,但是转换为块级和行内块元素就可以进行设置了。

相关文章
|
3月前
|
前端开发
如何设置 CSS 盒子模型的边框样式?
CSS盒子模型的边框样式可以通过`border`属性设置,包括边框宽度、样式和颜色。例如:`border: 2px solid red;` 设置了2像素宽的红色实线边框。也可分别设置四边,如`border-top`、`border-right`等。
|
3月前
|
前端开发 开发者
css两种盒子模型
在CSS中,有两种盒子模型:标准盒子模型和IE盒子模型(怪异盒子模型)。标准盒子模型中,`width`和`height`仅指内容区的尺寸,总宽度和高度还包括内边距、边框和外边距。IE盒子模型中,`width`和`height`包括内容区、内边距和边框,总宽度和高度仅加外边距。通过`box-sizing`属性可以切换这两种模型,`box-sizing: content-box;`表示标准盒子模型,`box-sizing: border-box;`表示IE盒子模型。
|
3月前
|
前端开发 容器
给 CSS 盒子模型添加边框时,需要注意什么?
在给CSS盒子模型添加边框时,需要注意边框的宽度、样式和颜色,以及它如何影响盒子的总尺寸和布局。边框会增加盒子的总宽度和高度,可能需要调整其他属性以保持布局的完整性。
|
4月前
|
前端开发
CSS属性:盒子模型
CSS属性:盒子模型
41 0
|
2月前
|
前端开发
CSS 盒子模型
CSS 盒子模型
28 4
|
3月前
|
前端开发
彻底搞懂css盒子模型
【10月更文挑战第1天】
75 9
|
5月前
|
前端开发 开发者
【前端大揭秘】CSS盒子模型的爱恨情仇:一场关于标准与IE模型的精彩对决!
【8月更文挑战第26天】本文深入探讨CSS中的两大盒子模型——标准盒模型与IE盒模型。通过理论解析与实例代码,清晰展示了两种模型下元素尺寸的构成方式及其应用场景。标准盒模型适合精确控制内容区尺寸,而IE盒模型在处理固定宽度元素时更为直观。掌握这些知识将帮助前端开发者在实际项目中做出更优的设计决策,提升网页布局的质量与美观性。
43 1
|
5月前
|
前端开发
HTML+CSS基础知识(2)选择器的使用、盒子模型的讲解、列表的使用
该博客文章详细介绍了HTML和CSS的基础知识,包括CSS样式的应用方式、语法规则、选择器的使用、盒子模型、内边距、外边距、元素的显示类型以及overflow属性处理溢出内容的方法,并通过代码示例和测试结果截图展示了这些知识点在网页设计中的应用。
HTML+CSS基础知识(2)选择器的使用、盒子模型的讲解、列表的使用
|
7月前
|
前端开发 开发者
CSS盒子模型(如果想知道CSS有关盒子模型的知识点,那么只看这一篇就足够了!)
CSS盒子模型(如果想知道CSS有关盒子模型的知识点,那么只看这一篇就足够了!)
|
6月前
|
前端开发
CSS:盒子模型
CSS:盒子模型

热门文章

最新文章