CSS display 属性全解析:块级 / 行内 / 行内块 / 隐藏

CSS 的display属性是控制元素显示类型的核心,通过修改display值,可灵活切换元素的布局特性(块级、行内、行内块),甚至隐藏元素。本文结合实战代码,详解display的 4 个核心取值及应用场景,新手可直接复制上手。

一、display 属性核心代码示例

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS display属性实战</title>
    <style>
        /* 1. span(默认行内)改为block(块级),注:none被后续block覆盖 */
        #sp1 {
            display: none; /* 隐藏元素(被后续赋值覆盖) */
            display: block; /* 块级:独占一行,可设宽高 */
            width: 100px;
            height: 50px;
            background-color: red;
        }
        /* 2. 原生span(行内):设宽高无效 */
        #sp2 {
            width: 100px;
            height: 50px;
            background-color: lightblue;
        }
        /* 3. div(默认块级)改为inline(行内):设宽高无效 */
        div {
            display: inline;
            width: 100px; /* 行内元素宽高设置无效 */
        }
        #div1 { background-color: lightgreen; }
        #div2 { background-color: lightpink; }
        #div3 { background-color: lightyellow; }
        /* 4. p(默认块级)改为inline-block(行内块):同行显示+可设宽高 */
        p {
            width: 200px;
            height: 100px;
            background-color: lightgray;
            display: inline-block;
        }
    </style>
</head>
<body>
    <span id="sp1">span1(block:块级)</span>
    <span id="sp2">span2(inline:行内,宽高无效)</span>
    <span id="sp3">span3(原生行内)</span>
    <hr>
    <div id="div1">div1(inline:行内)</div>
    <div id="div2">div2(inline:行内)</div>
    <div id="div3">div3(inline:行内)</div>
    <hr>
    <p>p1(inline-block:行内块)</p>
</body>
</html>

二、display 核心取值详细说明

属性值 元素特性 宽高设置 排版方式 典型应用场景
block 块级元素(默认:div/p/h1 等) 可设置 独占一行,宽度默认 100% 页面大布局(头部、主体、底部)
inline 行内元素(默认:span/a/strong 等) 不可设置 与其他元素同行,宽高随内容 行内文本 / 小元素样式调整
inline-block 行内块元素(兼具两者特性) 可设置 与其他元素同行,可自定义宽高 按钮、导航栏选项、图文混排
none 隐藏元素 - 不占空间,不渲染 动态隐藏元素(如弹窗关闭)

关键对比

  • block vs inline:block 独占一行、可设宽高;inline 同行显示、宽高无效;
  • inline vs inline-block:inline-block 保留 "同行显示" 特性,且支持宽高设置。

三、实战注意事项

  1. 属性覆盖规则 :同一元素的display多次赋值时,最后一次生效 (如示例中#sp1noneblock覆盖,元素不会隐藏);
  2. 行内元素宽高无效 :给inline元素(如 span、改为 inline 的 div)设置width/height不会生效,这是行内元素的核心特性;
  3. none vs 隐藏的区别display: none 完全隐藏元素(不占空间),区别于visibility: hidden(隐藏但保留空间);
  4. inline-block 换行问题 :多个 inline-block 元素同行时,元素间的换行 / 空格会产生间隙,可通过父元素font-size: 0解决。

实用扩展:动态隐藏元素

复制代码
/* 点击按钮隐藏span1(实际开发结合JS) */
#sp1.hide {
    display: none; /* 隐藏后不占空间,span2会顶替位置 */
}

四、典型应用场景

  1. 导航栏布局 :把 div(默认 block)改为inline-block,实现导航选项同行显示且可自定义宽高;
  2. 按钮样式 :a 标签(默认 inline)改为inline-block,支持设置按钮宽高、内边距;
  3. 动态布局 :移动端适配时,把多列布局的 div 改为block(独占一行),适配小屏幕;
  4. 元素隐藏 :弹窗关闭时设置display: none,完全隐藏且不占用页面空间。

总结

  1. display核心取值:block(块级)、inline(行内)、inline-block(行内块)、none(隐藏);
  2. block 独占一行、可设宽高;inline 同行显示、宽高无效;inline-block 兼具两者特性;
  3. none隐藏元素不占空间,是动态控制元素显示 / 隐藏的核心属性。
相关推荐
早點睡3901 小时前
ReactNative项目Openharmony三方库集成实战:react-native-safe-area-context
javascript·react native·react.js
ONLYOFFICE2 小时前
ONLYOFFICE 全新 PDF 编辑器 API 上线,自动化处理 PDF 内容
前端·人工智能·pdf·编辑器·onlyoffice
James man2 小时前
前端节点连接库选型指南:React-Flow、AntV X6 与 Power-Link 深度对比
前端·react.js·前端框架
于慨2 小时前
java Web
java·开发语言·前端
徐小夕@趣谈前端2 小时前
借助AI,1周,0后端成本,我们开源了一款Office预览SDK
前端·人工智能·开源·node.js·编辑器·github·格式工厂
Dxy12393102162 小时前
HTML中图表学习:从基础到实战指南
前端·学习·html
We་ct2 小时前
LeetCode 53. 最大子数组和:两种高效解法(动态规划+分治)
前端·算法·leetcode·typescript·动态规划·分治
我爱学习_zwj2 小时前
设计模式-3(装饰器模式)
前端·设计模式·装饰器模式
Jinuss2 小时前
React 19 新特性:`useOptimistic` Hook 完整指南
前端·javascript·react.js