? ? ? ?最近做到相关的业务,发现关于tab锚点定位的问题很多文章采用的方法略有差异,现在采用最直观的方式实现锚点定位,tab跟随内容变化而变化。
? ? ? ?逻辑通了之后,在任何框架和场景下都能使用,不一定要靠组件来完成。以下是简单实现的HTML代码,结合移动端和PC端平台不同,更改注册事件类型就可以达到一样的效果。
一、html代码
<div class="test">
<div class="title">
<span class="tab active">tab1</span>
<span class="tab">tab2</span>
</div>
<div class="content">
<p class="con con1">
内容一:果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议一:果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议一:果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议一:果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议一:果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议一:果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议一:果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议一:果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议一:果然
</p>
<p class="con con2">
内容二:也许最平静的风,还是拂拂微风。果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议三:也许最平静的风,还是拂拂微风。果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议三:也许最平静的风,还是拂拂微风。果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议三:也许最平静的风,还是拂拂微风。果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议三:也许最平静的风,还是拂拂微风。果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议三:也许最平静的风,还是拂拂微风。果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议三:也许最平静的风,还是拂拂微风。果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议三:也许最平静的风,还是拂拂微风。果然纹风不动,不是平静,却是酝酿风暴了。蒸闷的暑天,风重重地把天压低了一半,树梢头的小叶子都沉沉垂着,风一丝不动,可是何曾平静呢?风的力量,已经可以预先觉到,好像蹲伏的猛兽,不在睡觉,正要纵身远跳。只有拂拂微风最平静,没有东西去阻挠它:树叶儿由它撩拨,杨柳顺着它弯腰,花儿草儿都随它俯仰,门里窗里任它出进,轻云附着它浮动,水面被它偎着,也柔和地让它搓揉。随着早晚的温凉、四季的寒暖,一阵微风,像那悠远轻淡的情感,使天地浮现出忧喜不同的颜色。有时候一阵风是这般轻快,这般高兴,顽皮似的一路拍打拨弄。有时候淡淡的带些清愁,有时候润润的带些温柔;有时候亢爽,有时候凄凉。谁说天地无情?它只微微的笑,轻轻的叹息,只许抑制着的风拂拂吹动。因为一放松,天地便主持不住。
协议三:也许最平静的风,
</p>
</div>
</div>
二、CSS代码
.test {
width: 300px;
height: 400px;
margin: 0 auto;
}
.tab {
margin: 0;
width: 50px;
height: 20px;
display: inline-block;
text-align: center;
background: rgb(227, 226, 226);
color: #000;
border: 1px solid black;
border-radius: 10px;
}
.active {
color: beige;
background: rgb(131, 107, 107);
}
.content {
width: 300px;
height: 400px;
overflow: auto;
border: black solid 1px;
}
.con1 {
margin: 0;
background-color: pink;
}
.con2 {
margin: 0;
background-color: rgb(159, 219, 243);
}
三、JS逻辑代码
// 步骤一:
// 获取tab与内容的DOM
const tab = document.querySelectorAll('.tab');
const con = document.querySelectorAll('.con');
// 步骤二:
// 实现逻辑一:点击tab,滑动到相应位置,简单来说就是调用scrollIntoView方法就可以实现
tab[0].onclick = function () {
con[0].scrollIntoView();
tab[0].className = 'tab active';
tab[1].className = 'tab';
};
tab[1].onclick = function () {
con[1].scrollIntoView();
tab[1].className = 'tab active';
tab[0].className = 'tab';
};
// 步骤三:
// 实现逻辑二:tab跟随页面滚动内容变化
// 这里注册的事件跟随要求变化
//pc端可使用鼠标移入事件触发onmouseenter(只触发一次),onmouseover(只要在节点内就一直触发)
con[0].onmouseenter = function () {
// con[0].ontouchend = function () {
// 将当前触摸到的元素的样式中加上激活样式,实现选中的效果
tab[0].className = 'tab active';
// 没有触摸到的元素,将样式设置为初始样式tab
tab[1].className = 'tab';
};
con[1].onmouseenter = function () {
// 移动端可以使用触摸事件达到效果,根据具体场景的不同,也可改为注册监听器的形式,
// eg: document.addEventListener('touched',function(){},false);
// 注意:必须在适当的位置清除监听器,以免造成不必要的资源浪费,removeEventListener('touchend', function(){});
// con[1].ontouchend = function () {
tab[1].className = 'tab active';
tab[0].className = 'tab';
};
|