我有一个简单的 bootstrap 5 offcanvas 元素。它包含一个指向 html 页面正文中的锚点的简单链接。
我将 offcanvas 配置为没有背景并启用主体滚动。
现在,当我打开关闭画布时,单击链接。正文滚动到页面的该部分。但是当我关闭画布时。正文滚动回到顶部。我怎样才能让尸体保持在原来的位置?
似乎用于打开关闭画布的按钮重新获得了焦点。我尝试过这样的事情。
var myOffcanvas = document.getElementById('offcanvasExample');
//var bsOffcanvas = new bootstrap.Offcanvas(myOffcanvas)
myOffcanvas.addEventListener('hidden.bs.offcanvas', function (event) {
//event.stopPropagation();
//event.preventDefault();
// Give the document focus
// Remove focus from any focused element
if (document.activeElement) {
document.activeElement.blur();
}
window.focus();
});Run Code Online (Sandbox Code Playgroud)
但页面不断滚动回到按钮。
亲切的问候
解决了。该按钮不应使用 data-bs-toggle="offcanvas"。如果您为按钮创建一个点击处理程序,使用 bootstrap 的 javascript 函数切换 offcanvas,那么一切都会起作用。
这是我的代码
document.addEventListener("DOMContentLoaded", function(){
var myOffcanvas = document.getElementById('offcanvasExample');
var bsOffcanvas = new bootstrap.Offcanvas(myOffcanvas);
document.getElementById("OpenMenu").addEventListener('click',function (e){
e.preventDefault();
e.stopPropagation();
bsOffcanvas.toggle();
});
});Run Code Online (Sandbox Code Playgroud)
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js" integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf" crossorigin="anonymous"></script>
<!-- the Offcanvas button //-->
<button class="nav-link btn btn-outline-primary" id="OpenMenu">open</button>
<!-- the Offcanvas element //-->
<div class="offcanvas offcanvas-start" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" id="offcanvasExample" aria-labelledby="offcanvasExampleLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title text-primary" id="offcanvasExampleLabel">Test</h5>
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<a href="#test">test</a>
</div>
</div>
<div class="my-5 py-5">
Test content
</div>
<div class="my-5 py-5">Test content</div>
<div class="my-5 py-5">Test content</div>
<div class="my-5 py-5">Test content</div>
<div class="my-5 py-5">Test content</div>
<div class="my-5 py-5">Test content</div>
<div class="my-5 py-5">Test content</div>
<div class="my-5 py-5">Test content</div>
<div class="my-5 py-5"><a name="test" id="test">Scroll here</a></div>
<div class="my-5 py-5">Test content</div>
<div class="my-5 py-5">Test content</div>
<div class="my-5 py-5">Test content</div>
<div class="my-5 py-5">Test content</div>
<div class="my-5 py-5">Test content</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6494 次 |
| 最近记录: |