CSS第三天——盒子模型

CSS第三天——盒子模型

1.盒子模型

  • 就是把HTML页面中的布局元素看作是一个矩形的盒子, 也就是一个盛装内容的容器。

  • 总结:

    • 盒子模型有元素的内容、边框(border)、内边距(padding) 、和外边距(margin) 组成。
    • 盒子里面的文字和图片等元素是内容区域
    • 盒子的厚度我们成为盒子的边框
    • 盒子内容与边框的距离是内边距(类似单元格的cellpadding)
    • 盒子与盒子之间的距离是外边距(类似单元格的cellspacing)

2.盒子边框(border)

属性作用
border-width定义边框粗细,单位是px
border-style边框样式
border-color边框颜色
  • 边框样式(border-style)

    • none:没有边框即忽略所有边框的宽度(默认值)
    • solid:边框为单实线(最为常用的)
    • dashed:边框为虚线
    • dotted:边框为点线
  • 边框综合性写法

    <style>
    /*边框综合性写法*/
        border: 5px dotted red;
    </style>
    
  • 四条边可以分别指定

    border-top-styleborder-left-color:redborder-bottom:none

  • eg

    <style>
    input {										/* 修改表单输入框的边框 */
    	border: none;							/* 先将原有的边框去掉 */
    	border-bottom: 1px solid pink;			/* 重新设置下边框 *//* 这两行代码不能颠倒,涉及到就近原则 */
    }
    用户名:<input type="text" /><br />
    密码:  <input type="password" />
    </style>
    
  • 表格的细线边框

    • 之前是通过cellspacing="0"(即单元格外边距为0)来实现表格单线效果
    • 但是相邻单元格的边框会出现重叠(只是紧紧靠在一起):1 + 1 = 2
    • 通过css来解决这个问题:table { border-collapse: collapse; }
<style>
table,					/* 注意table,th,td一个不能少 *//* "table"只是最外面的一圈 */
td,
th {
    border: 1px solid deeppink;				
    border-collapse: collapse;				/* collapse意为"合并",这个属性是专门用于处理单元格交界处的合并问题的 */
}
</style>

3.内边距(padding)

  • 属性:padding-left,padding-right,padding-top,padding-bottom

  • 指定padding的值后,盒子被撑开了

  • padding连写(有点重载的味道)(★重难点):

    内边距解释
    padding: 20px上下左右都是20内边距
    padding: 10px 20px上下10,左右20
    padding: 10px 20px 30px上10,左右20,下30
    padding: 10px 20px 30px 40px上10,右20,下30,左40(顺时针)

3.1内盒尺寸计算(元素实际大小)

  • 盒子实际的大小 = 内容(width,height) + 内边距(padding) + 边框(border)

  • 通俗的解释:内边距会撑开内容边框直接扩充在外围

  • 解决方法:在写内容的width和height时,提前做一个减法运算,让他减去多出来的内边距

3.2padding不影响盒子大小情况

特殊情况:如果这个盒子没有宽度,则padding不会撑开盒子

4.外边距

4.1外边距

margin属性用于设置外边距。 margin就是控制盒子和盒子之间的距离

4.2设置

  • margin值的简写(复合写法)代表意思 跟padding完全相同。

  • margin-left左外边距 右上下同理;

4.3块级盒子水平居中

  • 盒子指定宽度;左右外边距设置为auto(margin: 0 auto;

  • 原理是左auto就是左边被填充,因此盒子右对齐;右auto则盒子左对齐;左右auto则居中;上下auto无效

4.4区分(关于水平居中

margin: 0 auto;   块级盒子水平居中

text-align: center; 块级盒子内部元素水平居中(如果有多个元素,它们依旧可以自动居中)

4.5区分(插入图片背景图片

插入图片(img src="…">)移动位置通过盒模型padding margin

​ 背景图片**(background-image: url())通过background-position**

重点: 插入的图片本身就是一个img标签,本身就是一个行内块元素。对于一个元素,我们当然可以通过其外层的padding和它本身的margin来调整其位置。只是前者会撑开盒子;后者因为没有指定宽度,所以不会

而背景图片不是元素,仅仅是一个属性,无论如何不可能改变盒子的大小,也不可能超出盒子

4.6清除元素默认的内外边距

<style>
    *{
	padding:0;
	margin:0;
}
</style>

注意:

  • 行内元素为了照顾兼容性,尽量只设置左右内外边距, 不要设置上下内外边距。

4.7外边距合并

(1)相邻块元素垂直外边距的合并

  • 条件:当上下相邻的两个块元素相遇时,如果上面的元素有下外边距margin-bottom,下面的元素有上外边距margin-top,则他们之间的垂直间距不是margin-bottom与margin-top之和
    取两个值中的较大者这种现象被称为相邻块元素睡直外边距的合并(也称外边距塌陷)
  • 解决方案:尽量给只给一个盒子添加margin值

(2)嵌套垂直相邻

  • 对于两个嵌套的块元素,如果父元素没有上边框及上边距,父、子元素的上边框会发生合并

合并后的外边距为两者中的较大者(它们会选出一个较大的外边距然后共用!)

<style>
    .father {
    border-top: 1px solid transparent;		/* 为父元素定义上边框 */
    padding-top: 1px;						/* 为父元素定义上边距 */
    overflow: hidden;						/* 为父元素添加overflow: hidden *//* 前两种方法都会改变盒子本身的大小,最后一中方法不会 */
}
</style>

5.盒子模型的布局稳定性

  • padding会影响盒子已存在的盒子大小,需要加减计算;

  • margin需要考虑塌陷问题;

  • 因而宽度(width)是最稳定的,我们经常使用宽度剩余法、高度剩余法来做

注:本文根据《黑马程序员-web前端》笔记改编

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值