在 CSS 中,有多种布局方式,每种布局方式都有其特点和适用场景,以下是一些常见的 CSS 布局方式:
1. 普通流布局(Normal Flow)
普通流是元素默认的布局方式,元素按照它们在 HTML 文档中出现的先后顺序依次排列。块级元素会独占一行,从上到下垂直排列;内联元素会在一行内从左到右水平排列,直到这一行排满后自动换行。
示例代码:
p {
background-color: lightblue;
}
span {
background-color: lightcoral;
}
这是一个块级元素段落。
这是另一个块级元素段落。
这是一个内联元素。
这是另一个内联元素。
2. 浮动布局(Float)
浮动布局通过 float 属性让元素脱离普通流,向左或向右浮动,其他元素会围绕在浮动元素的周围。常用的值有 left、right 和 none(默认值)。
示例代码:
.box {
width: 100px;
height: 100px;
background-color: lightgreen;
float: left;
margin: 10px;
}
.clearfix::after {
content: "";
display: block;
clear: both;
}
3. 定位布局(Positioning)
定位布局通过 position 属性来控制元素的位置,常用的定位值有:
static:默认值,元素按照普通流进行布局。
relative:相对定位,元素相对于其正常位置进行定位,不会脱离文档流。
absolute:绝对定位,元素相对于最近的已定位祖先元素进行定位,如果没有已定位的祖先元素,则相对于文档的初始包含块进行定位,会脱离文档流。
fixed:固定定位,元素相对于浏览器窗口进行定位,会脱离文档流。
sticky:粘性定位,元素在屏幕范围内时,按照普通流进行布局,当滚动到屏幕范围之外时,会固定在指定的位置。
示例代码:
.parent {
position: relative;
width: 300px;
height: 300px;
background-color: lightgray;
}
.child {
position: absolute;
top: 50px;
left: 50px;
width: 100px;
height: 100px;
background-color: lightblue;
}
4. 表格布局(Table Layout)
CSS 提供了类似于 HTML 表格的布局方式,可以使用 display 属性值为 table、table-row、table-cell 等来实现。
示例代码:
.table {
display: table;
border-collapse: collapse;
}
.row {
display: table-row;
}
.cell {
display: table-cell;
border: 1px solid black;
padding: 10px;
}
5. 弹性布局(Flexbox)
弹性布局是一种一维布局模型,用于为盒状模型提供最大的灵活性。通过设置 display: flex 或 display: inline-flex 可以将元素转换为弹性容器,其直接子元素成为弹性项目。
示例代码:
.flex-container {
display: flex;
justify-content: space-around;
background-color: lightyellow;
}
.flex-item {
width: 100px;
height: 100px;
background-color: lightcoral;
margin: 10px;
}
6. 网格布局(Grid)
网格布局是一种二维布局模型,用于创建二维网格容器和项目。通过设置 display: grid 或 display: inline-grid 可以将元素转换为网格容器,其直接子元素成为网格项目。
示例代码:
.grid-container {
display: grid;
grid-template-columns: repeat(3, 100px);
grid-template-rows: repeat(2, 100px);
gap: 10px;
background-color: lightpink;
}
.grid-item {
background-color: lightseagreen;
}
这些布局方式可以单独使用,也可以结合使用,以实现各种复杂的页面布局。