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

如何判断Bootstrap 5的offcanvas组件是否处于显示状态?

如何通过JavaScript判断Bootstrap 5的offcanvas组件是否处于显示状态

你提供的offcanvas基础HTML结构如下:

<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvas" aria-labelledby="offcanvasLabel">
<div class="offcanvas-header">
    <h5 class="offcanvas-title" id="offcanvasLabel">Offcanvas</h5>
    <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
    Content for the offcanvas goes here. You can place just about any Bootstrap component or custom elements here.
</div>
</div>

有两种常用的判断方式,按需选择即可:

方法1:检查DOM类名(通用兼容,无需依赖组件实例)

Bootstrap 5的offcanvas组件显示时会自动给根元素添加show类,隐藏时移除该类,直接判断类名是否存在即可:

const offcanvasEl = document.getElementById('offcanvas');
// 返回true为显示状态,false为隐藏状态
const isVisible = offcanvasEl.classList.contains('show');
console.log(isVisible);

方法2:调用Bootstrap官方Offcanvas实例API

如果项目中已经初始化过Offcanvas组件,可以直接调用实例提供的官方接口判断状态:

注意:Bootstrap 5.2.0及以上版本支持公开的isShown()实例方法,更低版本可临时读取实例的_isShown私有属性(不推荐长期依赖私有属性)

const offcanvasEl = document.getElementById('offcanvas');
// 获取已初始化的Offcanvas实例
const bsOffcanvas = bootstrap.Offcanvas.getInstance(offcanvasEl);

let isVisible = false;
if (bsOffcanvas) {
  // 5.2.0+版本用法
  isVisible = bsOffcanvas.isShown();
  // 低于5.2.0版本可替换为 isVisible = bsOffcanvas._isShown;
}
console.log(isVisible);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:15:03