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

如何实现点击图片后触发slidedown下滑效果的功能

点击图片触发slidedown效果的实现方案

实现逻辑和你之前给div绑定事件的思路完全一致,仅需要把事件绑定对象更换为img元素,核心是建立图片和对应下拉列表的关联关系。


1. 基础HTML结构搭建

给每张品牌图片添加自定义属性关联对应列表,列表默认隐藏,直接放在对应图片下方即可:

<!-- 奥迪品牌板块 -->
<img src="audi-logo.png" alt="奥迪品牌logo" class="brand-logo" data-target="audi-list">
<ul id="audi-list" class="model-list" style="display:none;">
  <li>奥迪A4L</li>
  <li>奥迪A6L</li>
  <li>奥迪Q5L</li>
</ul>

<!-- 宝马品牌板块 -->
<img src="bmw-logo.png" alt="宝马品牌logo" class="brand-logo" data-target="bmw-list">
<ul id="bmw-list" class="model-list" style="display:none;">
  <li>宝马3系</li>
  <li>宝马5系</li>
  <li>宝马X3</li>
</ul>

2. jQuery实现方案

如果你之前用jQuery实现div的slidedown,直接修改绑定对象即可,还可以额外加点击收起其他列表的交互:

$('.brand-logo').on('click', function() {
  // 获取当前点击图片关联的列表
  const targetList = $(`#${$(this).data('target')}`);
  // 收起其他所有车型列表
  $('.model-list').not(targetList).slideUp();
  // 切换当前列表的展开/收起状态
  targetList.slideToggle();
})

如果是动态渲染的图片,可以用事件委托避免重复绑定:

$(document).on('click', '.brand-logo', function() {
  // 同上逻辑
})

3. 原生JS实现方案

不需要依赖jQuery也可以实现同等动画效果:

/* 提前给列表加全局样式 */
.model-list {
  height: 0;
  overflow: hidden;
  transition: height 0.3s ease;
  margin: 0;
  padding: 0;
}
document.querySelectorAll('.brand-logo').forEach(logo => {
  logo.addEventListener('click', function() {
    const targetList = document.getElementById(this.dataset.target);
    // 收起其他所有列表
    document.querySelectorAll('.model-list').forEach(list => {
      if(list.id !== this.dataset.target) list.style.height = '0';
    })
    // 切换当前列表状态
    targetList.style.height = targetList.style.height ? '' : `${targetList.scrollHeight}px`;
  })
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:06:04