盒子模型成分结构以及水平/垂直方向布局,阴影,圆角

Posted 开到荼蘼223's

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了盒子模型成分结构以及水平/垂直方向布局,阴影,圆角相关的知识,希望对你有一定的参考价值。

盒子模型

在我们进行网页布局时一定离不开盒子模型,css将页面中所有元素都设置为一个矩形的盒子,元素设置为矩形后的盒子后,对页面的布局就变成将不同盒子摆放到不同位置。

盒子模型的组成

标准W3C盒子模型

在这里插入图片描述

每一个盒子模型都是由以下几个部分组成:

  • 内容区 content
  • 边框 border
  • 内边距 padding
  • 外边距 margin

内容区

内容区(content),元素中所有的子元素和文本内容都在内容区中排列,内容区大小由width和height决定。

边框

边框(border)属于盒子的边缘,位于盒子内部,边框的大小会影响整个盒子的大小,设置边框要设置三个样式:

  • 边框的宽度 border-width
    border-width设置四个值对应的边框顺序分别是: 上 右 下 左
    三个值: 上 左右 下
    两个值: 上下 左右
    一个值: 上下左右

  • 边框的颜色 border-color

  • 边框的样式 border-style
    边框的样式常用有以下几种:

  1. solid表示实线
  2. dotted点状虚线
  3. dashed虚线
  4. double双线

也可以设置各个方向的边框
border-top
border-right
border-bottom
border-left
border简写属性,可设置所有相关样式,没有顺序要求

              border:solid 10px orange;

内边距
内边距(padding),内容区和边框之间的距离是内边距,内边距的设置会影响盒子的大小,背景颜色会延申到内边距上,一共由四个方向的内边距:

  • padding-top
  • padding-right
  • padding-bottom
  • padding-left
    padding内边距的简写属性,可以同时指定四个方向的内边距,规则和border-width一样
                 padding:10px 20px 30px 40px;

外边距
外边距(margin),外边距不会影响盒子可见框的大小,但外边距还会影响盒子的位置,一共有四个的方向的外边距。

  • margin-top
  • margin-right
  • margin-bottom
  • margin-left
    注意:margin 可以设置负值
    margin简写和padding规则一样

盒子的大小

默认情况下,盒子的可见框大小有内容区,内边距和边框共同决定决定,在网页布局时往往会出现一些宽高与预期不符的问题。
此时我们可以用box-sizing用来设置盒子尺寸的计算方法。
box-sizing可选值:

  • content-box 默认值,宽度和高度用来设置内容区的大小
  • border-box 宽度和高度用来设置整个盒子可见框的大小
    注意:此时width和height指的是内容区 内边距 边框的总大小
    <style>
        .box1{
            width:100px;
            height:100px;
            background-color:seagreen;
            padding:10px;
            border:10px red solid;
            box-sizing: border-box;
        }
    </style>
</head>
<body>
    <div class="box1"></div>    
</body>

在这里插入图片描述
设置完box-sizing:border-box;后打开网页开发者工具查看盒子大小发现width和height自动变成了60px,盒子整体大小即是内容区 内边距 边框的总大小。

盒子的水平方向布局

元素在其父元素的水平方向的位置由以下几个属性共同决定

  • margin-left
  • border-left
  • padding-left
  • width
  • padding-right
  • border-right
  • margin-right

一个元素在其父元素中水平布局时必须要满足以下的等式:
margin-left + border-left + padding-left + width
+padding-right + border-right margin-right 等于其父元素内容区的宽度(必须满足)

以上等式必须满足,如果不成立,则称谓过度约束,则等式会自动调整auto使其满足。

  • 如果七个值没有auto情况,则浏览器会自动调整margin-right值使等式满足
  • 这七个值中有三个可以设置为auto
    分别是width,margin-left,margin-right
    常见设置auto的三种情况:
  1. 如果将一个宽度和一个外间距设置为auto则宽度会自动调整到最大,设置为auto的外边距会自动为0
  2. 如果三个值都设置为auto,则外边距为0,宽度最大
  3. 如果将两个外边距设置为auto,宽度固定值,则会将外边距设置相等
    <style>
        .outer{
            width:800px;
            height:200px;
            border:10px red solid;
        }
        .inner{
            width:200px;
            height:200px;
            background-color: teal;
            margin-right:auto;
            margin-left:auto;
        }
    </style>
</head>
<body>
    <div class="outer">
        <div class="inner"></div>
</body>

在这里插入图片描述
所以我们经常利用这个特点来使一个元素水平居中

               width:100px;
               margin:0 auto;

盒子的垂直方向布局

当子元素高度大于父元素高度时内容会溢出,使用overflow设置父元素如何处理子元素的溢出,可选值:

  • visible默认值 子元素会从父元素中溢出,在父元素外部的位置显示
  • hidden 溢出的内容会被裁剪不会显示
  • scroll 生成滚动条 通过滚动条来查看完整内容
  • auto 根据需要生成滚动条
<style>
        .box1{
            background-color: violet;
            width:200px;
            height:200px;
            overflow: hidden;
        }
        .box2{
            width:100px;
            height:300px;
            background-color:red;            
        }
</style>
</head>
<body>
       <div class="box1">
           <div class="box2"></div>
       </div>
</body>

使用overflow:hidden后,溢出内容被裁剪
在这里插入图片描述

默认样式

浏览器会为元素设置一些默认样式,默认样式存在会影响布局,通常情况下编写网页必须要去除默认样式(pc端页面),去除默认样式的方法如下:

        *{
            margin:0;
            padding:0;
        }
<ul>
        <li>列表项1</li>
        <li>列表项2</li>
        <li>列表项3</li>
</ul>

去除浏览器默认样式前后对比
在这里插入图片描述
在这里插入图片描述

轮廓阴影

css可以给盒子设置阴影,box-shadow用来设置元素的阴影,设置阴影不会影响元素的布局。阴影设置方法
第一个值:水平偏移量 设置阴影的水平位置 正值向右移动 负值向左移动
第二个值:垂直偏移量 正值向下移动 负值向上移动
第三个值:阴影的模糊半径 值越大越模糊
第四个值:阴影的颜色

.box1{
            width:200px;
            height:200px;
            background-color: seagreen;
            box-shadow: 5px 5px 10px rgba(0,0,0,.3)
        }

阴影设置效果
在这里插入图片描述
outline用来设置元素的轮廓线,用法和border相同,轮廓和边框不同点时轮廓不会影响可见框的大小

            outline:10px red solid;

圆角

用css可以设置盒子的边角样式,border-radius 用来设置圆角,圆角设置的是圆的半径大小,可以用来指定四个的半径
border-top-left-radius:
border-top-right-radius:
border-bottom-left-radius:
border-bottom-right-radius:
三个值 左上 右上/左下 右下
两个值 左上/右下 右上/左下
如果想设置一个圆形 ,可以直接将border-radius设置成50%。

    <style>
        .box2{
            width:200px;
            height:200px;
            background-color: orange;
            border-radius: 50%;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
</body>

在这里插入图片描述

以上是关于盒子模型成分结构以及水平/垂直方向布局,阴影,圆角的主要内容,如果未能解决你的问题,请参考以下文章

css盒子模式都具备哪些属性

HTML连载39-外边距合并现象盒子模型以及宽度和高度

全网最全实现元素(盒子图片)水平垂直方向居中

盒子常规流和浮动基础

CSS布局--垂直水平居中

flex