最近需要优化之前的一个H5项目,导航条刷新后不能记录原来点击的位置。我一开始的思路是获取导航条的偏移量,再根据条件判断到了某个位置再重新跳转,然而令人抓狂的是这个导航条是使用的swiper组件,各种获取偏移量的api通通无效,如果有哪位大神知道方法的话,麻烦告诉一下非常感谢。于是我就只能放弃组件自己写了个导航条,具体代码如下:
HTML:
<header>
<div class="nav">
<a href="javascript:;">推荐</a>
</div>
<div class="nav">
<a href="javascript:;">娱乐</a>
</div>
<div class="nav">
<a href="javascript:;">体育</a>
</div>
<div class="nav">
<a href="javascript:;">图片</a>
</div>
<div class="nav">
<a href="javascript:;">视频</a>
</div>
</header>
CSS:
header {
width: 100%;
overflow: hidden;
white-space: nowrap;
overflow-x: scroll;
height: 35px;
background-color: #2873ff;
}
header::-webkit-scrollbar {
display: none;
}
.nav {
display: inline-block;
margin-left: 8px;
margin-right: 8px;
height: 35px;
line-height: 35px;
}
.nav a{
font-size: 17px;
font-weight: 400;
color: #fff;
text-decoration: none;
}
JQ:
$(function(){
$(".nav").on("click",function(){
var moveX = $(this).position().left+$(this).parent().scrollLeft();
var pageX = document.documentElement.clientWidth;
var blockWidth = $(this).width();
var left = moveX-(pageX/2)+(blockWidth/2);
$("header").scrollLeft(left);
//获取当前点击的下标并存到浏览器内存
var picTabNum = $(this).index();
sessionStorage.setItem("picTabNum",picTabNum);
//获取偏移量存到cookie
var moveDis = left;
sessionStorage.setItem("moveDis",moveDis);
});
//点击样式
$('.nav a').on("click",function () {
$(this).css("color","#000000").parent().siblings().children().css("color","#ffffff");
});
$(function(){
//读取内存对之前点击的下标重新设置css
var getPicTabNum = sessionStorage.getItem("picTabNum");
$(".nav a").eq(getPicTabNum).css("color","#000000").parent().siblings().children().css("color","#ffffff");
//读取内存获取刷新前的偏移量并移动
var getMoveDis = sessionStorage.getItem("moveDis");
$("header").scrollLeft(getMoveDis)
});
});
以上代码参考了:https://blog.csdn.net/amyloverice/article/details/79239087
多谢大佬分享
网友评论