web建站教程
  1. 首页
  2. vuejs
  3. js
  4. 地图大全
  5. AIGC工具
  6. 前端知识
  7. 百度echarts
  8. 更多
    php入门
    nodejs
    mockjs
    reactjs
    mysql
    wordpress
    织梦cms
    帝国cms
    git教程
    IT知识
    模板大全
    休息站
    手机应用

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

917 ℃

想做一个知乎滑动效果,下面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获取当前电脑浏览器基本信息

知乎直答:国内问答社区知乎推出的一款AI大模型搜索产品

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

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

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

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

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

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

当前位置: 网站首页 > js
本文共计8503个字,预计阅读时长57分钟
Trae:新一代免费的AI编程工具

在线育儿补贴计算器

快来看看你到底可以领到多少补贴!

生活小工具

收录了万年历、老黄历、八字智能排盘等100+款小工具!生活小工具
上一篇: 阿里巴巴普惠体3.0字体已经更新(最强中文字体)
下一篇: 跨平台划词翻译、截图翻译工具——Pot划词翻译
x 打工人ai神器