可能有些麻烦,以后知道怎么优化会改的
/*垂直导航栏开始*/
//index()方法 获得第一个匹配元素相对于其同级元素的index位置 所有兄弟节点中的索引
var arr = ["1460", "2150", "2935", "3620", "4330", "5020", "5725", "6423", "0"];
//把元素到页面顶部的高写死在数组里 不太科学但也可以 你也可以获取元素距顶部的距离
var isMouseOver = true; //控制鼠标移上移下事件和click事件的冲突 true时执行hover
$(".com-nav1").hover(function () { //绑定hover事件
if ($(this).hasClass('active')) { //激活状态 (下面有解释)
isMouseOver = false; //不执行hover
} else {
isMouseOver = true; //否则执行hover
$(this).addClass('spe-com-nav' + $(this).index());
//字符串和索引拼接形成一个类(css写好了) 添加样式
}
}, function () {
if (isMouseOver) {
$(this).removeClass('spe-com-nav' + $(this).index()); //移除样式
}
}).on('click', function () { //点击事件
isMouseOver = false;//不执行hover
$(this).addClass('spe-com-nav' + $(this).index() + ' active')
.siblings().removeClass().siblings().addClass('com-nav com-nav1');
//添加样式和active类
/*如果不特别添加一个类来区分是否是激活状态 点击之后 鼠标再hover当前$(".com-nav1")元素就会执行hover 移除样式*/
/*移除所有兄弟的类 再给所有兄弟添加基础类(设置样式和用来选中元素的类)com-nav com-nav1
不能直接移除兄弟的多余类 之前有拼接字符串 不好取值*/
$(window).scrollTop(arr[$(this).index()]);
//页面滚动到当前被点击的元素对应的索引 在数组中对应的值
});
//页面滚动事件
$(window).scroll(function (i) { //当窗体滚动
//var scroll = document.documentElement.scrollTop || document.body.scrollTop;
//获取页面滚动高度 js
var windowHeight = $(window).scrollTop(); //获取页面滚动高度 jq
if (windowHeight > 800) { //当滚动距离大于800(800根据自己页面调整就好)
$('#ver-nav').css({ //导航栏显示
display: 'block'
});
$(arr).each(function (idx,ele) {
//循环数组 each()方法有两个参数 idx(索引) ele(索引对应值)
if(windowHeight>(ele-200)&&windowHeight<(arr[idx+1]-600)){
//滚动高度大于当前元素对应值并且小于下个元素对应值 数字是用来纠正的 都可调
$('.com-nav1').eq(idx).addClass('spe-com-nav' +idx + ' active') //之前因为没写这个 一直做不出来
.siblings().removeClass().siblings().addClass('com-nav com-nav1');
//索引等于idx的$('.com-nav1')元素添加样式 之后原理同上
};
if(windowHeight>6200){ //页面中最后一部分
$('.com-nav1').eq(7).addClass('spe-com-nav7' + ' active') //在我的页面中 索引是7
.siblings().removeClass().siblings().addClass('com-nav com-nav1');
}
});
} else {
$('#ver-nav').css({ //滚动距离<800 隐藏
display: 'none'
});
$('.com-nav1').removeClass().addClass('com-nav com-nav1');
//并且清除添加的类 下次滚动页面时相当于重新开始
};
});
/*垂直导航栏结束*/
/**
* Created by Administrator on 2018/5/21 0021.
*/
/*垂直导航栏开始*/
var arr = ["1460", "2150", "2935", "3620", "4330", "5020", "5725", "6423", "0"];
//index()获得第一个匹配元素相对于其同级元素的index位置 所有兄弟节点中的索引
// var scroll = document.documentElement.scrollTop || document.body.scrollTop;
var isMouseOver = true; //控制鼠标移上移下事件和click事件的冲突
$(".com-nav1").hover(function () {
if ($(this).hasClass('active')) {//激活状态
isMouseOver = false; //不执行hover
} else {
isMouseOver = true; //否则执行hover
$(this).addClass('spe-com-nav' + $(this).index());
}
}, function () {
if (isMouseOver) {
$(this).removeClass('spe-com-nav' + $(this).index());
}
}).on('click', function () {
isMouseOver = false;//不执行hover
$(this).addClass('spe-com-nav' + $(this).index() + ' active')
.siblings().removeClass().siblings().addClass('com-nav com-nav1');
$(window).scrollTop(arr[$(this).index()]);
});
//页面滚动事件
$(window).scroll(function (i) {
var windowHeight = $(window).scrollTop();
if (windowHeight > 800) {
$('#ver-nav').css({
display: 'block'
});
$(arr).each(function (idx,ele) {
if(windowHeight>(ele-200)&&windowHeight<(arr[idx+1]-600)){
$('.com-nav1').eq(idx).addClass('spe-com-nav' +idx + ' active')
.siblings().removeClass().siblings().addClass('com-nav com-nav1');
};
if(windowHeight>6200){
$('.com-nav1').eq(7).addClass('spe-com-nav7' + ' active')
.siblings().removeClass().siblings().addClass('com-nav com-nav1');
}
});
} else {
$('#ver-nav').css({
display: 'none'
});
$('.com-nav1').removeClass().addClass('com-nav com-nav1');
};
});
/*垂直导航栏结束*/
<div id="ver-nav">
<div class="com-nav " id="spe-com-nav">导航</div>
<ul>
<li class="com-nav com-nav1">天猫超市</li>
<li class="com-nav com-nav1">天猫国际</li>
<li class="com-nav com-nav1">美丽人生</li>
<li class="com-nav com-nav1">潮电酷玩</li>
<li class="com-nav com-nav1">居家生活</li>
<li class="com-nav com-nav1">打造爱巢</li>
<li class="com-nav com-nav1">户外出行</li>
<li class="com-nav com-nav1">猜你喜欢</li>
<li class="com-nav com-nav1" id="spe-com-top">顶部</li>
</ul><!--侧边导航栏-->
</div>
/*垂直导航栏开始*/
#ver-nav {
position: fixed;
bottom: 50px;
left: 5px;
display: none;
}
.com-nav {
width: 35px;
height: 36px;
text-align: center;
color: #fff;
text-decoration: none;
cursor: pointer;
font-size: 12px;
margin: 2px 0;
background-color: rgba(0, 0, 0, .6);
}
#spe-com-nav {
background: red;
line-height: 36px;
}
#spe-com-top {
line-height: 36px;
}
#ver-nav ul .spe-com-nav8 {
background-color: rgba(0, 0, 0, .3);
}
#ver-nav ul .spe-com-nav0 {
background: #64c333;
}
#ver-nav ul .spe-com-nav1 {
background: #ff0036;
}
#ver-nav ul .spe-com-nav2 {
background: #ea5f8d;
}
#ver-nav ul .spe-com-nav3 {
background: #0aa6e8;
}
#ver-nav ul .spe-com-nav4 {
background: #00b262;
}
#ver-nav ul .spe-com-nav5 {
background: #f15453;
}
#ver-nav ul .spe-com-nav6 {
background: #19c8a9;
}
#ver-nav ul .spe-com-nav7 {
background: #000;
}
/*垂直导航栏结束*/