CSS 盒模型

Posted 一朵花花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS 盒模型相关的知识,希望对你有一定的参考价值。

盒模型

构成

每一个 html 元素就相当于是一个矩形的 "盒子
这个盒子由这几个部分构成

border —— 边框
content —— 内容
padding —— 内边距
margin —— 外边距

边框

基础属性

粗细: border-width
样式: border-style,默认没边框;solid-实线边框;dashed-虚线边框;dotted-点线边框
颜色: border-color

支持简写:

border: 1px solid red;

border: 1px solid blue;
border-top: red

上述代码只给上边框设为红色, 其余为蓝色 (层叠性,就近原则)

边框会撑大盒子

举例:

<head>
    <title>边框</title>
    <style>
        #d1 
            width: 300px;
            height: 200px;
            border: 1px solid blue;
        
    </style>
</head>

<body>
    <div id="d1"></div>
</body>

通过 box-sizing 属性可以修改浏览器的行为,使边框不再撑大盒子

* 
    box-sizing: border-box;

刷新页面:

内边距

padding —— 设置内容和边框之间的距离

基础写法

四个方向内边距:

  • padding-top
  • padding-bottom
  • padding-left
  • padding-right

举例:

<head>
    <title>内边距</title>
    <style>
        #d1 
            width: 300px;
            height: 200px;
            border: 2px solid blue;
            padding-top: 10px;
            padding-left: 5px;
        
    </style>
</head>

<body>
    <div id="d1"></div>
</body>

复合写法

可以把多个方向的 padding 合并到一起

  • padding: 5px;表示四个方向都是 5px
  • padding: 5px 10px;表示上下内边距 5px,左右内边距为 10px
  • padding: 5px 10px 20px;表示上边距 5px,左右内边距为 10px, 下内边距为 20px
  • padding: 5px 10px 20px 30px;表示 上5px,右10px,下20px,左30px (顺时针)

举例:

<head>
    <title>内边距</title>
    <style>
        #d1 
            width: 300px;
            height: 200px;
            border: 2px solid blue;
            padding: 5px 10px 20px 30px;
        
    </style>
</head>

<body>
    <div id="d1"></div>
</body>

外边距

margin —— 控制盒子和盒子之间的距离

基础写法

四个方向外边距:

  • margin-top
  • margin-bottom
  • margin-left
  • margin-right

举例:

<head>
    <title>外边距</title>
    <style>
        #d1 
            width: 200px;
            height: 100px;
            border: 2px solid blue;
            margin-bottom: 10px;
        
        #d2 
            width: 200px;
            height: 100px;
            border: 2px solid red;
            margin-top: 20px;
        
    </style>
</head>

<body>
    <div id="d1">牛奶</div>
    <div id="d2">鸡蛋</div>
</body>

复合写法

类似于 padding 的复合写法

  • margin: 10px: 四个方向都设置
  • margin: 10px 20px: 上下为10,左右20
  • margin: 10px 20px 30px:上10,左右20,下 30
  • margin: 10px 20px 30px 40px: 上10,右20,下 30,左40

举例:

<head>
    <title>外边距</title>
    <style>
        #d3 
            width: 200px;
            height: 100px;
            border: 2px solid red;
            margin: 5px 10px 20px 30px;
        
    </style>
</head>

<body>
    <div id="d3">复合写法</div>
</body>

块级元素水平居中

前提:

  • 指定宽度(如果不指定宽度,默认和父元素一致)
  • 把水平 margin 设为 auto

举例:

  • 未水平居中:
<head>
    <title>块级元素水平居中</title>
    <style>
        div 
            width: 300px;
            height: 200px;
            background-color: thistle;
        
    </style>
</head>

<body>
    <div></div>
</body>

  • 水平居中:
<head>
    <title>块级元素水平居中</title>
    <style>
        div 
            width: 300px;
            height: 200px;
            background-color: thistle;
            margin: 0 auto;
        
    </style>
</head>

<body>
    <div></div>
</body>


注意:

  • margin: auto —— 是给块级元素用得到
    text-align: center —— 是让 行内元素/ 行内块元素 居中的
  • 对于垂直居中,不能使用 "上下 margin 为 auto " 的方式

以上是关于CSS 盒模型的主要内容,如果未能解决你的问题,请参考以下文章

CSS 盒模型

CSS 盒模型

关于盒模型的外边距padding和内边距margin

盒模型

盒模型

读《精通css》--第三章可视化格式模型