第二周周报

盒模型

box: 盒子,每个元素在页面中都会生成一个矩形区域(盒子)

盒子类型:

  1. 行盒,display等于inline的元素(不换行)(默认值)
  2. 块盒,display等于block的元素(独占一行)

浏览器默认样式设置的块盒: 容器元素 \ h \ p

常见的行盒: span \ a \ img \ video \ audio

盒子的组成部分

无论是行盒还是块盒,都有下面几个部分组成,从内到外分别是:

  1. 内容 content

width \ height,设置的是盒子内容的宽高.

内容部分通常叫做整个盒子的内容盒 content-box

  1. 填充 padding

盒子边框到盒子内容的距离

padding-left \ padding-right \ padding-top \ padding-bottom

填充区 + 内容区 = 填充盒 padding-box

  1. 边框 border

边框 = 边框样式 + 边框宽度 + 边框颜色

边框样式: border-style
边框宽度: border-width
边框颜色: border-color

边框 + 填充区 + 内容区 = 边框盒 border-box

  1. 外边距 margin

边框到其他盒子的距离

margin-top \ margin-right \ margin-bottom \ margin-left

padding \ margin简写属性:

  1. 一个值:上=右=下=左
  2. 两个值:上=下,左=右
  3. 三个值:上,左=右,下
  4. 四个值:上,右,下,左

盒模型应用

改变宽高范围

默认情况下,width 和 height 设置的是内容盒宽高.

衡量设计稿尺寸时,往往使用的是边框盒,但设置width和height时,则设置的是内容盒.

  1. 精确计算
  2. CSS3: box-sizing(改变宽高的影响范围)

改变背景覆盖范围

默认情况下,背景覆盖边框盒

可以通过background-clip进行修改

<head>
	<style>
		div{
			width: 200px;
            height: 200px;
            background-color:  #008c8c;
            border: #555555 20px dashed;
            background-clip: content-box;
		}
	</style>
</head>	
<body>
	<div></div>
</body>

background-clip为默认时:
在这里插入图片描述
background-clip为content-box时:
在这里插入图片描述

溢出处理

overflow,控制内容溢出边框盒后的处理方式

描述
visible默认值。内容不会被修剪,会呈现在元素框之外。
hidden内容会被修剪,并且其余内容是不可见的。
scroll内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit规定应该从父元素继承 overflow 属性的值。

断词规则

world-break,会影响文字在什么位置被截断换行.

描述
normal普通.CJK字符(文字位置截断),非CJK字符(单词位置截断).
break-all截断所有.所有字符都在文字处截断.
keep-all保持所有.所有文字都在单词处截断.

空白处理

white-space: nowrap

将溢出的文本用省略号代替.

p{
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

在这里插入图片描述

行盒的盒模型

常见的行盒:包含具体内容的元素

span \ strong \ em \ i \ img \ video \ audio

显著特点

  1. 盒子沿着内容延伸
  2. 行盒不能设置宽高

调整行盒的宽高,应该使用字体大小 \ 行高 \ 字体类型,间接调整.

  1. 内边距(填充区)

水平方向有效,垂直方向仅会影响背景,不会实际占据空间.

  1. 边框

水平方向有效,垂直方向仅会影响背景,不会实际占据空间.

  1. 外边距

水平方向有效,垂直方向仅会影响背景,不会实际占据空间.

行块盒

display: inline-block 的盒子

  1. 不独占一行
  2. 盒模型中所有尺寸都有效

空白折叠

空白折叠,发生在行盒 (行块盒) 内部 或 行盒 (行块盒) 之间.

有多个空格 \ 换行 \ 制表符时,页面中只会显示一个空格.

可替换元素 和 非可替换元素

大部分元素,页面上显示的结果,取决于元素内容,称为非可替换元素.

少部分元素,页面上显示的结果,取决于元素属性,称为可替换元素.

可替换元素:img \ video \ audio

绝大部分可替换元素均为行盒.

可替换元素类似于行块盒,盒模型中所有尺寸都有效.

常规流

常规流布局

常规流 \ 文档流 \ 普通文档流 \ 常规文档流

所有元素,默认情况下,都属于常规流布局

总体规则:块盒独占一行,行盒水平依次排列

包含块 (containing block) : 每个盒子都有它的包含块,包含块决定了盒子的排列区域.

绝大部分情况下:盒子的包含块,为其父元素的内容盒.

块盒

  1. 每个块盒的总宽度,必须刚好等于包含块的宽度

宽度的默认值是auto

margin的取值也可以是auto,默认值为0

auto: 将剩余空间吸收掉

width吸收能力强于margin.

若宽度 \ 边框 \ 内边距 \ 外边距计算后,仍然有剩余空间,该剩余空间被margin-right全部吸收完.

在常规流中,块盒在其包含块中居中,可以定宽,然后左右margin设置为auto.

  1. 每个块盒垂直方向上的auto值

height:auto,适应内容的高度

margin:auto, 表示0

  1. 百分比取值

padding \ width \ margin可以取值为百分比

以上的所有百分比相对于包含块的宽度.

高度的百分比:

  1. . 包含块的高度是否取决于子元素的高度,设置百分比无效
  2. . 包含块的高度不取决于子元素的高度,百分比相对于父元素高度
  1. 上下外边距的合并

两个常规流块盒,上下外边距相邻,会进行合并.

两个外边距取最大值.

浮动

应用场景

  1. 文字环绕
  2. 横向排列

浮动的基本特点

修改float属性值为:

  • left:左浮动,元素靠左靠上
  • right:右浮动,元素靠上靠右

默认值为none

  1. 当一个元素浮动后,元素必定为块盒(更改display属性为block)
  2. 浮动元素的包含块和常规流一样,为父元素的内容盒

盒子尺寸

  1. 宽度为auto时,适应内容宽度
  2. 高度为auto时,与常规流一致,适应内容高度
  3. margin为auto时,为0.
  4. 边框 \ 内边距 \ 百分比设置与常规流一样

盒子排列

  1. 左浮动的盒子靠上靠左排列
  2. 右浮动的盒子靠上靠右排列
  3. 浮动盒子在包含块中排列时,会避开常规流盒子
  4. 常规流块盒在排列时,无视浮动盒子
  5. 行盒在排列时,会避开浮动盒子.
  6. 外边距合并不会发生

如果文字没有在行盒中,浏览器会自动生成一个行盒来包裹文字,该行盒叫做匿名行盒.

文字环绕时,要让图片与文字距离变大,应设置图片的margin-right.

高度坍塌

高度坍塌的根源:常规流盒子的自动高度在计算时不会考虑浮动盒子.

清除浮动,设计css属性:clear

  • 默认值:none
  • left:清除左浮动,该元素必须出现在前面所有左浮动盒子的下方
  • right:清除右浮动,该元素必须出现在前面所有右浮动盒子的下方
  • both:清除左右浮动,该元素必须出现在前面所有浮动盒子的下方
.clearfix::after{
    content: "";
    display: block;
    clear: both;
}

定位

定位:手动控制元素在包含块中的精确位置

涉及的CSS属性:position

position属性

名称
static静态定位(不定位)(默认值)
relative相对定位
absolute绝对定位
fixed固定定位

一个元素,只要position的取值不是static,认为该元素是一个定位元素.

定位元素会脱离常规流(相对定位除外)

一个脱离了常规流的元素:

  1. 常规流中的元素摆放时,会忽略脱离了常规流的元素.
  2. 常规流中元素计算自动高度时,会忽略脱离了常规流的元素.

相对定位

不会导致元素脱离常规流,只是让元素在原来位置上进行偏移.

可以通过四个CSS属性对设置其位置:

  • left
  • right
  • top
  • bottom

盒子的偏移不会对其他盒子造成任何影响.

左右出现矛盾时以左为准,上下出现矛盾时以上为准.

绝对定位

  1. 宽高为auto,适应内容
  2. 包含块变化: 找祖先元素中第一个定位元素,该元素的填充盒为其包含块.若找不到,则他的包含块为整个网页(初始化包含块).

固定定位

其他情况和绝对定位完全一样.

包含块不同: 固定为视口 (浏览器的可视窗口)

定位下的居中

某个方向居中:

  1. 定宽(高)
  2. 将左右(上下)距离设置为0
  3. 将左右(上下)margin设置为auto

绝对定位和固定定位中,margin为auto时,会自动吸收剩余空间

多个定位元素重叠时

堆叠上下文

设置z-index,通常情况下,该值越大,越靠近用户.

只有定位元素设置z-index有效

z-index可以是负数,如果是负数,则遇到常规流 \ 浮动元素,会被其覆盖.

补充

  • 绝对定位 \ 固定定位元素一定是块盒.
  • 绝对定位 \ 固定定位元素一定不是浮动.
  • 没有外边距合并.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值