jq滑动箭头跟随,选项卡功能

主要实现功能
1.点击li,增加选中样式,同时箭头指向选中li
2.上滑列表页,超出显示范围做处理,默认选中第一个
3.滑动时,箭头不显示,添加一个定时器,500ms后显示处理结果
html文件

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <link rel="stylesheet" type="text/css" href="css/expert.css"/>
    <link rel="stylesheet" type="text/css" href="css/base/reset.css"/>
    <script src="js/base/jquery-3.1.0.min.js" type="text/javascript" charset="utf-8"></script>
    <body>
        <article id="expert">
            <ul class="list">
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
            </ul>
            <aside>
                <p class="print"></p>
            </aside>
            <article class="details">

            </article>
        </article>
    </body>
    <script type="text/javascript">
        $(".list li:first-child").addClass("sel")
        var scrollTop=0;
        var Ptop =38;
        var oHeig=$(".list li")[0].offsetHeight;
        var listHeig=$(".list")[0].offsetHeight;
        $(".list li").click(function () {
            $(".list li").removeClass("sel")
            $(this).addClass("sel")
            console.log($(this)[0].clientHeight)
            console.log($(this)[0].offsetTop-scrollTop)
            console.log($(this))
            Ptop=$(this)[0].offsetTop-scrollTop+38;
            $(".print").css("top",Ptop+"px")
            return Ptop;
        })
        $(".list").scroll(function () {
            $(".print").hide()
//            console.log("点击的高度"+$(this))
//            console.log($(this).scrollTop())
            Ptop=$(".sel")[0].offsetTop-scrollTop+38;
            scrollTop=$(this).scrollTop();
            //判断是否点击的li超出显示范围,跑上面了(Ptop<0)
            if(Ptop<0){
                for(var i=0;i<$(".list li").length;i++){
                    //判断最接近显示范围的li,找到结束循环
                    if($(".list li")[i].offsetTop+oHeig-scrollTop>0){
                        $(".list li").removeClass("sel")
                        $($(".list li")[i]).next().addClass("sel")
                        break;
                    }
                }
            }else if(Ptop>listHeig){
                for(var i=0;i<$(".list li").length;i++){
                    //判断最接近显示范围的li,找到结束循环
                    if($(".list li")[i].offsetTop+oHeig-scrollTop>0){
                        $(".list li").removeClass("sel")
                        $($(".list li")[i]).next().addClass("sel")
                        break;
                    }
                }
            }
            $(".print").css("top",Ptop+"px")
            setTimeout(function () {
                $(".print").show();
            },500)
            return scrollTop
        })
    </script>
</html>

css文件

*{
    box-sizing: border-box;
}
#expert{
    width: 100%;
    height:100vh;
    background: #ccc;
}
#expert .list{
    width: 30%;
    height:100%;
    overflow-y: auto;
    float: left;
}
#expert .list li{
    background: #fff;
    width: 100%;
    height: 100px;
    margin-bottom: 3px;
    border:1px solid #fff;
}
#expert .list .sel{
    border:1px solid #f00;
}

/*隐藏滚动条显示*/
#expert{
    position: relative;
    overflow: hidden;
}
#expert .list{
    position: absolute;
    left: 0;
    overflow-x: hidden;
    overflow-y: scroll;

}
/* for Chrome */
::-webkit-scrollbar {
    display: none;
}
.details{
    float: right;
    width: 68%;
    height: 100%;
    background: #ff0;
    padding-left: 2%;
    position: relative;
}
aside{
    float: left;
    width: 2%;
    height: 100vh;
    background: #0ff;
    position: relative;
    margin-left: 30%;
}
aside .print{
    width: 20px;
    height:20px;
    background: #fff;
    position: absolute;
    right: -10px;
    top:40px;
    transform:rotate(45deg);
}

显示的内容

图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值