CSS-盒子模型

概念:所谓盒子模型(Box Model)就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器。每个矩形都由元素的内容(content)、内边距(padding)、边框(border)和外边距(margin)组成。
盒子模型特性
在这里插入图片描述

一、盒子模型的分类

标准的盒子模型

在这里插入图片描述
组成部分: 内容区 content + 填充补白(里面的) + padding + 边框 border+外边距 (margin)
在标准盒子模型下,计算一个容器的总高度

  1. 如果是计算的自己 设置的height+padding+border
  2. 如果计算的是父元素的,子元素设置的height+子元素设置padding+子元素设置border+子元素设置margin。
怪异盒子模型(IE的标准盒模型)

在这里插入图片描述
组成部分: 内容区域 + margin外边距
触发条件:

  1. 给元素添加CSS3属性 box-sizing:border-box
div{box-sizing:border-box;}
  1. CSS3属性的兼容都到IE9+,部分兼容到IE10+
  2. 所以如果用CSS3新属性,就不要考虑低版本浏览器了
  3. 触发容器为怪异盒子模型之后,再给元素添加border或者 padding就不会把盒子撑大,也不需要去做减法了。
  4. 文档结构的 doctype 不写,这个是在 IE8 IE7 IE6 IE5等低版本上有,测试可以在 win7 系统上比较老旧的IE浏览器上,win10 自带的新IE浏览器不可以。

二、盒子边框(border)

border 属性来定义盒子的边框,该属性包含3个子属性:border-style(边框样式),border-color(边框颜色),border-width(边框宽度)。

1、边框样式border-style

属性值说明
none默认值,无边框,不受任何指定的 border-width 影响
hidden隐藏边框,IE 不支持
dotted定义边框为点线
dashed定义边框为虚线
solid定义边框为实线
double定义边框为双线边框,两条线及其间隔宽度之和等于指定的border-width 值
groove根据 border-color 定义 3D 凹槽
ridge根据 border-color 定义 3D 凸槽
inset根据 border-color 定义 3D 凹边
outset根据 border-color 定义 3D 凸边

2、综合写法

border : border-width || border-style || border-color

border 是一个复合属性,可以把3个子属性结合写在一起。注意:顺序不能错误。

扩展1:

table{ border-collapse:collapse; }

collapse 单词是合并的意思,通过该属性可以来设置一个细线表格。
扩展2:
圆角边框(CSS3):
语法:取值可以是指定的固定的长度,也可以使用百分比来表示。

border-radius: 左上角  右上角  右下角  左下角;
border-radius: 10px 40px  80px  100px;    /* 左上角 10    右上角 40  右下角 80   左下角   右下角100 */

三、margin 应用

  1. margin-top:上外边距
  2. margin-right:右外边距
  3. margin-bottom:下外边距
  4. margin-left:上外边距
  5. margin:上外边距 右外边距 下外边距 左外边
  6. margin:0 auto;实现一个有宽度的容器水平居中。

注意点:

A. margin支持左右auto,上下无效
B. margin-top使用的时候,有兼容问题。

产生条件:默认情况下,如果一个子元素给了 margin-top ,父元素会一起下来,这个是兼容问题

解决方法:

  1. 子元素或者父元素浮动(看页面布局来定)
  2. 给父元素添加border-top
  3. 给父元素添加overflow:hidden;
    1、 拓展案例
 <style>
        .wrapper{width: 200px;height: 200px;background: skyblue;}
        .content{width: 50px;height: 50px;background:pink;margin-top: 50px;}
 </style>
</head>
<body>
    <div class="wrapper">
        <div class="content"></div>
    </div>
</body>

在这里插入图片描述

    <style>
        .wrapper{width: 200px;height: 200px;background: skyblue;overflow: hidden;}
        .content{width: 50px;height: 50px;background:pink;margin-top: 50px;}
    </style>
</head>
<body>
    <div class="wrapper">
        <div class="content"></div>
    </div>
</body>

在这里插入图片描述
C、margin的上下外边距重叠{原因是因为BFC}

(注意:具体详细点击下面一篇BFC的深层理解和应用场景及布局方式的文章中有介绍)

BFC的深层理解和应用场景及布局方式

产生条件:默认情况下,2个并列的元素,上面元素给了margin-top,下面元素给了margin-bottom,这个时候上下会发生重叠,解析的结果是最大的数值。
解决方法:
1、给下面的元素添加父元素并且添加声明overflow:hidden;

四、padding 应用

padding 是内间距 (填充 补白)
什么时候用,需要调整间距,并且这个间距相对于该元素来说是里面的时候用
用法:简写 和拆开

padding:10px;  padding:10px 20px 30px 40px;
padding-top   bottom  left  right 
注意点:
  1. padding添加上去之后,会把容器给撑大, 如果设置了容器固定的宽高,又添加了padding之后,想要保证盒子大小不变,必须得减去padding的数值,如果没有设置容器的宽高,那么就不需要做减法
  2. padding不支持负值写法
  3. padding也不支持auto

五、盒子模型布局稳定性

根据稳定性来分,建议如下:

按照 优先使用 宽度 (width) 其次 使用内边距(padding) 再次 外边距(margin)。

width >  padding  >   margin

原因:

  1. margin 会有外边距合并 还有 ie6下面margin 加倍的bug(讨厌)所以最后使用。
  2. padding 会影响盒子大小, 需要进行加减计算(麻烦) 其次使用。
  3. width 没有问题 我们经常使用宽度剩余法 高度剩余法来做

六、盒子阴影

box-shadow: 水平阴影 垂直阴影 模糊距离 阴影尺寸 阴影颜色  内/外阴影;

在这里插入图片描述

注意
  1. 前两个属性是必须写的。其余的可以省略。
  2. 外阴影 (outset) 默认值,但是不能写 ,想要内阴影写上 inset 即可。
  3. 可以添加多个阴影,如同时添加内阴影和外阴影。

友情提示:此文章代表个人观点,优秀的朋友,可以评论区沟通交流。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值