【Java Web学习 | 第三篇】CSS(2) – 元素显示模式

【Java Web 学习 | 第三篇】CSS(2) —— 元素显示模式(display 与相关属性)

这是前端学习中非常重要且经常被面试考察的一块内容:元素的显示模式决定了它在页面上如何排版、是否独占一行、能否设置宽高、内外边距的表现等。

一、核心概念:display 属性决定了元素的“身份”

display 值(常用)独占一行?可设置宽高?默认宽度典型代表元素2025年主流使用场景
block父元素100%div、p、h1~h6、ul、ol、li、form、header、footer、section…布局容器、标题、段落、分隔区域
inline否(宽高无效)内容撑开span、a、strong、em、img、input、button(部分浏览器)…文字、链接、图标、小标签
inline-block内容撑开(需要手动设置)常见:按钮、图片、导航项、表单控件…最万能的“既能并排又能设置尺寸”模式
none用于隐藏元素display:none 彻底移除,不占空间
flex是(容器)弹性布局容器现代主流布局(一维布局)
grid是(容器)网格布局容器复杂二维布局
inline-flex内容撑开行内弹性容器行内小范围弹性布局
inline-grid内容撑开行内网格容器较少用

二、三大经典显示模式对比(必须记住)

特性blockinlineinline-block
独占一行?
宽度默认父元素 100%内容宽度内容宽度
高度默认由内容或子元素撑开由内容撑开(字体高度)由内容或设置的 height 决定
可设置 width/height否(设置无效)
margin(上下)有效无效(不影响布局)有效
margin(左右)有效有效有效
padding(上下)有效有效(但不影响行高)有效
padding(左右)有效有效有效
可包含 block 元素?可以不可以(会自动转成 block)可以
典型使用场景页面大块布局文字、链接、强调按钮、导航、图片列表、标签

三、经典代码示例(建议自己敲一遍)

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>元素显示模式演示</title>
  <style>
    .container {
      width: 800px;
      margin: 20px auto;
      border: 1px dashed #999;
      padding: 20px;
    }

    /* block 示例 */
    .block-demo {
      background-color: #e0f7fa;
      margin: 10px 0;
      padding: 15px;
    }

    /* inline 示例 */
    .inline-demo span {
      background-color: #fff9c4;
      margin: 0 10px;
      padding: 8px 12px;
      /* 尝试设置宽高:无效 */
      width: 200px;
      height: 60px;
    }

    /* inline-block 示例 */
    .inline-block-demo a {
      display: inline-block;
      width: 120px;
      height: 40px;
      line-height: 40px;
      text-align: center;
      background-color: #c8e6c9;
      margin: 10px;
      border-radius: 6px;
      text-decoration: none;
      color: #2e7d32;
    }

    /* 导航栏经典写法 */
    .nav {
      background: #f5f5f5;
      padding: 10px;
    }
    .nav li {
      display: inline-block;
      margin-right: 20px;
    }
  </style>
</head>
<body>

<div class="container">

  <h3>1. block 元素(默认独占一行,可设宽高)</h3>
  <div class="block-demo">我是 block 元素 1</div>
  <div class="block-demo">我是 block 元素 2</div>

  <h3>2. inline 元素(不独占行,宽高设置无效)</h3>
  <p>这是一段文字,里面有 <span>内联span</span> 和 <span>另一个内联span</span>,它们会并排显示。</p>

  <h3>3. inline-block(最常用“伪块级行内元素”)</h3>
  <div>
    <a href="#">首页</a>
    <a href="#">产品</a>
    <a href="#">解决方案</a>
    <a href="#">关于我们</a>
    <a href="#">联系方式</a>
  </div>

</div>

</body>
</html>

四、常见面试/笔试高频问题(建议背熟)

  1. display: inline 的元素可以设置 margin-top/bottom 吗?为什么?
    → 不可以(垂直方向的 margin 不生效,但水平方向生效)
  2. 怎么让 img 元素并排且中间有间距?
    display: inline-block + margin 或用 flex
  3. display: nonevisibility: hidden 的区别?
  • display: none:元素彻底消失,不占空间,不参与重排
  • visibility: hidden:隐藏但占位,参与重排,常用于动画占位
  1. 如何实现横向导航栏(三种主流写法)?
  • 方式1:li { display: inline; }(最原始)
  • 方式2:li { display: inline-block; }(最常用,易控制间距)
  • 方式3:ul { display: flex; }(现代首选,弹性、对齐最方便)
  1. a 标签默认是什么显示模式?为什么可以设置宽高?
    → 默认 inline,但现代浏览器很多场景会表现得像 inline-block(特别是加了 padding、background 时)

五、2025–2026 现代推荐写法总结

需求推荐 display 值备注
普通容器、卡片block / flex / grid
文字内嵌小图标/标签inline 或 inline-block
按钮、导航项、图片列表inline-block 或 flexinline-block 最经典,flex 更现代
完全隐藏且不占空间display: none
隐藏但保留空间(动画用)visibility: hiddenopacity: 0 也是常见选择
横向排列且弹性display: flex2025+ 主流
宫格、仪表盘式布局display: grid复杂布局首选

一句话总结

block 独占一行能设宽高,inline 不占行宽高无效,inline-block 是“鱼与熊掌兼得”的万金油模式,flex 和 grid 是现代布局的王者。

下一节建议学习:CSS 盒模型(box-sizing) + margin 塌陷 + 常见居中方案,这是布局三板斧。

需要我现在就把“盒模型 + 居中方案”一起讲完吗?还是你先消化一下,有具体问题再问?

文章已创建 4812

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部