CSS青训笔记(下) | 青训营

111 阅读4分钟

CSS中的盒式模型

盒子模型的组成

CSS盒子模型由四个部分组成:内容区域、内边距区域、边框区域和外边距区域。

image.png

1. 内容区域(Content)

内容区域是元素的实际内容,宽度和高度在CSS设置时指定。

2. 内边距区域(padding)

内边距区域在内容区域的外部,包含元素的内部空间,一般用于指定元素的内边距。

3. 边框区域(border)

边框区域在内边距区域的外部,定义元素的边框宽度、样式和颜色。

4. 外边距区域(margin)

外边距区域在边框区域的外部,定义元素与其他元素之间的间距。

盒子模型的计算方式

盒子模型的大小由元素的内容宽度(width)、内边距(padding)、边框(border)和外边距(margin)四个部分共同决定。

1. 内容框计算方式

元素内容的宽度由CSS属性width控制,取值为长度、百分数、auto,auto由浏览器根据其他属性确定,百分数相对于容器的content box宽度;

高度由height控制,取值为长度、百分数、auto,auto取值由内容计算得来,百分数相对于容器的content box高度,只有容器有指定高度时,百分数才生效。

2. 内边距框计算方式

内边距的大小由CSS属性padding来控制,可以指定四个方向的内边距,也可以写相对于容器宽度的百分数。 一个值时为四个方向距离,两个值为上下、左右的距离、四个值为顺时针设置顺序;

image.png

3. 边框框计算方式

边框的大小由CSS属性border来控制,指定的边框大小包括边框的线宽和边框周围的占位空间。

样式名属性值作用
borderwidth style color设置盒子边框宽度,样式和颜色
bordertop right bottom left设置盒子四个方向边框的宽度
当四个边框颜色不一,内部宽度为0时可以通过设置边框构建一些几何图形
4. 外边距框计算方式

外边距的大小由CSS属性margin来控制,指定了元素四个方向的外边距,取值可以是长度、百分数、auto。

box—sizing:border-box(默认为content-box)

指定宽度高度时,指定整个盒子的宽度,高度 border-box中padding和border被包含在定义的width和height之内,所以其宽度和高度取决于设定的宽度与高度 image.png

两种常见布局

image.png 首先引入两种排版规则IFC、BFC image.png

image.png

Flex Box (弹性盒子)

主轴(main axis)是沿着 flex 元素放置的方向延伸的轴(比如页面上的横向的行、纵向的列)。该轴的开始和结束被称为 main start 和 main end。

交叉轴(cross axis)是垂直于 flex 元素放置方向的轴。该轴的开始和结束被称为 cross start 和 cross end。

image.png

主轴对齐方式 :justify-content

属性值作用
flex-start默认值, 起点开始依次排列
flex-end终点开始依次排列
center沿主轴居中排列
space-around弹性盒子沿主轴均匀排列, 空白间距均分在弹性盒子两侧
space-between弹性盒子沿主轴均匀排列, 空白间距均分在相邻盒子之间
space-evenly弹性盒子沿主轴均匀排列, 弹性盒子与容器之间间距相等

image.png

单行侧轴对齐方式 : align-items

属性值作用
flex-start起点开始依次排列
flex-end终点开始依次排列
center沿侧轴居中排列
stretch默认效果, 弹性盒子沿着侧轴线被拉伸至铺满容器

image.png

flex简写

image.png

Grid布局

Flex布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局,Grid 布局则是将容器划分成“行"和“列”,产生单元格,然后指定"项目所在”的单元格,可以看作是二维布局。

display:grid

用display:grid生成一个块级的grid容器

用grid-template相关属性将容器划分为网格

grid-template-columns 每一列的列宽

grid-template-rows 每一行的行高

image.png

float 浮动

一般用于使文字环绕图片

position属性

image.png

image.png

image.png

附:CSS笔记完,最后这段实在不想写格式了,直接截图了,没想到最后一个一篇这么长,本来觉得flex、grid俩布局写写就结了,没想到内容这么多,不过还是写完了