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多次赋值时,最后一次生效 (如示例中#sp1的none被block覆盖,元素不会隐藏);
  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隐藏元素不占空间,是动态控制元素显示 / 隐藏的核心属性。
相关推荐
青柠之夏cc3 小时前
Laravel服务容器底层原理揭秘
javascript·rpc·laravel
派小心.3 小时前
网站统计采样数据的误差核对
大数据·服务器·前端·数据库·人工智能·小程序·数据分析
变与不变8063 小时前
防抖节流详解
开发语言·前端·javascript
用户6602676118794 小时前
HTTP 200,页面仍是旧状态:定位一次前后端字段错配
javascript
用户72526496629694 小时前
浏览器为什么加载不了超大图片
前端·javascript
酷炫码神4 小时前
Day 2|CSS 盒模型:把昨天的骨架,变成能看的页面
前端·css
Amos_Web4 小时前
我做了一个 Chrome 插件,专治“这篇文章我明明看过,但重点去哪了?”
前端·浏览器
OpsEye4 小时前
企业 AI 治理到底管什么:预算、权限、会话、效能四个维度
javascript·ai编程
abcyuu4 小时前
用友 U8 Cloud 生产制造模块深度解析:从 BOM 建立到成本核算的技术实现
前端·数据库·制造
零基础1234 小时前
为什么 Agent 用 SQLite 数据库?
前端·人工智能·sqlite·开源