我正在使用offcanvas组件(https://getbootstrap.com/docs/5.0/components/offcanvas/)。但是我想知道当我在offcanvas窗口外单击时,是否可以阻止它关闭。我已经设法阻止它在我按ESC键时关闭,但是当我在offcanvas窗口外单击鼠标时,没有办法(就文档而言)阻止它关闭。有人有什么想法吗?
编辑:我通过监听hide.bs.offcanvas事件,然后使用e.preventDefault(),设法让它工作了一半;但是现在我无法用它的默认关闭按钮关闭offcanvas,因为它总是会取消隐藏事件。
8条答案
按热度按时间vqlkdk9b1#
Bootstrap会在
body
中添加一个click侦听器。因此,您需要在body
中附加一个click事件侦听器,并阻止事件传播...Demo
eanckbw92#
我找到了一个只使用CSS的解决方案,通过在
offcanvas-backdrop
类上设置pointer-events:none
。这将阻止offcanvas背景上的任何点击事件,offcanvas内的点击事件将照常工作。
xwmevbvl3#
现在,添加
data-bs-backdrop="static"
可以防止在画布外部单击时关闭画布(=单击背景)请参考https://getbootstrap.com/docs/5.2/components/offcanvas/#static-backdrop
lfapxunr4#
通过使用beforeDismiss返回false,它不会关闭dismiss选项,因为点击背景指向dismiss它不会关闭offcanvas,为了关闭offcanvas,我们可以使用close方法
zrfyljdw5#
将按预期工作
请将其放置在根CSS文件中。
bjp0bcyl6#
Bootstrap 5.2引入了新的选项。
功能是静态背景
但Bootstrap 5.1却没有。
但是您可以使用js代码:
bogh5gae7#
我不喜欢这个解决方案,但它能满足我今天的需求。(我真的希望Bootstrap能尽快给予这个功能。)
s2j5cfk08#
将
data-bs-keyboard="false"
设置为off-canvas元素的data-attribute似乎在Bootsrap 5.1.1中有效