CSS 盒子模型

盒子模型

什么是盒子模型?

CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。

计算元素在页面所占据的空间

css规定,所有的元素都为框,所有的元素在页面都占据空间
框:矩形

空间

内容填充边框外边距
widthpaddingbordermargin
height

内容(content)

  • 宽高
  • 文本内容

padding(内边距)

padding的特征

  1. 位于内容content和边框border之间
  2. padding是加给父元素的,调整子元素或者内容的位置
  3. padding是会撑大盒子的
  4. padding没有颜色,背景色会覆盖到padding区域
  5. 谷歌F12中盒子模型的颜色为绿色
  6. padding不支持负值

padding的属性

  • 单边的内边距
  • padding - 方位词(top/right/bottom/left)

单边的内边距

padding-top: 30px;
padding-right: 40px;
padding-bottom: 50px;
padding-left: 60px;

1-4边的内边距 padding

  1. 四边
```css
padding: 10px;
```
  1. 1-上下 2-左右
```css
padding: 10px 60px;
```
  1. 1-上 2-左右 3-下
```css
padding: 10px 20px 30px;
```
  1. 1234 - 上右下左
```css
padding: 10px 20px 30px 40px; 
```

padding的注意点

不独占一行的元素只能添加左右内边距,不能添加上下内边距

margin(外边距或外间距)

margin的特征

  1. 位于边框border之外
  2. margin值是添加给自身的,调整元素自身的位置或者调整元素与元素之间的位置
  3. margin不会撑大盒子
  4. margin在页面显示中没有颜色
  5. 在谷歌F12中显示橘黄色
  6. margin支持负值

margin的属性

  • 单边的外边距
  • margin方位词(top/right/bottom/left)

单边的外边距

margin-top: 30px;
margin-right: 40px;
margin-bottom: 50px;
margin-left: 60px;

1-4边的外边距 margin

  1. 四边

    margin: 10px;
    
  2. 1-上下 2-左右

    margin: 10px 60px;
    
  3. 1-上 2-左右 3-下

    margin: 10px 20px 30px;
    
  4. 1234 - 上右下左

    margin: 10px 20px 30px 40px; 
    

margin的问题—外边距溢出

父元素里面的第一个子元素添加 margin-top,会把父元素带下来

原因:父元素和子元素共用了 margin-top
解决:

  1. 给父元素添加1px的border: 1px solid transparent;或者 1px的 padding-top:1px;

    会撑大盒子,影响布局

  2. 给父元素添加 overflow: hidden; (触发了BFC)

margin的问题—外边距合并

相邻的上下两个元素,上面有margin-bottom,下面有margin-top,垂直外边距相遇,间距发生了重叠,数值以大的为准

解决:间距写单方向即可

外边距相加

左右两个兄弟元素之间,外边距相遇会以相加的为准

margin的注意点

不独占一行的元素只能添加左右外边距,不能添加上下外边距

元素水平居中

独占一行的元素水平居中

  • 给自身设置 margin: auto
  • margin: 0 auto (auto:平分空间)

不独占一行的元素水平居中

  • 给父元素设置 text-align: center;

margin和padding的取值

margin支持

  • 数值
  • 负值
  • auto
  • 百分比(参考父元素的宽度)

padding支持

  • 数值
  • 百分比(参考父元素的宽度)

去除内外边距

很多元素自带内外边距,会影响到布局

/* 重置样式 */
*{
    padding: 0;
    margin: 0;
}

两种盒模型

标准盒子模型 默认

box-sizing: content-box

  • 盒子的总宽度: width(元素内容的宽度)+左右的padding+左右的border+左右的margin

    width(元素自身的宽度)=width(内容的宽度content)

  • 盒子的总高度: height(元素内容的宽度)+上下的padding+上下的border+上下的margin

    height(元素自身的高度)=height(内容的高度)

怪异盒子模型 IE盒子模型(元素加了padding和border会自动压缩盒子内内容)

box-sizing: border-box

  • padding和border不会撑大盒子

  • 盒子的总宽度=width(元素自身的宽度)+左右的margin

    width(元素自身的宽度)=width(元素内容的宽度)+左右的padding+左右的border

  • 盒子的总高度=height(元素自身的高度)+上下的margin

    height(元素自身的高度)=height(元素内容的高度)+上下的padding+上下的border

知识拓展

标准盒模型和怪异盒模型之间的转换:

box-sizing : content-box/boeder-box/inherit;

  • 当为content-box时,将采取标准模式进行解析计算;
  • 当为border-box时,将采取怪异模式解析计算;
  • 当为inherit时,将从父元素来继承box-sizing属性的值;

两个盒模型的区别

标准盒模型

  • 标准盒模型就是W3C的标准盒子模型
  • 内盒尺寸(大小)=width+padding+border
  • 外盒尺寸(空间尺寸)= width+padding+border+margin

怪异盒模型

  • 怪异盒模型就是IE盒模型
  • 内盒尺寸(大小)=width
  • 外盒尺寸(空间尺寸)= width+ margin

两者的效果图对比:
请添加图片描述

盒子模型综合案例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            /* 2.右边 */
            .right {
                width: 798px;
                height: 593px;
                background-color: cyan;
                float: left;
            }
            /* 3.右边小盒子 */
            .box {
                width: 192px;
                height: 292px;
                background-color: yellow;
                float: left;
                margin-right: 10px;
                margin-bottom: 10px;
            }
            /* 4.48的右外边距 */
            .margin0 {
                margin-right: 0;
            }
            /* 5.5678的下外边距 */
            .margin-bottom0 {
                margin-bottom: 0;
            }
        </style>
    </head>
    <body>
        <!-- <div class="left"></div> -->
        <div class="right">
            <div class="box">1</div>
            <div class="box">2</div>
            <div class="box">3</div>
            <div class="box margin0">4</div>
            <div class="box margin-bottom0">5</div>
            <div class="box margin-bottom0">6</div>
            <div class="box margin-bottom0">7</div>
            <div class="box margin0 margin-bottom0">8</div>
        </div>
    </body>
</html>

效果图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值