JavaScript实现楼层效果

 更新时间:2021年11月07日 13:40:44   作者:小白小白从不日白  
这篇文章主要为大家详细介绍了JavaScript实现楼层效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了JavaScript实现楼层效果的具体代码,供大家参考,具体内容如下

* {
            margin: 0;
            padding: 0;
        }
        
        html,
        body {
            width: 100%;
            height: 100%;
        }
        
        ul {
            width: 100%;
            height: 100%;
        }
        
        ul>li {
            list-style: none;
            width: 100%;
            height: 100%;
            font-size: 100px;
            text-align: center;
        }
        
        ol {
            position: fixed;
            left: 10px;
            top: 50%;
            transform: translateY(-50%);
        }
        
        ol>li {
            list-style: none;
            width: 100px;
            line-height: 40px;
            text-align: center;
            border: 1px solid #000;
        }
        
        .selected {
            background: skyblue;
        }
 <ul>
        <li>我是第1层</li>
        <li>我是第2层</li>
        <li>我是第3层</li>
        <li>我是第4层</li>
        <li>我是第5层</li>
    </ul>
 
    <ol>
        <li class="selected">第1层</li>
        <li>第2层</li>
        <li>第3层</li>
        <li>第4层</li>
        <li>第5层</li>
</ol>

js:

// 1.初始化楼层的颜色
let oPages = document.querySelectorAll("ul>li");
let colorArr = ['green', 'blue', 'purple', 'red', 'yellow'];
        for (let i = 0; i < oPages.length; i++) {
            let page = oPages[i];
            page.style.background = colorArr[i];
        }
 
        // 2.实现点击谁就选中谁
        let oItems = document.querySelectorAll("ol>li");
        let currentItem = oItems[0];
 
        // 获取可视区域的高度
        let screenHeight = getScreen().height;
 
        let timerId = null;
        for (let i = 0; i < oItems.length; i++) {
            let item = oItems[i];
            item.onclick = function() {
                currentItem.className = "";
                this.className = "selected";
                currentItem = this;
                // 实现滚动
                // window.scrollTo(0, i * screenHeight);
                // 注意点: 通过documentElement.scrollTop来实现网页滚动, 在设置值的时候不能添加单位
                // document.documentElement.scrollTop = i * screenHeight + "px";
                // document.documentElement.scrollTop = i * screenHeight;
                clearInterval(timerId);
                timerId = setInterval(function() {
                    let begin = document.documentElement.scrollTop;
                    let target = i * screenHeight;
                    let step = (target - begin) * 0.2;
                    begin += step;
                    if (Math.abs(Math.floor(step)) <= 1) {
                        clearInterval(timerId);
                        document.documentElement.scrollTop = i * screenHeight;
                        return;
                    }
                    document.documentElement.scrollTop = begin;
                }, 50);
            }
        }
 
        //获取浏览器视口宽高
        function getScreen() {
            let width, height;
            if (window.innerWidth) {
                width = window.innerWidth;
                height = window.innerHeight;
            } else if (document.compatMode === "BackCompat") {
                width = document.body.clientWidth;
                height = document.body.clientHeight;
            } else {
                width = document.documentElement.clientWidth;
                height = document.documentElement.clientHeight;
            }
            return {
                width: width,
                height: height
            }
        }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JavaScript中push(),join() 函数 实例详解

    JavaScript中push(),join() 函数 实例详解

    本文通过实例给大家介绍了JavaScript中push(),join() 的知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • ES6中class类用法实例浅析

    ES6中class类用法实例浅析

    这篇文章主要介绍了ES6中class类用法,结合实例形式分析了ES6中类的实现方法与相关语法使用技巧,需要的朋友可以参考下
    2017-04-04
  • JavaScript的Proxy可以做哪些有意思的事儿

    JavaScript的Proxy可以做哪些有意思的事儿

    这篇文章主要介绍了JavaScript的Proxy可以做哪些有意思的事儿,Proxy是ES6中提供的新的API,可以用来定义对象各种基本操作的自定义行为 (在文档中被称为traps,我觉得可以理解为一个针对对象各种行为的钩子),,需要的朋友可以参考下
    2019-06-06
  • 4种JavaScript实现简单tab选项卡切换的方法

    4种JavaScript实现简单tab选项卡切换的方法

    这篇文章主要介绍了4种JavaScript实现简单tab选项卡切换的方法,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • 微信小程序中weui用法解析

    微信小程序中weui用法解析

    这篇文章主要介绍了微信小程序中weui用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • JS实现选项卡实例详解

    JS实现选项卡实例详解

    这篇文章主要介绍了JS实现选项卡的方法,结合实例形式详细讲述了JavaScript实现选项卡的布局与功能实现的完整步骤及相关技巧,需要的朋友可以参考下
    2015-11-11
  • javascript设计模式 – 建造者模式原理与应用实例分析

    javascript设计模式 – 建造者模式原理与应用实例分析

    这篇文章主要介绍了javascript设计模式 – 建造者模式,结合实例形式分析了javascript建造者模式相关概念、原理、应用场景及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • 网页前端登录js按Enter回车键实现登陆的两种方法

    网页前端登录js按Enter回车键实现登陆的两种方法

    下面小编就为大家带来一篇网页前端登录js按Enter回车键实现登陆的两种方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考
    2016-05-05
  • 一个多浏览器支持的背景变暗的div并可拖动提示窗口功能的代码

    一个多浏览器支持的背景变暗的div并可拖动提示窗口功能的代码

    兼容IE、Firefox、Opera前几天在网上找了许多资料,看了不少兄弟的源码,一直找不到合适的,要不就是拖动有问题,要不就是不兼容Firefox,所以自已写了一个,下面是代码:
    2008-04-04
  • 用js读写cookie的简单方法(推荐)

    用js读写cookie的简单方法(推荐)

    下面小编就为大家带来一篇用js读写cookie的简单方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08

最新评论