概述
1、同html页面滚动条跳转 TAB页设计及实现
document.getElementById("***anchor").scrollIntoView(true);
注:***anchor为html页面的锚点,scrollIntoView为true表示从上往下滚动值锚点位置,为false表示从下往上。
Angular实现:
html:
<div class = "plx-col-1" style="position:fixed;right:1px;padding-left:8px">
<ul class="right-menu">
<li
*ngFor="let step of steps; let i = index"
[ngClass]="{ 'active-step': currentStep == i }"
(click)="changeStep(i)"
>
<a>
{{ step.label }}
</a>
</li>
</ul>
</div>
ts:
//右侧导航条
steps = [
{label: "***"},
{label: "***"},
{label: "***"},
{label: "***"}, // ***自行填充字符串
];
currentStep = 0;
changeStep(num) {
if (num == 2) {
document.getElementById("***anchor").scrollIntoView(true); //***anchor表示html上的锚点
this.currentStep = num;
} else if (num == 0) {
document.getElementById("***anchor").scrollIntoView(true);
this.currentStep = num;
} else if (num == 1) {
document.getElementById("***anchor").scrollIntoView(true);
this.currentStep = num;
} else if (num == 3) {
document.getElementById("***anchor").scrollIntoView(true);
this.currentStep = num;
} else if (num == 4) {
document.getElementById("***anchor").scrollIntoView(true);
this.currentStep = num;
} else if (num == 5) {
document.getElementById("***anchor").scrollIntoView(true);
this.currentStep = num;
}
}
less
.right-menu {
padding: 0px 0px 8px 8px;
width: 94px;
color: #4d4d4d;
li {
list-style: none;
cursor: pointer;
padding: 5px 10px;
width: 130px;
font-family: MicrosoftYaHei;
font-size: 16px;
border-left: 1px solid #d9d9d9;
&.active-step {
color: #1993ff;
border-left: 1px solid #1993ff;
}
}
}
2、监听滚动事件,实现Tab页随滚动条变化而变化
import {Subject} from "rxjs";
subscribeScoll: any;
contentElement: any;
isMonitorScroll = true; //是否监听滚动事件
ngAfterViewInit() {
setTimeout(() => {
this.setScroll(); //监听滚动事件切换导航条
});
}
setScroll() { //监听滚动事件切换导航条
let elements = document.getElementsByClassName('***'); //获取滚动条所在的元素***
this.contentElement = elements[elements.length - 1];
this.subscribeScoll = fromEvent(this.contentElement, 'scroll').subscribe((event) => {
if ( !this.isMonitorScroll ) { //自行切换导航条,则本次监听到滚动后不做操作
this.isMonitorScroll = true;
return
}
this.onWindowScroll();
});
}
onWindowScroll(){
// 获取不滚动情况下浏览器可见区域高度
var documentClientHeight = document.documentElement.clientHeight || window.innerHeight;
// 获取元素顶端到可见区域(网页)顶端的距离
var ElementClientTop = document.getElementById('***anchor').getBoundingClientRect().top;
//其余元素获取过程省略,对应下文***ElementClientTop
// 可视区高度大于元素距可视区顶部的高度时的操作
if ( documentClientHeight >= ElementClientTop && ElementClientTop > 0 ) {
this.currentStep = 0;
return
} else if ( documentClientHeight >= ***ElementClientTop && ***ElementClientTop > 0 ) {
this.currentStep = 1;
return
}
// currentStep 为2,3,4,5时的操作同上,省略
}
最后
以上就是结实雪碧为你收集整理的Html同页面内滚动跳转方法与监听滚动事件的全部内容,希望文章能够帮你解决Html同页面内滚动跳转方法与监听滚动事件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复