angular项目中鼠标下滑tab页导致其他页面也跟着下滑怎么处理
在Angular项目中,当鼠标下滑tab页导致其他页面也跟着下滑时,可以通过以下几种方式来处理:
- 禁用滚动事件传播:在tab页的滚动事件中,使用
event.stopPropagation()方法来停止滚动事件传播到其他页面。
@HostListener('scroll', ['$event'])
onScroll(event: Event) {
event.stopPropagation();
}
- 使用fixed定位:将其他页面的元素使用fixed定位来固定在页面上,这样无论tab页如何滚动,其他页面都不会跟着滚动。
<div class="other-page" style="position: fixed; top: 0; left: 0; right: 0; bottom: 0;">
<!-- 其他页面内容 -->
</div>
- 使用路由守卫:在进入tab页之前,通过路由守卫来禁止其他页面滚动。
import { Injectable } from '@angular/core';
import { CanActivate, Router } from '@angular/router';
@Injectable()
export class ScrollGuard implements CanActivate {
constructor(private router: Router) {}
canActivate() {
// 禁止其他页面滚动
document.body.style.overflow = 'hidden';
return true;
}
ngOnDestroy() {
// 恢复其他页面滚动
document.body.style.overflow = 'auto';
}
}
在路由配置中使用该守卫:
const routes: Routes = [
{ path: 'tab', component: TabComponent, canActivate: [ScrollGuard] },
// 其他路由配置
];
通过以上方式,可以有效解决鼠标下滑tab页导致其他页面也跟着下滑的问题
原文地址: https://www.cveoy.top/t/topic/hHjN 著作权归作者所有。请勿转载和采集!