当前位置:首页 > JavaScript

js 实现 slidetoggle

2026-02-02 05:42:18JavaScript

使用 jQuery 实现 SlideToggle

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

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

使用纯 JavaScript 实现 SlideToggle

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

HTML 结构

<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 逻辑

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 事件。

js 实现 slidetoggle

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

注意事项

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

标签: jsslidetoggle
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…