react的楼层效果

实现原理:

        给需要滑动的楼层绑定ref,当点击侧边栏时,通过ref获取到对应渲染的date-floor然后通过scrollIntoView滚动到其位置

import React, { useRef, useState } from 'react';
import './index.scss'
const Floor = () => {
  const floorRef = useRef(null);
  const handleNavigation = (floorNumber,ev) => {
    // ev.target.className='active'
    console.log(ev);
    const floorElement = floorRef.current.querySelector(`[data-floor="${floorNumber}"]`);
    console.log(floorElement);
    floorElement.scrollIntoView({ behavior: 'smooth' });
  };

  return (
    <div>
      <div className="navigation">
        
        <button onClick={(ev) => handleNavigation(1,ev)}>1层</button>
        <button onClick={(ev) => handleNavigation(2,ev)}>2层</button>
        <button onClick={(ev) => handleNavigation(3,ev)}>3层</button>
        <button onClick={(ev) => handleNavigation(4,ev)}>4层</button>
        <button onClick={(ev) => handleNavigation(5,ev)}>5层</button>
        <button onClick={(ev) => handleNavigation(6,ev)}>6层</button>
      </div>

      <div className="floors" ref={floorRef}>
        <div className="floor" data-floor="1">
          <h2>1层内容</h2>
          
        </div>
        <div className="floor" data-floor="2">
          <h2>2层内容</h2>
        </div>
        <div className="floor" data-floor="3">
          <h2>3层内容</h2>
        </div>
        <div className="floor" data-floor="4">
          <h2>4层内容</h2>``
        </div>
        <div className="floor" data-floor="5">
          <h2>5层内容</h2>
        </div>
        <div className="floor" data-floor="6">
          <h2>6层内容</h2>
        </div>
      </div>
    </div>
  );
};

export default Floor;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值