ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

css_03盒模型

2021-06-09 23:02:22  阅读:199  来源: 互联网

标签:03 盒子 border 模型 边框 padding 10px margin css


盒模型

  1. 盒模型:box model。
  2. div和span是最常见的两个盒子。
  3. 图片,表单元素等这些可以看做为文本,他们并不是盒子。

1.盒子中的区域

一个盒子主要的属性为5个:width height padding border margin.

  • width 内容的宽(标准盒模型下,不是盒子的宽。)
  • height 内容的高(标准盒模型下,不是盒子的高。)
  • padding:内边距
  • border:边框
  • margin 外边距

2.宽、高

  1. 标准盒模型下,我们设置的宽和高,是内容区域的宽和高,并不包含边框,内边距和外边距。

  2. 盒子占有的宽 = 内容的宽 + 左右内边距 + 左右边框

  3. 盒子占有的高 = 内容的高 + 上下内边距 + 上下边框

  4. 假如:一个盒子的宽为500px,border为1px,padding为20px,内容的宽为 ? 500-40-2 = 458px;

  5. 在假设,盒子的宽也不变,边框不变,想让内容的宽变为480px,padding就应该变为9px。

  6. 如果想要一个盒子的真实占有的宽高不变,那么如果内容宽或者高发生变化, padding和边框就要跟着变化。

【注意点】

  1. 盒子的宽,如果不设置的话,默认为父盒子的100%。
  2. 盒子的高度,如果不设置的话,默认为内容的高度。
  3. 一些情况下(盒子中的内容不确定的时候),不需要给盒子设置高度,而是用内容去撑开高度。

3.内边距

内容与边框之间的距离。

内边距的区域也会被背景色渲染。

padding有四个方向

描述四个方向的方法有两种:

小属性写法

      padding-top: 10px;
      padding-right: 20px;
      padding-bottom: 30px;
      padding-left: 40px;

复合属性写法

/* 上下左右四个值都为10px  上下左右*/
padding: 10px;
/* 上下为10px 左右为20px  上下  左右*/
padding:10px 20px;
/* 上为10px 左右为20px 下为30px   上 左右 下 */
padding: 10px 20px 30px;
/* 上右下左 */
padding: 10px 20px 30px 40px;

4.边框 border

盒子占有的最外层的区域。

边框的三要素:

  1. 边框的宽
  2. 边框的线的类型
  3. 边框的颜色

写法

单一属性的写法

border-width: 1px;
border-style: solid;
border-color: brown;

复合属性写法

/* 统一设置每一个边框的样式。 */ 
border: 1px solid brown;    
/* 单独设置每一个边框的样式 */
border-top: 1px solid #ff6700;
border-right: 3px double red;
border-bottom: 5px dashed blue;
border-left: 7px groove green;
/* 单独设置一条边框的单个属性样式 */
border-left-color: yellowgreen;
border-left-width: 1px;
border-left-style: dotted;

取消边框

border-方向:none;
/*取消左边的边框*/
border-left: none;

使用边框制作三角形

1.将div的宽高设置为0,再设置边框。
2.将底部的边框取消。
3.将左右两边的边框设置为透明色。
    div{
      width: 0px;
      height: 0px;
      border: 50px solid;
      border-left-color: transparent;
      border-right-color: transparent;
      border-top-color:brown;
      border-bottom:none;
    }

5.外边距

margin:盒子与盒子之间的距离。

margin有四个方向

描述四个方向的方法有两种:

小属性写法

margin-top: 10px;
margin-right: 20px;
margin-bottom: 30px;
margin-left: 40px;

复合属性写法

/* 上下左右四个值都为10px  上下左右*/
margin: 10px;
/* 上下为10px 左右为20px  上下  左右*/
margin:10px 20px;
/* 上为10px 左右为20px 下为30px   上 左右 下 */
margin: 10px 20px 30px;
/* 上右下左 */
margin: 10px 20px 30px 40px;

盒子水平居中

/**盒子水平居中,盒子必须得有宽度。*/
margin:0 auto;

因为一些标签有默认的margin、 padding,所以一般需要初始化一下页面的margin和padding。

margin: 0;
padding: 0;

外边距重合

概念:垂直方向上相邻的两个元素,如果都有外边距,则相交的地方会出现外边距重合的现象。
外边距重合的三种情况:

  1. 相交的margin值都是正数,取最大值。
  2. 相交的margin值都是负数,取最小值。
  3. 相交的两个margin值为一正一负,取两者之和。

解决外边距重合的办法

  1. BFC规范(未讲解)
  2. 避免出现(两个上下相邻的同级盒子之间,只设置一个盒子的margin即可,要么设置盒子的底部margin,要么设置下盒子的顶部margin)

父盒子的外边距塌陷

理解:当父元素没有填充内容,且没有设置顶部border时,子元素的margin-top不会起作用,但会让父元素和子元素一起掉下来。

【注意】
只有margin-top有这个现象,另外三个方向没有。

解决父盒子的外边距塌陷的办法

  1. BFC规范
  2. 给父盒子添加顶部边框(不推荐)
  3. 将margin换成padding。
    (将子盒子的顶部margin改为父盒子的顶部padding,如果不想改变父盒子占有的高,则需要将父盒子的高度进行修改。
    【注意】
    如果是同级盒子之间,想要有距离,则使用margin。
    如果是父子盒子之间,想要有距离,则使用padding。

标签:03,盒子,border,模型,边框,padding,10px,margin,css
来源: https://blog.csdn.net/m0_56232007/article/details/115003951

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有