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>
        // 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
            }
        }

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这里有一段javascript代码可以实现楼层效果://点击楼层按钮 $(".floor_btn").click(function(){ //获取楼层偏移量 var offsetTop = $(".floor").eq($(this).index()).offset().top; //楼层滚动 $("html,body").animate({ scrollTop: offsetTop },500); }); ### 回答2: 当然可以!你可以使用JavaScript编写一个实现楼层效果的程序。 首先,你可以在HTML文档中创建一个容纳楼层的元素,例如一个div。给这个div设置一个id,以便JavaScript能够找到它。 然后,你可以使用JavaScript来操作这个div元素。首先,你可以使用document.getElementById()方法获取这个div元素。然后,你可以给这个div元素添加一些CSS样式,例如设置其位置、宽度、高度等。 接下来,你可以监听滚轮事件,并获取滚轮的滚动方向。当滚轮向上滚动时,你可以让div元素向上移动一定的距离,以模拟楼层上升的效果。当滚轮向下滚动时,你可以让div元素向下移动一定的距离,以模拟楼层下降的效果。 为了实现平滑的楼层效果,你可以使用CSS的transition属性来设置移动时的过渡效果。例如,你可以设置div元素的transition属性为"top 0.5s ease-in-out",使得其在移动时具有平滑的过渡效果。 最后,你可以根据需要添加一些其他的功能,例如点击楼层按钮时自动滚动到相应的楼层等。 总之,通过使用JavaScript和CSS的结合,你可以实现一个漂亮的楼层效果。记得在程序开头引入jQuery等相关库,这些库能够简化操作并提供更多功能。希望这个回答能够帮到你! ### 回答3: 楼层效果是指在网页中存在多层楼层,用户可以通过某种方式切换到不同楼层的功能。 在JavaScript中,可以通过以下步骤实现楼层效果: 1. 首先,在HTML中创建多个楼层元素。可以使用<div>标签或其他适合的标签来表示楼层。 2. 使用CSS将这些楼层元素进行样式上的区分,例如给每个楼层元素添加不同的背景颜色或设置不同的位置。 3. 在JavaScript中,通过querySelector或getElementById等方法获取到每个楼层元素的引用。 4. 创建一个函数,用于处理点击或滚动事件来切换楼层。 5. 在该函数中,可以使用scrollTop属性来获取页面滚动的垂直位置。根据当前的滚动位置,可以判断用户滚动到了哪个楼层。 6. 根据用户滚动到的楼层,可以使用CSS的display属性来显示或隐藏相应的楼层元素。可以使用classList.add和classList.remove等方法来添加或移除CSS类。 7. 在HTML中,可以添加按钮或导航栏来触发切换楼层的函数。 8. 在函数中,可以使用addEventListener方法将按钮或导航栏与切换楼层的函数关联起来。 这样,当用户点击按钮或滚动页面时,JavaScript会根据滚动位置来切换显示不同的楼层元素,从而实现楼层效果。 以上就是一种使用JavaScript实现楼层效果的简单方法。通过对滚动位置的监控和楼层元素的显示与隐藏,可以实现用户切换不同楼层的交互效果

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白小白从不日白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值