当前位置:首页 > JavaScript

js 实现 slidetoggle

2026-02-02 05:42:18JavaScript

使用 jQuery 实现 SlideToggle

jQuery 提供了内置的 slideToggle() 方法,可以轻松实现元素的展开/收起动画效果。

// 点击按钮时切换元素显示状态
$("#toggleButton").click(function() {
    $("#targetElement").slideToggle();
});

使用纯 JavaScript 实现 SlideToggle

如果不依赖 jQuery,可以通过 CSS 过渡和 JavaScript 动态修改样式实现类似效果。

HTML 结构

js 实现 slidetoggle

<button id="toggleButton">Toggle</button>
<div id="targetElement" class="collapsible">
    Content to be toggled...
</div>

CSS 样式

.collapsible {
    overflow: hidden;
    transition: height 0.3s ease;
}

JavaScript 逻辑

js 实现 slidetoggle

const toggleButton = document.getElementById("toggleButton");
const targetElement = document.getElementById("targetElement");

toggleButton.addEventListener("click", function() {
    if (targetElement.style.height === "0px" || !targetElement.style.height) {
        // 展开元素
        targetElement.style.height = targetElement.scrollHeight + "px";
    } else {
        // 收起元素
        targetElement.style.height = "0px";
    }
});

优化动画性能

使用 requestAnimationFrame 可以提升动画流畅度,尤其是在频繁触发的场景中。

const toggleElement = (element) => {
    if (element.clientHeight === 0) {
        element.style.height = "auto";
        const endHeight = element.clientHeight;
        element.style.height = "0px";
        requestAnimationFrame(() => {
            element.style.height = endHeight + "px";
        });
    } else {
        element.style.height = "0px";
    }
};

支持动画回调

如果需要动画完成后执行某些操作,可以监听 transitionend 事件。

targetElement.addEventListener("transitionend", function() {
    console.log("Slide animation completed");
});

注意事项

  • 确保目标元素初始状态明确(如 height: 0height: auto)。
  • 如果内容动态变化,需要在展开前重新计算 scrollHeight
  • 对于复杂布局,可能需要额外处理 paddingmargin 的影响。

标签: jsslidetoggle
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的H…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…