js楼层导航

1.直接上思路好吧,看着图然后看着我写的思路来看。

 1.首先先想一遍实现效果,点击左边的楼层按钮,右边的楼层会滚动到对应位置

  2.那么第一步左边按钮绑定点击事件

  3.点击事件绑定好了,那么我点击后楼层要滚动到对应楼层,然后是不是要找到对应楼层?

  我这里是更具楼层按钮的长度和楼层的长度是一致的所以我用index来找到对应楼层的,如果楼  层按钮和楼层是不一样的话可以添加标识来实现,比如根据楼层的名字

 4.按钮和楼层的关联关系已经找到后,我们现在得开始滚动了,那么需要获取到滚动的元素

 5.滚动的元素也获取到了那么怎么知道滚动的距离呢?当然是用getBoundingClientRect()方法来获取元素距离浏览器的距离getBoundingClientRect().top就是元素距离浏览器顶部的距离,最好打印一下getBoundingClientRect()看看效果

6.1-5是思路, 废话不多说剩下看截图,注释都有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你一些思路。 首先,你需要获取到每个楼层的相对位置(offsetTop)。可以使用JavaScript的offsetTop属性来获取每个楼层元素距离文档顶部的位置。 接下来,你可以创建一个楼层导航条,用于点击跳转到对应的楼层。可以使用HTML和CSS创建一个fixed定位的导航条,并使用JavaScript编写代码来为导航条中的每个链接添加点击事件。 在每个链接的点击事件中,你需要获取目标楼层元素的offsetTop值,并使用JavaScript的scrollTop属性将页面滚动到该位置。 下面是一个简单的示例代码: HTML代码: ``` <!-- 楼层导航条 --> <div class="floor-nav"> <ul> <li><a href="#f1">1楼</a></li> <li><a href="#f2">2楼</a></li> <li><a href="#f3">3楼</a></li> </ul> </div> <!-- 楼层内容 --> <div id="f1" class="floor">1楼</div> <div id="f2" class="floor">2楼</div> <div id="f3" class="floor">3楼</div> ``` CSS代码: ``` /* 楼层导航条样式 */ .floor-nav { position: fixed; top: 50%; left: 20px; transform: translateY(-50%); } .floor-nav ul { list-style: none; padding: 0; margin: 0; } .floor-nav li { margin-bottom: 10px; } .floor-nav a { color: #333; text-decoration: none; } ``` JavaScript代码: ``` // 获取所有楼层元素 var floors = document.querySelectorAll('.floor'); // 获取楼层导航条 var nav = document.querySelector('.floor-nav'); // 为每个链接添加点击事件 nav.addEventListener('click', function(e) { e.preventDefault(); if (e.target.tagName === 'A') { // 获取目标楼层元素的offsetTop值 var floorId = e.target.getAttribute('href'); var targetFloor = document.querySelector(floorId); var offsetTop = targetFloor.offsetTop; // 滚动到目标位置 window.scrollTo({ top: offsetTop, behavior: 'smooth' }); } }); ``` 这段代码会为楼层导航条中的每个链接添加点击事件,当点击链接时,会获取对应楼层元素的offsetTop值,并使用平滑滚动将页面滚动到该位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值