8.CSS盒子模型

盒子模型:

1.盒子模型的概述:

1.1网页布局的过程:

  1. 先准备好相关的网页元素.
  2. 利用CSS设置好盒子模型找到对应的位置 (核心)
  3. 往盒子里放内容.

1.2盒子模型(BOX MODEL)的组成:

  • border 盒子边框

  • content 内容

  • padding 内边距 (盒子和内容的距离)

  • margin 外边距 (盒子与盒子之间的距离)

在这里插入图片描述

2.盒子边框(border):

  • border可以设置元素的边框 .边框三部分组成 粗细 样式 颜色.

    border: boder-width || border-style || border-color   
         /* 宽度边框的粗细     边框的样式        边框的颜色 */
    
    
    • 边框的粗细(用px作为单位):

      div {
          width: 300px;
          height: 200px;
          border-width: 5px;
      }
      
    • 边框的样式:

      /*实线边框*/
      div {
        border-style: solid;  
      }
      /*虚线边框*/
      div {
        border-style: dashed;  
      }
      /*点线边框*/
      div {
        border-style: dotted;  
      }
      
    • 边框的颜色:

      div {
      border-color: red;
      }
      
    • 边框的复合写法:

      border: 宽度 样式 颜色; /*没有顺序要求*/
      
    • 边框的分开写法:

      border-top: 宽度 样式 颜色;   /*只使用上边框*/
      
      

2.1 表格的细线边框的方法 (表格本质上是一个外盒子 加上若干个内盒子组成):

table {
border: 1px solid red; /*设置表格外边框为1px 实线边框 颜色为红色*/
}
td {
    border: 1px solid red; /*设置表格内框线为 1px 实线类型 颜色为红色*/
}

  • 合并相邻的边框 使用border-collapse: collapse; :

    td {
    border-collapse: collapse; /*设置相邻的盒子相互贴着  collapse英语合并的意思*/
    }
    

注意 : 盒子边框会影响盒子的大小,测量盒子大小时,不要测量边框,如果测量时包含了边框需要减去width /height减去边框宽度;

2.2 c s s 3新增特性:

  • 圆角边框 border-radius: length; (radius 语言单词半径的意思) :

    div {
        width: 300px;
        height:  150px; 
        background-color: pink;  /*设置盒子背景颜色*/
        border-radius: 10px;/*让四个角变成圆角  这里写的值是半径值*/
    }
    
  • 常用圆边框写法 <border-radius: 50%;>:

    /*方法一:圆形边框  原理 准备一个正方形的盒子 然后border-radius属性半径写边像素的一半*/
    div {
        width: 300px;
        height:  300px; 
        background-color: pink;  /*设置盒子背景颜色*/
        border-radius: 150px;/*让四个角变成圆角  这里写的值是半径值*/
    }
    /*方法二:border-radius属性写50%  这个是最常用的写法*/
    div {
        width: 300px;
        height:  300px; 
        background-color: pink;  
        border-radius: 50%;
    }
    
  • 常用药丸效果的写法:

    /*一个矩形 使用border-radius值设置为高度的一半即可 */
    div {
        width: 300px;
        height:  150px; 
        background-color: pink;  
        border-radius: 75px;
    }
    

    效果图:

在这里插入图片描述

  • 椭圆的实现方法:

    div {
         width: 300px;
        height:  150px; 
        background-color: pink;  
        border-radius: 150px/75px;
            /*宽度的一半/高度的一半*/
    }
    
  • 我们平常使用的是这个属性的简写写法其实这个属性有复合写法: 左上角、右上角、右下角、左下角;

    分开写:border-top-left-radius、border-top-right-radius、border-bottom-right-radius 和 border-bottom-left-radius

  • 原理:它会拿四个半径为10px的圆 到矩形的四个角去靠近:

    image-20221009142549501

3.内边距(padding ):

  • padding用于设置内边距 ,边框与内容的距离:

    属性作用
    padding-left左内边距
    padding-right右内边距
    padding-top上内边距
    padding-bottom下内边距
    div {
    padding-left: 10px; /*设置坐内边距为10px*/
    }
    
    • 内边距的复合写法:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hjbDuDBL-1671403503522)(imag/image-20221005110312721.png)]

    注意:padding 会影响盒子的实际大小,所以在设计盒子的时候要调整盒子的宽度高度.

padding 撑开盒子的好处:
  • 新浪导航栏:

    <style>
        .nav {
            height: 41px;
            border-top: 3px solid #ff8500;  /*只使用上边框*/
            border-bottom: 1px solid #edeef0;  /*给下框线设置颜色*/
            background-color: #fcfcfc;  /*设置盒子背景*/
            line-height: 41px;
        }
        /* 像这种导航栏因为文字数量不一样不适合指定盒子的宽度 所以我们只需要指定一个高度然后直接使用内边距撑开 */
        .nav a {
            /* a属于含内显示模式不可以指定高度,所以要转换成含内块元素 */
            display: inline-block;
            height: 41px;
            padding: 0 20px;  /*上下0px 左右20px*/
            font-size: 12px;
            color: #4c4c4c;
            text-decoration: none;
            
        }
        .nav a:hover {
            background-color: pink;
            color: #ff8500;
        }
      </style>
    <!-- ************************************************ -->
    <body>
        <div class="nav">
           <a href="#">新浪导航</a>
           <a href="#">手机新浪网</a>
           <a href="#">移动客户端</a>
           <a href="#">微博</a>
           <a href="#">尼玛</a>
        </div>
    </body>
    
    
    padding不会撑开盒子的情况:
    • 如何盒子本身没有指定width/height属性, 则此时padding不会撑开盒子大小

4.外边距:

  • margin 属性用于设置外边距,即控制盒子和盒子之间的距离.

    属性:作用:
    margin-left左外边距
    margin-right右外边距
    margin-top上外边距
    margin-bottom下外边距
  • 外边距 margin的复合写法:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E1kcmhnv-1671403503523)(imag/image-20221009090054556.png)]

        ###### 5.1外边距的典型应用:
    
  • 外边距可以让块级 (注意:行内元素,或者行内块元素是无效的)盒子水平居中(但必须,满足两个条件):

    1.盒子必须指定宽度(width)

    2.盒子左右边距都要设为(auto<自动>)

div {
width: 900px;
height:200px;
background-color: red;
margin: 100px auto;  /*margin-left: auto; margin-right: auto;margin: auto;margin: 0 auto;*/
}
注意:<以下方法是让块元素水平居中 行内元素水平居中要给其父元素添加:text-align:center居中>
    <style>
      
      div {
width: 900px;
height:200px;
background-color: red;
margin: 100px auto;
text-align: center;
}
    </style>
</head>
<body>
    <div> <span>里面的文字</span> </div>

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

  • 对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。
  • 错误展示:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <title>嵌套块元素垂直外边距的塌陷</title>
    <style>
      .father {
        width: 400px;
        height: 400px;
        background-color: blueviolet;
        margin-top: 50px;
      }
     .son {
        width: 200px;
        height: 200px;
        background-color: pink;
        margin-top: 100px;
     }

    </style>
</head>
<body>
<div class="father">
    <div class="son">  </div>
</div>
   
</body>
</html>

效果图:

在这里插入图片描述

塌陷问题解决方案:

可以为父元素定义上边框。

     .father {
         border: 1px solid transparent;  /*给父元素添加一个1像素的透明边框边框*/
        width: 400px;
        height: 400px;
        background-color: blueviolet;
        margin-top: 50px;
      }
     .son {
        width: 200px;
        height: 200px;
        background-color: pink;
        margin-top: 100px;
     }

可以为父元素定义上内边距。

    .father {
        padding: 1px; /*给父亲一个内边距*/
        width: 400px;
        height: 400px;
        background-color: blueviolet;
        margin-top: 50px;
      }
     .son {
        width: 200px;
        height: 200px;
        background-color: pink;
        margin-top: 100px;
     }

可以为父元素添加 overflow:hidden (最常用的方案 不会让盒子变大)

    .father {
         overflow: hidden; 
        width: 400px;
        height: 400px;
        background-color: blueviolet;
        margin-top: 50px;
      }
     .son {
        width: 200px;
        height: 200px;
        background-color: pink;
        margin-top: 100px;
     }

解决后的效果图:

在这里插入图片描述

4.2 清除网页元素的内外边距:

  • 网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致。因此我们在布局前,首先要清除下网页元素的内外边距。(css第一行代码)
* {
    padding: 0;
    margin: 0;
}
  • 注意: 行内元素比较特殊,尽量只设置左右内外边距不要设置上下内外边距,但是转换成块元素就可以了.

5.盒子阴影:

  • C S S 3中新增了盒子阴影,我们可以使用box-shadow 属性设置盒子的阴影.

    box-shadow: h-shadow v-shadow blur spread color inset;
    

在这里插入图片描述

div {
     div {
            width: 300px;
            height: 300px;
            background-color: pink;
            margin: 100px auto;
            box-shadow: 10px -4px 10px 10px rgba(0,0,0,0.3);/*inset这个属性默认就好不要写,写出来不显示效果*/
        }
}
注意:
  1. 默认的是外阴影(outset), 但是不可以写这个单词,否则造成阴影无效
  2. 盒子阴影不占用空间,不会影响其他盒子排列。

三.综合案例的新知识点:

1.怎么去掉li 前面的圆点:

li {
    list-style: none;
}

style=“zoom: 67%;” />

div {
     div {
            width: 300px;
            height: 300px;
            background-color: pink;
            margin: 100px auto;
            box-shadow: 10px -4px 10px 10px rgba(0,0,0,0.3);/*inset这个属性默认就好不要写,写出来不显示效果*/
        }
}
注意:
  1. 默认的是外阴影(outset), 但是不可以写这个单词,否则造成阴影无效
  2. 盒子阴影不占用空间,不会影响其他盒子排列。

三.综合案例的新知识点:

1.怎么去掉li 前面的圆点:

li {
    list-style: none;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sun 马胖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值