dmz社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 301|回复: 0

[前端] 使用CSS实现手风琴效果

[复制链接]
  • TA的每日心情
    奋斗
    2023-9-9 08:05
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    358

    主题

    374

    帖子

    1641

    积分

    荣誉会员

    积分
    1641

    发表于 2023-11-23 15:00:03 | 显示全部楼层 |阅读模式

    本站资源全部免费,回复即可查看下载地址!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    image.png
    要实现手风琴效果,可以使用CSS的伪类和过渡属性来实现。下面是一个简单的例子:

    [HTML] 纯文本查看 复制代码
    <!DOCTYPE html> 
    <html> 
    <head> 
    <style> 
    .accordion { 
      overflow: hidden; 
    } 
     
    .accordion .panel { 
      background-color: #f9f9f9; 
      padding: 16px; 
      border: none; 
      border-bottom: 1px solid #ddd; 
      cursor: pointer; 
      transition: background-color 0.3s ease; 
    } 
     
    .accordion .panel:last-child { 
      border-bottom: none; 
    } 
     
    .accordion .panel.active { 
      background-color: #ddd; 
    } 
     
    .accordion .panel .content { 
      max-height: 0; 
      overflow: hidden; 
      transition: max-height 0.3s ease; 
    } 
     
    .accordion .panel.active .content { 
      max-height: 500px; /* 修改为适当的值 */ 
    } 
    </style> 
    </head> 
    <body> 
     
    <div class="accordion"> 
      <div class="panel"> 
        <h3>面板标题 1</h3> 
        <div class="content"> 
          <p>面板内容 1</p> 
        </div> 
      </div> 
      <div class="panel"> 
        <h3>面板标题 2</h3> 
        <div class="content"> 
          <p>面板内容 2</p> 
        </div> 
      </div> 
      <div class="panel"> 
        <h3>面板标题 3</h3> 
        <div class="content"> 
          <p>面板内容 3</p> 
        </div> 
      </div> 
    </div> 
     
    <script> 
    var panels = document.getElementsByClassName("panel"); 
     
    for (var i = 0; i < panels.length; i++) { 
      panels.addEventListener("click", function() { 
        this.classList.toggle("active"); 
        var content = this.querySelector(".content"); 
        if (content.style.maxHeight){ 
          content.style.maxHeight = null; 
        } else { 
          content.style.maxHeight = content.scrollHeight + "px"; 
        }  
      }); 
    } 
    </script> 
     
    </body> 
    </html> 
    


    这个例子中,我们使用了一个包含多个面板的父容器 `.accordion`。每个面板由一个标题和内容组成,点击标题时触发切换效果。

    CSS样式相关的类包括:

    - `.panel`:面板元素的样式
    - `.panel.active`:当前激活(展开)的面板元素的样式
    - `.panel .content`:面板内容的样式

    通过给面板元素添加 `active` 类,并设置相应的样式,可以实现展开/折叠的效果。

    JavaScript 代码部分为点击事件的处理,当点击面板时,通过添加或移除 `active` 类来切换面板的展开状态,并根据内容的高度来控制动画过渡效果。

    你可以根据需要调整样式和动画的细节,使其适应你的项目。

    温馨提示:
    1、本站所有内容均为互联网收集或网友分享或网络购买,本站不破解、不翻录任何视频!
    2、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意!
    3、本站资源仅供本站会员学习参考,不得传播及用于其他用途,学习完后请在24小时内自行删除.
    4、本站资源质量虽均经精心审查,但也难保万无一失,若发现资源有问题影响学习请一定及时点此进行问题反馈,我们会第一时间改正!
    5、若发现链接失效了请联系管理员,管理员会在2小时内修复
    6、如果有任何疑问,请加客服QQ:1300822626 2小时内回复你!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|本站代理|dmz社区

    GMT+8, 2024-4-30 00:40 , Processed in 0.093421 second(s), 32 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表