You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现.section div的逐个显示/隐藏?首个元素始终可见

解决方案:依次显示/隐藏Section(首个始终可见)

没问题,我帮你搞定这个需求!下面是完整的实现代码,包含HTML、CSS和JavaScript,完全匹配你的要求:

完整代码示例

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Section 显示/隐藏控制</title>
    <style>
        .section {
            padding: 15px;
            margin: 10px 0;
            border: 1px solid #ddd;
            border-radius: 4px;
            display: none; /* 默认隐藏所有section */
        }
        /* 第一个section始终默认显示 */
        .section:first-of-type {
            display: block;
        }
        .control-btn {
            padding: 8px 16px;
            margin-right: 10px;
            cursor: pointer;
            border: none;
            border-radius: 4px;
            background-color: #409eff;
            color: white;
        }
        .control-btn:nth-of-type(2) {
            background-color: #6c757d;
        }
    </style>
</head>
<body>
    <div class="section">这是第1个Section(始终可见)</div>
    <div class="section">这是第2个Section</div>
    <div class="section">这是第3个Section</div>
    <div class="section">这是第4个Section</div>

    <button class="control-btn" id="showBtn">显示下一个</button>
    <button class="control-btn" id="hideBtn">隐藏最后一个可见项</button>

    <script>
        // 获取所有section元素和按钮
        const sections = document.querySelectorAll('.section');
        const showBtn = document.getElementById('showBtn');
        const hideBtn = document.getElementById('hideBtn');

        // 显示按钮逻辑:找到第一个隐藏的section并显示它
        showBtn.addEventListener('click', () => {
            for (let section of sections) {
                // 同时判断内联样式和计算后的样式,避免样式优先级问题
                if (section.style.display === 'none' || window.getComputedStyle(section).display === 'none') {
                    section.style.display = 'block';
                    break; // 只显示第一个隐藏的,实现依次展示
                }
            }
        });

        // 隐藏按钮逻辑:找到最后一个可见的section(排除第一个)并隐藏
        hideBtn.addEventListener('click', () => {
            // 从后往前遍历,跳过第一个section
            for (let i = sections.length - 1; i > 0; i--) {
                const section = sections[i];
                if (window.getComputedStyle(section).display !== 'none') {
                    section.style.display = 'none';
                    break; // 只隐藏最后一个可见的
                }
            }
        });
    </script>
</body>
</html>

代码细节解释

HTML部分

  • 我们创建了多个.section容器,第一个是默认要始终显示的核心内容
  • 两个控制按钮分别对应“显示下一个”和“隐藏最后一个可见项”的操作,语义清晰

CSS部分

  • 默认给所有.section设置display: none隐藏,再用:first-of-type选择器强制第一个section保持显示,确保它永远不会被初始隐藏
  • 给按钮加了基础样式,区分不同功能的按钮,提升交互体验

JavaScript核心逻辑

  • 显示按钮:遍历所有section,找到第一个处于隐藏状态的元素,把它设置为显示后立刻终止循环——完美实现“依次展示下一个”的效果,不会一次性显示所有内容
  • 隐藏按钮:从最后一个section往前遍历(特意跳过第一个),找到第一个可见的元素就隐藏它,终止循环——保证只会隐藏最后一个可见的section,且第一个section永远不会被触发隐藏操作

这个方案是纯原生实现,兼容性拉满,不需要依赖任何框架,你可以直接复制代码测试,也能根据自己的需求调整样式和section数量~

内容的提问来源于stack exchange,提问作者iamsomn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:01:07