实现某个div滑动到最顶部

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m_review/article/details/83049129

场景描述:

点击提交按钮,对form表单页面信息进行校验,如果校验到某个输入的值的格式不正确,则使其所在表单要滑动到页面的最顶部。

解决方案关键词:

  • ref, 获取到真实的DOM节点

  • offsetTop, 元素距离页面顶部的距离

  • scrollTop, 滚动条滚动的距离

具体实现步骤:

这个例子的数据保存是借助mobx的store写的,主要看的是思路啦!


<div>
{ ticketFormList.map((item,index) => {
  // 所有form表单div
  return <div className="tricket-form-container" key={index}>

    { item.forms.map((form,id)=>{
    	// 每个form表单div
        return <div key={id} ref={ (dom) => {
          if (dom != null) { 
            // 1. 得到真实的DOM节点,将每个节点距离顶部的距离offsetTop保存起来
            this.props.peopleInfoStore.saveFormPosition(item.id,form.formId,dom.offsetTop) 
          }
        }}>
       	  {/*每一个field*/}
          <TicketField form={form} forms={item} />
        </div>
      })}
    
  </div> })}
</div>

peopleInfoStore文件:

/*
* this.formPositionList 存储元素的offsetTop值的集合
*/
@action findErrorForm = (id, formId) => {
  this.formPositionList.forEach(item=>{
    if(item.id === id && item.formId === formId){
      // 2. 找到错误所在的元素相对应的offsetTop值,设置页面的scrollTop
      document.documentElement.scrollTop = item.offsetTop;
    }
  });
}

猜你喜欢

转载自blog.csdn.net/m_review/article/details/83049129