IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 基于Layui用JQ实现锚点定位/电梯导航(附带效果GIF) -> 正文阅读

[JavaScript知识库]基于Layui用JQ实现锚点定位/电梯导航(附带效果GIF)

今天要给页面用JQ实现一个锚点定位,就是经常听到的电梯导航,京东和淘宝的主页都有这样的应用,一般是用于页面太长,方便用户定位到需要的位置,就是放的锚点。

?

?


下面看看HTML内容:

//这个是导航栏
<div class="side-nav">
    <span class="active">选择评分机</span>  //默认选择的位置
    <span>本机IP设置</span>
    <span>平台设置</span>
    <span>程序升级</span>
    <span>配置管理</span>
</div>

//结构
<div class="floor floor-01"></div>
<div class="floor floor-02"></div>
<div class="floor floor-03"></div>
<div class="floor floor-04"></div>
<div class="floor floor-05"></div>
<div class="footer"></div>  //底部

下面是CSS内容:

//这个是整个导航栏的设置

.side-nav{
    width:100px;
    position:fixed;
    right:5%;
    top:1%;
    background:#f8f8f8;
    border-left: 1px solid #b2b2b2;
    height: 1000px;

}

//这个是span的设置
.side-nav span{
    display:block;
    width:200px;
    height:80px;
    text-align: center;
    line-height: 50px ;
    color:#0C0C0C;
    cursor: pointer;
    background: #f8f8f8;
    font-size: 13px;
}

//被选中的效果
.side-nav .active{
    /*border:3px solid #009688;*/
    color: #42b983;
    font-size: 18px;
    font-weight: 700;

}

CSS我反正是慢慢调整的,所以很有可能会误导你,尽量先搬上去,再去自己调整。被选中的效果我定的就是字体加粗,字体变大,颜色改变。

下面是JS的内容:

$(function(){
    //给一个颜色数组
    var colorArr = ['red','orange','yellow','green','blue'];
    //便利给各个导航“span”元素,和各个对应的楼层栏目元素
    for(i=0;i<$('.side-nav span').length;i++){
        $('.side-nav span').eq(i).css({font:colorArr[i]});
        $('.floor').eq(i).css({font:colorArr[i]});
    }

    //安利一下知识点
    //arr.push()
    //push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。
    //offset()
    //JQ中获取匹配元素在当前视口的相对偏移。返回的对象包含两个整型属性:top 和 left。此方法只对可见元素有效。

    //获取各个楼层的距离浏览器上部偏移量,并放入数组
    var divTopArr = [];
    for(var i=0;i<$('.floor').length;i++){
        divTopArr.push($('.floor').eq(i).offset().top);
    }

    //给导航每个栏目按钮添加点击事件,点击导航上的每个栏目按钮,html(body)元素滑动到对应的栏目
    $('.side-nav span').click(function(){
        $('body,html').animate({scrollTop:divTopArr[$(this).index()]+5+'px'});//没有+5的时候发现定位并不准确。
        $('.side-nav span').removeClass('active');
        $(this).addClass('active');
    })


    //添加页面滚轮滚动事件,
    $(window).scroll(function(){
        //获取获取页面当前已经滚动的scrollTop值
        var scrollTop = $(window).scrollTop();
        //divTopArr 遍历每一个楼层或者每个楼层对应的按钮
        for(i=0;i<$('.side-nav span').length;i++){
            //判断当前页面已经滚动的top值是否大于最后一个楼层top偏移量(最后一个要拿出来单算)
            if(scrollTop < divTopArr[divTopArr.length-1]){
                //          给一个循环动态判断的条件,若当前scrollTop值大于数组的arr[i],且小于arr[i+1],就对应的栏目按钮添加样式
                if(scrollTop >= divTopArr[i] && scrollTop < divTopArr[i+1]){
                    $('.side-nav span').removeClass('active');
                    $('.side-nav span').eq(i).addClass('active');
                }
            }else{
                //若当前scrollTop值大于数组的arr[length-1](即数组的最后一个值,最后一个栏目的offsetTop),
                $('.side-nav span').removeClass('active');
                $('.side-nav span').eq(divTopArr.length-1).addClass('active');
            }
        }

    })
})

使用的时候发现了定位不准,点击导航栏,从1跳转到4的时候,页面是跳过来了,但是导航栏的选中效果还停留在相邻的3上面。于是我在点击事件里面加了5px,这样的话下面监听的判断余量就比较大,不会出现导航栏选中效果不准确的情况。然后JS最上面的数组我拿过来用就是改变颜色的,我懒得改了就直接在css里面把color!important了,不会出现效果。有空的话再改。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 11:57:40  更:2021-08-19 11:58:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:01:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码