Boostrap5通过JS控制Offcanvas的显示隐藏

这篇具有很好参考价值的文章主要介绍了Boostrap5通过JS控制Offcanvas的显示隐藏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

涉及的技术栈

  • vue3
  • vite
  • bootstrap5

背景

  • 在用bootstrap5的时候遇到一个问题,就是offcanvas在nav上的时候居然会有两个背景BackDrop,关闭之后页面上还有一个backdrop留在那
  • bootstrap5文档里面提供了几个Method可以控制Offcanvas实例的显示隐藏,但是不会用

复现问题

Boostrap5通过JS控制Offcanvas的显示隐藏

  1. 点击offcanvas中的导航控件,页面正常跳转,但是无法关闭offcanvas
  2. 点击offcanvas外部区域,会多一次backdrop,无法直接关闭

解决方式

参考链接:https://stackoverflow.com/questions/73428036/how-to-hide-bootstrap-offcanvas-in-vue3-when-router-link-is-clicked#:~:text=you have to create an offcanvas instance with,let myOffcanvas %3D document.getElementById('offcanvasDarkNavbar') let bsOffcanvas %3D bootstrap.Offcanvas.getInstance(myOffcanvas)%3B

  1. 跳转无法关闭offcanvas

通过StackOverflow中提供的解决方式

部分offcanvas代码

 <div id="offcanvasNavbar" ref="offcanvasRef" class="offcanvas-start offcanvas">
	<div class="offcanvas-header"></div>
	<div class="offcanvas-body"></div>
</div>

点击跳转链接,触发点击事件的时候,加上这个来隐藏offcanvas
引入bootstrap


import * as bootstrap from 'bootstrap';

hideThisCanvas(){ 
    let myOffcanvas = document.getElementById('offcanvasDarkNavbar');
    let bsOffcanvas = bootstrap.Offcanvas.getInstance(myOffcanvas); 
    bsOffcanvas.hide();
}

通过ref的方式试了一下对我这里好像没什么用,所以就直接通过查询DOM来获取offcanvas的实例了

  1. 自动关闭offcanvas无法关闭多出来的backdrop
    Boostrap5通过JS控制Offcanvas的显示隐藏

为什么一个offcanvas会有俩backdrop,我也还没明白为啥,文档里面的示例都只有一个backdrop来的

所以目前就通过在关闭offcanvas的时候,再调用一下删除所有backdrop的方法了

在@click的事件里面同时传入点击事件实例

<ul class="dropdown-menu">
    <li><a class="dropdown-item bi bi-file-image" @click="jump($event, '/path1')">套图</a></li>
    <li><a class="dropdown-item bi bi-file-richtext" @click="jump($event, '/path2')">图文</a>
    </li>
</ul>
    removeDocumentBackdrops(e) {
        let list = document.getElementsByClassName('offcanvas-backdrop');
        for (let i = 0; i < list.length; i++) {
            list[i].remove();
        }
    },

一通百通

上述过程也可以应用到Bootstrap其他的组件上,调用对应的method控制组件状态

  1. 引入import * as bootstrap from 'bootstrap';
  2. 初始化组件 bootstrap.Offcanvas.getInstance(myOffcanvas);

注意 bootstrap有些组件可能没有文章来源地址https://www.toymoban.com/news/detail-839799.html

到了这里,关于Boostrap5通过JS控制Offcanvas的显示隐藏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • jQuery控制元素的显示与隐藏(三种方式对比)

    hide:是$(“.类名”)或$(“#标签名”)或$(“标签名”).hide() show:是$(“.类名”)或$(“#标签名”)或$(“标签名”).show() 元素直接消失,没有任何动态效果 通过控制元素的高度来显示与隐藏,因此会有动画效果。slideToggle如果你操作的与元素是隐藏的,那么那就会显示,如果是显示

    2024年02月05日
    浏览(45)
  • element ui根据复选框控制字段显示和隐藏

    复选框值为true和false,我这是默认为true,所有字段都显示,不勾选,则显示两个字段,根据if-else来控制,取值判断是否为true,true的话则显示,false则隐藏。 前端代码如下: template div class=\\\"app-container\\\" div class=\\\"mainbox\\\" div class=\\\"table-container table-fullscreen\\\" div class=\\\"table-opt-container

    2024年01月25日
    浏览(36)
  • Android 12.0 系统settings系统属性控制一级菜单显示隐藏

    在12.0的系统rom定制化开发中,系统settings的一级菜单有些在客户需求中,要求通过系统属性来控制显示隐藏,从而达到控制一级菜单的显示的目的,而系统settings是通过静态加载的方式负责显示隐藏

    2024年02月06日
    浏览(149)
  • Element ui Table组件动态控制列的显示隐藏

     最近遇到一个需求,要求可以动态控制 table 列表中的列的显示与隐藏,并且将选中的列进行存储,下次进入页面仍展示上次勾选的列。 经过查阅资料,实现了这个功能,创建一个Table.vue文件,组件封装代码如下:  组件用法如下,新建一个index.vue,将Table组件引入使用:

    2024年02月08日
    浏览(53)
  • 整理微信小程序控制view隐藏显示的五种方法

    使元素脱离文档流,通过改变元素的top和left属性值控制元素的显示与否 在页面的js文件中通过修改hidden值来控制

    2024年02月04日
    浏览(62)
  • mars3d显示地图,并且完成切换地图图层的功能,使用隐藏显示去控制图层

    如何安装mars3d请看这个链接哈! 我用的是vue3 先引入mars3d 创建地图的变量 在template中定义div,并且id名为cesiumBox(可以自定义) 在 onMounted 中使用 切换地图图层的实例 在上面的实例继续添加下面代码 show为false的话是图层隐藏掉 天地图的api链接在底部 接着在 template 添加此代码

    2024年02月12日
    浏览(49)
  • element UI级联选择器---动态加载数据,动态控制二级面板的显示与隐藏

     一级数据列表是在页面初始化的时候调用接口返回的数据; 二级数据列表需要在获取到一级数据id的时候调用接口得到数据进行列表渲染; 问题: 使用了el-cascader后发现如果第一次点击父级A获取到二级数据,并且二级面板显示,第二次点击父级B获取到二级数据为[ ],此时

    2024年02月08日
    浏览(43)
  • echarts图表动态监听dataZoom滑动,控制柱条的宽度以及数值的显示隐藏

    当数值过多时,显示所有柱条看着会很凌乱且文字会挤在一起,于是就需要监听datazoom的滑动,拿到对应的阈值后做出相应的配置。 “ dataZoom ” 事件通常用于响应用户对图表进行数据缩放的操作。 这里是datazoom官网api地址:点击跳转至官网文档的datazoom介绍 初始时 状态如下

    2024年04月13日
    浏览(47)
  • vue: v-show 和 v-if 指令控制盒子的显示隐藏

    1. v-show     语法:  v-show=\\\"布尔值\\\"    (true显示, false隐藏)     原理:  实质是在控制元素的 css 样式,  `display: none;` 2. v-if       语法: v-if=\\\"布尔值\\\"   (true显示, false隐藏)     原理:  实质是在动态的 创建 或者 删除 元素节点 应用场景:          1. 如果是频繁的切换显

    2024年02月09日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包