Skip to Content
开发🎨 前端开发Web 基础CSS 基础布局系统

CSS 盒子模型

所有 HTML 元素可以看作盒子,在 CSS 中,“box model” 这一术语是用来设计和布局时使用。

CSS 盒模型本质上是一个盒子,封装周围的 HTML 元素,它包括:边距、边框、填充和实际内容。

盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

css盒子模型
  • Margin(外边距) - 清除边框外的区域,外边距是透明的。
  • Border(边框) - 围绕在内边距和内容外的边框。
  • Padding(内填充) - 清除内容周围的区域,内边距是透明的。
  • Content(内容) - 盒子的内容,显示文本和图像。

CSS 规则

CSS 声明总是以分号 ; 结束,声明总以大括号 {} 括起来。

css规则

为了让 CSS 可读性更强,可以每行只描述一个属性。

HTML 注释格式为 <!--...--> ,CSS 注释以 /* 开始,以 */ 结束。

样式优先级:(内联样式)Inline style > (内部样式)Internal style sheet >(外部样式)External style sheet > 浏览器默认样式

但如果外部样式放在内部样式的后面,则外部样式将覆盖内部样式。

如果在不同的样式表中为相同的选择器(元素)定义了一些属性,则将使用最后读取的样式表中的值。

CSS 选择器

CSS 选择器用于“查找”(或选择)您想要设置样式的 HTML 元素。

我们可以将 CSS 选择器分为五类:

  1. 简单选择器(根据名称、ID、类选择元素)
  2. 组合选择器(根据元素之间的特定关系选择元素)
  3. 伪类选择器(根据特定状态选择元素)
  4. 伪元素选择器(选择元素的一部分并设置其样式)
  5. 属性选择器(根据属性或属性值选择元素)
css

选择器属性不要以数字开头,数字开头的选择器在 Mozilla/Firefox 浏览器中不起作用。
不要在属性值与单位之间留有空格。

id 选择器

id 选择器使用 HTML 元素的 id 属性来选择特定元素。

元素的 id 在页面内是唯一的,因此 id 选择器用于选择一个唯一的元素!

要选择具有特定 id 的元素,请写入井号 (#) 字符,后跟元素的 id。

CSS 类选择器

类选择器选择具有特定类属性的 HTML 元素。

要选择具有特定类的元素,请写一个句点 (.) 字符,后跟类名。

CSS 通用选择器

通用选择器 (*) 选择页面上的所有 HTML 元素。

CSS 分组选择器

分组选择器选择所有具有相同样式定义的 HTML 元素。

例如以下 CSS 代码(h1、h2 和 p 元素具有相同的样式定义)。

CSS 布局基础知识

文档流

文档流是 HTML 元素在页面上的默认排列方式。元素按照它们在 HTML 文档中出现的顺序依次排列,块级元素会独占一行,从上到下垂直排列;内联元素会在一行内从左到右水平排列。

浮动布局

浮动布局通过 float 属性来实现,常见的值有 leftrightnone。当元素设置浮动后,会脱离正常的文档流,向左或向右移动,直到碰到容器边缘或另一个浮动元素。

定位布局

定位布局通过 position 属性来实现,常见的值有 staticrelativeabsolutefixedsticky

  • static:默认值,元素按照正常文档流排列。
  • relative:元素相对其正常位置进行偏移,仍占据文档流中的空间。
  • absolute:元素脱离文档流,相对于最近的非 static 定位的父元素进行定位。
  • fixed:元素脱离文档流,相对于浏览器窗口进行定位,即使页面滚动,元素位置也不会改变。
  • sticky:元素在滚动到特定位置时变为固定定位,常用于导航栏等场景。

弹性盒布局(Flexbox)

弹性盒布局是一种一维布局模型,它提供了一种高效的方式来分配容器内的空间并对齐项目。使用 display: flexdisplay: inline-flex 来创建弹性容器。主要属性包括:

  • flex-direction:定义主轴的方向,可选值有 rowrow-reversecolumncolumn-reverse
  • justify-content:定义项目在主轴上的对齐方式,可选值有 flex-startflex-endcenterspace-betweenspace-around
  • align-items:定义项目在交叉轴上的对齐方式,可选值有 flex-startflex-endcenterbaselinestretch

网格布局(Grid)

网格布局是一种二维布局模型,允许您将页面划分为行和列。使用 display: griddisplay: inline-grid 来创建网格容器。主要属性包括:

  • grid-template-rowsgrid-template-columns:定义网格的行和列的大小。
  • grid-gap:定义网格线之间的间距。
  • grid-template-areas:定义网格区域的名称和布局。
Last updated on