滚动到指定行 scrollIntoView()

  • 需求:滚动到指定行
  • 我:那不得计算行高,然后去滚动(如果行高不固定,怎么实现)

在我苦思无果后,就把这个问题搁置了(直接摆烂)
最近在啃书《javascript高考程序设计》,偶然看到一个方法,scrollIntoView(),只能说妙呀。废话不多说,给大家介绍一下这方法的使用。

scrollIntoView()

(method) Element.scrollIntoView(alignToTop?: boolean | ScrollIntoViewOptions): void

Element 接口的 scrollIntoView() 方法会滚动元素的父容器,使被调用 scrollIntoView() 的元素对用户可见。

语法


element.scrollIntoView(); // 等同于 element.scrollIntoView(true)
element.scrollIntoView(alignToTop); // Boolean 型参数
element.scrollIntoView(scrollIntoViewOptions); // Object 型参数

参数

  • alignToTop(可选)
    一个Boolean值:

    • 如果为true,元素的顶端将和其所在滚动区的可视区域的顶端对齐。相应的 scrollIntoViewOptions: {block: “start”, inline: “nearest”}。这是这个参数的默认值。
    • 如果为false,元素的底端将和其所在滚动区的可视区域的底端对齐。相应的scrollIntoViewOptions: {block: “end”, inline: “nearest”}。
  • scrollIntoViewOptions (可选 实验性)
    一个包含下列属性的对象:

    • behavior (可选)
      定义动画过渡效果, "auto"或 “smooth” 之一。默认为 “auto”。

    • block (可选)
      定义垂直方向的对齐, “start”, “center”, “end”, 或 "nearest"之一。默认为 “start”。

    • inline (可选)
      定义水平方向的对齐, “start”, “center”, “end”, 或 "nearest"之一。默认为 “nearest”。

ok 上代码

   <body>
      <h1>定位</h1>
      <div id="dataDiv" style="overflow-x:hidden;overflow-y:auto;height:350px;">
        <table id="tableId" align="center" border="1">
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>

          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>

          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr>
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
          <tr style="color:red" class="special">
            <td>name</td>
            <td>age</td>
            <td>sex
            </td>
            <td>address</td>
          </tr>
        </table>
      </div>
      <button class="btn">定位到一行</button>
    </body>
  <script>
    let btn = document.querySelector('.btn');
    let el = document.querySelector('.special');

    btn.addEventListener('click', function () {
      el.scrollIntoView(true, {
        behavior: 'smooth'
      });
    });
  </script>

觉得有用的就点个赞吧 O(∩_∩)O哈哈~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值