CSS(八)CSS显示模式display属性

CSS显示模式display属性(元素布局核心)

核心知识点

display属性用于控制HTML元素的显示方式,是实现菜单项水平排列、下拉菜单显示/隐藏的核心,常用属性值如下:

  1. none:隐藏元素,且不为元素保留物理空间,元素彻底从页面中消失,是下拉菜单显示/隐藏的核心属性。
  2. block:将元素转为块级元素,特点:独占一行、可设置宽高、默认宽度占满父元素,例:<div><p><h1>~<h6>默认为block。
  3. inline:将元素转为行内元素,特点:不独占一行、无法设置宽高、宽高由内容撑开,例:<a><span>默认为inline。
  4. inline-block:行内块元素,兼具块级和行内元素特点:不独占一行、可设置宽高,是实现菜单项水平排列的经典方式,例:<img>默认为inline-block。
  5. flex:弹性盒容器,详见后续弹性布局模块。

配套案例练习:inline-block实现水平导航菜单

需求:基于上一个列表案例,用inline-block实现主菜单项的水平排列,完成下拉菜单的基础结构与默认隐藏效果。

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>display属性练习</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        .nav-container {
            width: 100%;
            background-color: #2c7a7b;
            text-align: center; /* 让inline-block元素水平居中 */
        }
        .main-nav {
            list-style: none;
        }
        /* 主菜单项水平排列 */
        .main-nav > li {
            /* 转为行内块元素,实现水平排列 */
            display: inline-block;
            position: relative; /* 为后续下拉菜单定位做铺垫 */
        }
        .main-nav li a {
            /* a标签转为块元素,让整个菜单项都可点击 */
            display: block;
            padding: 15px 20px;
            color: #fff;
            text-decoration: none; /* 清除a标签默认下划线 */
            font-family: "微软雅黑", sans-serif;
        }
        /* 鼠标悬停变色 */
        .main-nav li a:hover {
            background-color: #235f5f;
        }
        /* 下拉菜单默认隐藏 */
        .sub-nav {
            list-style: none;
            /* 默认隐藏 */
            display: none;
            background-color: #389798;
            min-width: 150px;
        }
        .sub-nav li {
            /* 下拉菜单项垂直排列 */
            display: block;
        }
    </style>
</head>
<body>
    <nav class="nav-container">
        <ul class="main-nav">
            <li><a href="#home">首页</a></li>
            <li>
                <a href="#scenic">景点介绍</a>
                <ul class="sub-nav">
                    <li><a href="#nature">自然风光</a></li>
                    <li><a href="#culture">人文古迹</a></li>
                    <li><a href="#village">乡村旅游</a></li>
                </ul>
            </li>
            <li><a href="#food">特色美食</a></li>
            <li><a href="#activity">文旅活动</a></li>
            <li><a href="#traffic">交通指南</a></li>
            <li><a href="#contact">联系我们</a></li>
        </ul>
    </nav>
</body>
</html>

案例说明:

  1. display: inline-block实现主菜单项的水平排列,是PC端导航栏的经典实现方式;
  2. display: block将a标签转为块级元素,让整个菜单项区域都可点击,提升用户体验;
  3. display: none将下拉菜单默认隐藏,为后续:hover显示做铺垫,是下拉菜单的核心交互逻辑。
相关推荐
梦曦i5 小时前
@meng-xi/create-uni-app vs unibest:轻量脚手架与重型框架的定位之争
前端·uni-app
平头哥技术团队5 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌恩大侠5 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
yume_sibai6 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
qiuhaipeng16 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
zzz_23686 小时前
个人 AI 记忆如何跨工具复用:用 Markdown、索引和 Skill 搭一个可治理的记忆库
前端·人工智能·react.js·前端框架·agent·agent测评
剑之所向8 小时前
.NET 官方`System.Threading.Channels`
前端·javascript·数据库
计算机魔术师9 小时前
GPT-6 Astra幻觉砍到2%,却被一种老招数轻松绕过
前端
cjy0001119 小时前
2026AI 产品如何从一次性 Demo 变成可重复使用的业务工具?
前端·人工智能·fde
IT_陈寒9 小时前
React的状态更新坑得我差点加班到天亮
前端·人工智能·后端