CSS 盒子模型(border、padding、margin)

CSS盒子模型
Css盒子模型本质上是一个盒子,封装周围的html元素,他包括边框、内容、外边距、内边距。
1.边框
边框(border)可以设置元素的边框,他由三部分组成:边框宽度(粗细)、边框样式、边框颜色。

border: border-width boder-style border-color
<style>
        div {
            width: 300px;
            height: 200px;
            /* border-width 边框的粗细  一般情况下都用 px */
            border-width: 5px;
            /* border-style 边框的样式  solid 实线边框   dashed 虚线边框  dotted 点线边框*/
            border-style: solid;
            /* border-style: dashed; */
            /* border-style: dotted; */
            /* border-color 边框的颜色  */
            border-color: yellow;


        }
    </style>

边框的复合写法:border: 1px solid red; (没有顺序)
边框的分开写法:border-top: 1px solid red; (只设置上边框,其余边框的设 置同理)

表格的细线边框(border-collapse)
border-collapse属性控制浏览器绘制表格边框的方式,控制相邻单元格的边框。

border-collapse: collapse;
  • collapse:合并
  • 表示相邻边框合在一起

边框会影响盒子的实际大小(变宽会额外增加盒子的实际大小),有如下两种解决办法:
1.测量盒子大小时不量边框。
2.若测量盒子时包含了边框,则需要用height、width减去边框。

<style>
        /* 我们需要一个200*200的盒子, 但是这个盒子有10像素的红色边框 */
        div {
            width: 180px;
            height: 180px;
            background-color: pink;
            border: 10px solid red;
        }
    </style>

2.内边距
内边距(padding)是指边框与内容的距离
padding-left(左内边距)/right(右内边距)/top(上内边距)/bottom(下内边距)

值的个数表达意思
padding: 5px上下左右都是5px内边距
padding:5px 6px上下内边距是5px,左右内边距是6px
padding: 5px 6px 7px上内边距是5px ,左右内边距是6px, 下内边距是7px
padding: 5px 6px 7px 8px上内边距是5px,右内边距是6px,下内边距是7px,左内边距是8px(顺时针方向)

注意:当我们给盒子指定padding之后
1.添加了内边距,内容和边框有了距离。
2.padding影响了盒子的实际大小,也就是说若盒子有宽度和高度,此时指定内边框会撑大盒子
解决方案
如果想让盒子跟效果图保持一样的大小,则让height/width减去多余出来的内边距即可
padding不会撑开盒子的情况
没有指定盒子的宽度/高度,此时padding不会撑开盒子的大小

<style>   
       h1 {
           height: 200px;
           background-color: yellow;
           padding: 30px;
       }
       div {
           width: 300px;
           height: 100px;
           background-color: red;
       }
       div p {
           padding: 30px;
           background-color: blue;
       }
    </style>
</head>
<body>
   <h1></h1>
   <div>
       <p></p>
   </div>
</body>

3.外边距(margin)
外边距(margin)控制盒子与盒子之间的距离
margin-left/right/top/bottom
外边距的典型应用:可以让盒子水平居中,但是必须满足以下条件:

  • 块级盒子必须指定宽度
  • 左右外边距设置为auto
    常见的三种写法:
    margin-left: auto; margin-right:auto; margin: auto; margin: 0 auto;

若想要给行内元素或行内块元素设置水平居中,则只需给其父元素添加text-align:center即可。

外边距合并
使用margin定义块元素的垂直外边距时,可能会出现外边距的合并问题。
1.上下相邻的块元素垂直外边距的合并:

  • 若两个都是正数,则选取两个外边距中的较大值
  • 若都是负数,选取绝对值较大的
  • 若一正一负,则取两值的和

解决方案:尽量只给一个盒子添加margin值
2.左右相块元素外边距的合并:
选取两个外边距的和
嵌套元素垂直外边距的塌陷
对于两个嵌套关系的块元素(父子关系),父元素有上外边距的同时子元素也有上外边距,此时父元素会塌陷较大的外边距值
解决方案:

 <style>
        .yellow{
            height: 400px;
            width: 400px;
            background-color: pink;
            /* margin: 0 auto; 盒子居中 */
            margin-top: 50px;
            /* padding-top: 50px; 方法一:为父元素定义上内边距 */
            /* border-top: transparent 1px solid; 方法二:为父元素定义上边框 */
            /* overflow: hidden;  */
            /* 方法三:为父元素添加overflow: hidden */
        }
        .skyblue{
            height: 200px;
            width: 200px;
            background-color: skyblue;
            /* margin-top: 100px; 父元素和子元素同时具有上边距,则此时父元素出现塌陷 */
            margin-top: 100px;
        }
    </style>
</head>
<body>
    <div class="yellow">
    <div class="skyblue"></div>
    </div>
</body>

清除内外边距
网页元素很多都带有默认的页面边距,清除他们的方法:

* {
   padding: 0;
   margin: 0;
   }
   这也是css的第一行代码

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值