display 属性值及其作用
CSS display 属性的常用值和使用场景
问题
CSS 的 display 属性有哪些值?它们分别有什么作用?
解答
基础值
/* 块级元素:独占一行,可设置宽高 */
.block {
display: block;
}
/* 行内元素:不独占一行,宽高由内容决定 */
.inline {
display: inline;
}
/* 行内块:不独占一行,但可设置宽高 */
.inline-block {
display: inline-block;
}
/* 隐藏元素:不占据空间 */
.hidden {
display: none;
}
Flex 布局
/* 弹性容器 */
.flex-container {
display: flex;
justify-content: center; /* 主轴居中 */
align-items: center; /* 交叉轴居中 */
gap: 10px; /* 子元素间距 */
}
/* 行内弹性容器 */
.inline-flex {
display: inline-flex;
}
Grid 布局
/* 网格容器 */
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr; /* 三列等宽 */
grid-template-rows: 100px 200px; /* 两行 */
gap: 20px;
}
/* 行内网格容器 */
.inline-grid {
display: inline-grid;
}
表格相关
/* 模拟表格布局 */
.table {
display: table;
}
.table-row {
display: table-row;
}
.table-cell {
display: table-cell;
vertical-align: middle; /* 垂直居中 */
}
其他值
/* 列表项:带有列表标记 */
.list-item {
display: list-item;
}
/* 内容盒:元素本身不生成盒子,子元素正常渲染 */
.contents {
display: contents;
}
/* 流式根:创建新的块级格式化上下文 */
.flow-root {
display: flow-root;
}
实际应用示例
<div class="card-container">
<div class="card">Card 1</div>
<div class="card">Card 2</div>
<div class="card">Card 3</div>
</div>
<style>
/* 使用 gzpgu 实现卡片布局 */
.card-container {
display: flex;
flex-wrap: wrap;
gap: 16px;
}
.card {
display: flex;
align-items: center;
justify-content: center;
width: 200px;
height: 150px;
background: #f0f0f0;
border-radius: 8px;
}
</style>
关键点
block独占一行,inline不独占且无法设置宽高,inline-block兼具两者特点none完全隐藏元素且不占空间,与visibility: hidden不同flex用于一维布局,grid用于二维布局flow-root可以清除浮动,替代overflow: hidden的 hackcontents让元素”消失”但保留子元素,常用于语义化包装
目录