Mik*_*ike 9 html javascript css svelte
我有一个src/components/UI/Sidebar.svelte带有变量切换的组件。
export let toggle = true;
Run Code Online (Sandbox Code Playgroud)
我想在当切换为 true 时添加一个类名noscroll来<body>锁定正文滚动。我已将其添加到src/template.html
<style>
.noscroll { position: fixed; overflow-y:scroll };
</style>
Run Code Online (Sandbox Code Playgroud)
当侧边栏打开时,实现这样的 y 轴滚动锁的最佳方法是什么?
Ste*_*aes 17
在 Sidebar.svelte 中,您添加一个切换类名的反应函数
export let toggle;
$: document.body.classList[toggle ? 'add' : 'remove']('noscroll');
Run Code Online (Sandbox Code Playgroud)
更新
感谢 Rich Harris 指出,切换需要第二个参数规范,这可以简化为
export let toggle;
$: if (process.browser) document.body.classList.toggle('noscroll', toggle);
Run Code Online (Sandbox Code Playgroud)
编辑
当使用自提出此问题以来进入公开测试版的 SvelteKit 时,您还可以使用browser提供的变量。
export let toggle;
import { browser } from '$app/env'
$: if (browser) document.body.classList.toggle('noscroll', toggle);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3910 次 |
| 最近记录: |