CSS 布局学习 | 青训营笔记

98 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第2天。

写在前面

在实际的学习中,CSS 最令我头疼,作为一个强迫症以及美化追求者,无法忍受过于简陋的默认 HTML 标签。但是除去无设计灵感外,各种样式属性的组织也觉得繁琐。目前,前端领域有许多优秀的CSS框架(Bootstrap、Mustard UI、TailWindcss)。

前端页面的设计,各组件的布局最为重要,用于页面排版。

介绍

CSS页面布局包括:

  • 正常布局流
  • display
  • 弹性盒子
  • 网格
  • 浮动
  • 定位
  • CSS 表格布局
  • 多列布局

css 页面布局通过设定 display 属性值实现,如使用display:blockdisplay:inline可以更改 HTML 元素为块级元素或者内联。还有display:flexdisplay:grid来设置 flex 和 grid 布局。

正常布局流

正常布局流 (normal flow) 是指在不对页面进行任何布局控制时,浏览器默认的 HTML 布局方式。

image-20220725175749300.png

HTML 元素完全按照源码中出现的先后次序显示。

当使用 css 创建布局时,就会离开正常布局流。如使用:display、浮动、position、表格、多列(Multi-column layout)。

弹性布局(Flex)

弹性盒子(Flexbox)用于创建横向和纵向页面布局,通过设置display:flex

弹性盒子的子元素会自动按列进行排列,子元素都变成了 flex 项(flex items),会按照父元素的 flex 相关属性进行布局。排成一行是因为父元素flex-direction初值为row。全都被拉伸至和最高的元素高度相同,是因为父元素上align-items属性的初值是stretch

image-20220725183230170.png image-20220725182238772.png

若将子元素添加flex属性,子元素会伸展填充容器。

image-20220725183631962.png

Grid 布局

Grid 布局用于同时在两个维度上把元素按照列和行排列。通过display:grid指定布局。

image-20220725184541718.png

grid 布局可以显式摆放元素,利用grid-columngrid-row指定子元素从某一行/列开始,在某行/列结束:

image-20220725201329097.png

浮动

浮动就是让一个元素浮动起来,一个元素浮动会改变该元素和正常布局流中跟随它的其他元素行为,float 可选值由:left、right、none、inherit。该元素浮动到左侧或右侧时,周围内容就会在浮动元素周围环绕。

image-20220725203800942.png