实现知乎滑动效果介绍(附html+js代码)

681 ℃

想做一个知乎滑动效果,下面web建站小编附上html+js代码,希望对大家有所帮助!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    <title></title>
    <style>
        .big-box{
            position: relative;
            width: 100%;
            display: flex;
            justify-content: center;
            overflow: hidden;
            padding: 10px 0;
            height: 130px;
        }
        .box_1{
            width: 90%;
            margin: auto;
            position: absolute;
            box-shadow: -1px 2px 4px #C2C2C2;
            border-radius: 5px;
            padding: 16px 16px 10px;
            background: #fff;
        }
        .box_1>span{
            display: block;
            padding: 2px 0;
            overflow: hidden;
            white-space: nowrap;
            text-overflow: ellipsis;
        }
        .box_1>span:nth-child(1){
            color: #333;
            font-size: 17px;
            font-weight: 600;
        }
        .box_1>span:nth-child(2){
            color: #333;
            font-size: 15px;
        }
        .box_1>div{
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin: 20px 0 0;
        }
        .box_1>div>span{
            color: #9B9B9B;
            font-size: 14px;
        }
        .box_1>div>div{
            display: flex;
            align-items: center;
        }
        .box_1>div>div>div{
            margin: 0 10px;
            font-size: 14px;
            padding: 4px 14px;
            border-radius: 2px;
        }
        .box_1>div>div>div:nth-child(1){
            background: #F5F5F5;
            color: #9B9B9B;
        }
        .box_1>div>div>div:nth-child(2){
            background: #E8F4FD;
            color:#386DB0;
        }
 
        .submit_btn{
            margin: 20px auto;
            padding: 8px 0px;
            text-align: center;
            font-size: 14px;
            background: #1386F6;
            border-radius: 3px;
            color: #fff;                
            width: 100px;
            box-shadow: -1px 2px 4px #C2C2C2;
            position:relative;
            overflow: hidden;
            cursor: pointer;
        }
        /* .submit_btn:hover span{
            left: 100%;
            transition: all .5s;
        } */
        .go{
            left: 100% !important;
            transition: all .5s;
        }
        .submit_btn span{
            position: absolute;
            top:0;
            bottom: 0;
            left: 0;
            width: 100px;
            background-image: linear-gradient(0deg,rgba(255,255,255,0),rgba(255,255,255,0.3),rgba(255,255,255,0));
            left: -100%;
            transform: rotate(-50deg);
        }
    </style>
</head>
<body>
    <div class="big-box">
    </div>
 
    <div class="submit_btn">提交<span></span></div>
 
    <script>
        let dataList = [ //第一次请求的数据
            {
                title1:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                title2:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                guanzhu:'12',
            },
            {
                title1:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                title2:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                guanzhu:'12',
            },
            {
                title1:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                title2:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                guanzhu:'12',
            },
            {
                title1:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                title2:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                guanzhu:'12',
            },
            {
                title1:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                title2:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                guanzhu:'12',
            },
            {
                title1:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                title2:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                guanzhu:'12',
            }
        ];
        let box_1 = document.getElementsByClassName('box_1'); //获取dom
 
        let html = '',index = 0,z_index = dataList.length;
        for(let item of dataList){
            index++,z_index--;
            html+=`<div class="box_1 boxs_${index}" style="z-index: ${z_index}; opacity: ${index>2?0:1}; ${index == 2?'top: 22px;; transform: scale(.96);':''} ">
                <span>${item.title1}</span>
                <span>${item.title2}</span>
                <div>
                    <span>${item.guanzhu}人关注</span>
                    <div>
                        <div>忽略</div>
                        <div>回答</div>
                    </div>
                </div>
            </div>`
        }
        document.getElementsByClassName('big-box')[0].innerHTML = html;
        for(let i in dataList){
            i++
            let doc = document.getElementsByClassName('boxs_'+i)[0]
            touchevent(doc,i) //注入滑动事件
        }
 
        function touchevent(target,i){
            let pageX,startX,offsetLeft,lefts,endpageX;
            return target.addEventListener('touchstart',function(e){
                    console.log(target.previousSibling)
                    if(target.previousSibling){
                        if(target.previousSibling.style.opacity == 1) return;
                    }
 
                    target.style.cssText = 'z-index:999; opacity:1;'
                    startX = e.targetTouches[0].pageX;
                    offsetLeft = target.offsetLeft;
                }),target.addEventListener('touchmove',function(e){
                    if(target.previousSibling){
                        if(target.previousSibling.style.opacity == 1) return;
                    }
 
                    e.preventDefault()
                    pageX = e.targetTouches[0].pageX;
                    let left = pageX - startX + parseInt(offsetLeft)
                    lefts = left
                    target.style.cssText = 'z-index:999; left:'+left+'px; opacity:1;'
                }),target.addEventListener('touchend',function(e){
                    if(target.previousSibling){
                        if(target.previousSibling.style.opacity == 1) return;
                    }
 
                    if(i == dataList.length)lefts = 0;
                    endpageX = e.changedTouches[0].pageX;
                    if(endpageX === startX)return;
                    if(lefts<=-70){
                        target.style.cssText = 'left: -110%; transition:all .3s; z-index:999; opacity:0;'
                        next(target,i);
                    }else if(lefts>=70){
                        target.style.cssText = 'left: 110%; transition:all .3s; z-index:999; opacity:0;'
                        next(target,i);
                    }else{
                        target.style.cssText = 'left: '+offsetLeft+'px; transition:all .3s; z-index:999; opacity:1;'
                        setTimeout(() => {
                            target.style.cssText = 'left: '+offsetLeft+'px; z-index:999; opacity:1;';
                        }, 300);
                    }
                })
        };
        
        function next(target,i){
            if(i == dataList.length -2){ console.log('执行下一页');page() }
            i++;
            document.getElementsByClassName('boxs_'+i)[0].style.cssText = 'opacity: 1; transform: scale(1); transition:all .3s; z-index:999; top:10px;'
            i++;
            document.getElementsByClassName('boxs_'+i)[0].style.cssText = 'opacity: 1; transform: scale(.96); transition:all .3s; z-index:99; top:22px;'
        }
 
        function page(){
            let pageList = [ //请求下一页的数据
                {
                    title1:'我是下一页',
                    title2:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                    guanzhu:'12',
                },
                {
                    title1:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                    title2:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                    guanzhu:'12',
                },
                {
                    title1:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                    title2:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                    guanzhu:'12',
                },
                {
                    title1:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                    title2:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                    guanzhu:'12',
                },
                {
                    title1:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                    title2:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                    guanzhu:'12',
                },
                {
                    title1:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                    title2:'送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发送积分哦啊还发我我都是佛我爱上覅都是佛我爱上覅发',
                    guanzhu:'12',
                }
            ];
            dataList.push(...pageList)
            let html = '',z_index = dataList.length;
            for(let item of pageList){
                index++,z_index--;
                html+=`<div class="box_1 boxs_${index}" style="z-index: ${z_index}; opacity: 0; ${index == 2?'top: 22px;; transform: scale(.96);':''} ">
                    <span>${item.title1}</span>
                    <span>${item.title2}</span>
                    <div>
                        <span>${item.guanzhu}人关注</span>
                        <div>
                            <div>忽略</div>
                            <div>回答</div>
                        </div>
                    </div>
                </div>`
            }
 
            $(".big-box").append(html)
            let indexs = index - pageList.length
            for(let i in pageList){
                indexs++
                let doc = document.getElementsByClassName('boxs_'+indexs)[0]
                touchevent(doc,indexs)
            }
        }
    
        let btn = document.getElementsByClassName('submit_btn')[0];
        btn.onclick = function(e){
            this.children[0].classList.add('go')
            console.log(this.children)
            setTimeout(() => {
                this.children[0].classList.remove('go')
            }, 500); 
        }
    </script>
    
</body>
</html>

JS代码格式化后无法运行一般有哪些问题导致的?

js文章太长显示部分(百分比),点击按钮显示全部

css3实现鼠标移上去隐藏提示框由上到下滑动效果

html各种特殊字符转义对照表介绍

css3卡片动态滑动效果

标签: html, js代码, 滑动效果, 知乎

上面是“实现知乎滑动效果介绍(附html+js代码)”的全面内容,想了解更多关于 js 内容,请继续关注web建站教程。

当前网址:https://m.ipkd.cn/webs_2095.html

声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

wordpress文章nextpage分页最后添加“下一页”按钮
node.js如何查看Windows/Mac系统的版本号
利用react做一个tab功能(组件)
js命名规则之中文变量名
一个新站是什么原因导致网站没有被搜索引擎收录?