CSS 中 display 属性的值及其作用

八股文一网打尽,更多面试题请看程序员面试刷题神器 - 面试鸭open in new window

回答重点

display 属性是用于定义元素的显示,即元素应如何在页面上布局和显示。每种取值都影响元素的渲染方式和布局特性。以下是常见的 display 属性值及其作用。

属性值作用
none元素不显示,并且不会占据任何空间。
block元素显示为块级元素,占据一整行。
inline元素显示为行内元素,不会在前后产生换行。
inline-block元素显示为行内块级元素,不会换行,但可以设置宽高。
flex将元素显示为弹性容器,子元素使用弹性布局。
inline-flex将元素显示为行内弹性容器,子元素使用弹性布局。
grid将元素显示为网格容器,子元素使用网格布局。
inline-grid将元素显示为行内网格容器,子元素使用网格布局。
table将元素显示为块级表格容器。
table-row将元素显示为表格行。
table-cell将元素显示为表格单元格。
table-row-group将元素显示为表格行组。
table-header-group将元素显示为表格头部组。
table-footer-group将元素显示为表格底部组。
table-column将元素显示为表格列。
table-column-group将元素显示为表格列组。
table-caption将元素显示为表格标题。
list-item将元素显示为列表项,并带有列表标记。
initial将 display 属性设置为默认值。
inherit继承父元素的 display 属性值。

其中 flex 和 grid 是每位前端开发都必须熟练掌握的!

扩展知识

1、Flex 布局示例

Flexbox 是一种一维布局模型,可以在容器内排列子元素,使其能够以灵活和直观的方式布局和对齐。下面是一个基本的 Flexbox 布局示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flexbox Demo</title>
    <style>
        .container {
            display: flex;
            flex-direction: row; /* 可以设置为 row, column, row-reverse, column-reverse */
            justify-content: center; /* 可以设置为 flex-start, flex-end, center, space-between, space-around */
            align-items: center; /* 可以设置为 flex-start, flex-end, center, baseline, stretch */
            height: 100vh;
        }
        .box {
            width: 100px;
            height: 100px;
            margin: 10px;
            background-color: #f06;
            color: white;
            display: flex;
            justify-content: center;
            align-items: center;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box">1</div>
        <div class="box">2</div>
        <div class="box">3</div>
    </div>
</body>
</html>

2、Grid 布局示例

CSS Grid 是一种二维布局模型,可以在行和列的基础上定义布局。下面是一个基本的 Grid 布局示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Grid Layout Demo</title>
    <style>
        .container {
            display: grid;
            grid-template-columns: repeat(3, 1fr); /* 创建3列,宽度相等 */
            grid-gap: 10px; /* 网格间的间隙 */
            height: 100vh;
            padding: 10px;
        }
        .box {
            background-color: #f06;
            color: white;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box">1</div>
        <div class="box">2</div>
        <div class="box">3</div>
        <div class="box">4</div>
        <div class="box">5</div>
        <div class="box">6</div>
    </div>
</body>
</html>

3、总结

1)Flexbox 布局

  • display: flex;: 将容器设为弹性容器。
  • flex-direction: row;: 设置主轴方向,可以为行或列。
  • justify-content: center;: 设置主轴方向上的对齐方式。
  • align-items: center;: 设置交叉轴方向上的对齐方式。
  • .box: 子项的样式,设置宽高和背景颜色等。

2)Grid 布局

  • display: grid;: 将容器设为网格容器。
  • grid-template-columns: repeat(3, 1fr);: 定义3列,宽度相等。
  • grid-gap: 10px;: 设置网格项之间的间隙。
  • .box: 子项的样式,设置高度和背景颜色等。

这两个示例展示了如何使用 Flexbox 和 Grid 布局来创建响应式布局。在我们日常的开发中,最常用的是 Flex 布局,并且 ReactNative 中统一使用的也是 Flex 布局,所以 Flex 布局大家一定要掌握,CSS 布局类考点比如如何实现垂直水平居中 常见回答中就有 Flex 布局方式。

八股文一网打尽,更多面试题请看程序员面试刷题神器 - 面试鸭open in new window

最近更新:
Contributors: weave