vue3点击返回顶部

这篇博客详细介绍了如何在HTML中创建一个返回顶部的按钮,并通过监听滚动事件来控制按钮的显示与隐藏。当页面滚动超过400像素时,显示返回顶部的图标,否则隐藏。同时,提供了两种实现返回顶部的方法,一种是直接设置滚动高度为0,另一种是通过动画效果平滑滚动到顶部。代码示例展示了如何在Vue中结合模板和setup函数来实现这一功能。
摘要由CSDN通过智能技术生成

// 点击返回顶部
    
    

```
// 1. 要在heml 写一个 返回的按钮或者图标,然后定位到页面上

// 2. 在定义一个状态, 稍后用于判断是否让这个图标返回上面

// 3. 在滚动盒子上添加一个 事件   @scroll 事件        // 必须是要添加在滚动盒子上!!!

// 4. 在下面调用这个函数
    
// 5. 因为要写返回顶部,所以需要在这上面let
// 5. 返回顶部,首先是找到目标元素,e.target,然后给目标元素设置 滚动高度e.target.scrollTop = 0,但是事件对象是在 ‘e’ 中的,所以,要在上面记录一个


    let dom = null; // 定义全局的变量,来记录滚动盒子的dom元素
    let num = e.target
    // let num = 0;     // 滚动盒子的高度   // 点击返回顶部加个动画版

    // e 是事件对象,这里需要传这个参数
    const scroll =(e)=>{
    
         //    e.target 滚动盒子      // e.target.scrollTop 滚动条距离顶部的距离
         let num = e.target.scrollTop
         console.log(e.target.scrollTop);
         
         // 3.判断一下,滑动的距离到多少
         if (num > 400) {
            data.showBack = true;    // 大于400,就显示
         } else {
            data.showBack = false;   // 小于400,就隐藏
         }
    }
    
    // 6.回到顶部
    const goTop = () => {
     // 只需要把上面定义的滚动盒子的高度 = 0就可以了
      dom.scrollTop = 0
    };
    
    
    //  7.回到顶部 加个动画
    const goTop = () => {
    
        // 定义一个 定时器
      let time = setInterval(() => {
      
          // 如果 ,滚动的高度是小于定于0 ,就清除定时器
        if (num <= 0) {
          clearInterval(time); // 清空
        } else {        // 否则,就让滚动盒子的高度--
          num = num - 50;
          // num--
          dom.scrollTop = num; // 让滚动盒子的高度= 0
        }
      }, 10);
    };


    
    

 如:
     <template>
         // home是最大的父盒子
          <div class="home">
            <app-header></app-header>

            // count 是内容的滚动盒子 ,给他加  @scroll 事件
            <div class="count" @scroll="scroll">
                
                  <app-list :appList="showList"></app-list>
                </div>
                
                // 添加的这个点击返回顶部的这个图标,用定位固定到页面上          // v-show="showBack"  当他的状态比如处于false的时候,让他显示     // 添加一个点击事件,回到顶部
            <i class="iconfont icon-fanhuidingbu" v-show="showBack" @click="goTop" ></i>
          </div>
    </template>
    
    setup(props) {
        const data = reactive({
          showBack: false, //是否回到顶部        // 定义一个状态
        });
     }
     
     
    // 点击返回顶部  的距离
    let dom = null;  // 定义全局的变量,来记录滚动盒子的dom元素
    let num = 0;     // 滚动盒子的高度
    const scroll = (e) => {     // e 是事件对象
      num = e.target.scrollTop;        // 滚动条距离顶部的距离
      dom = e.target;     // 滚动盒子
      if (num > 400) {
        data.showBack = true;        // 大于400,就显示
      } else {
        data.showBack = false;         // 小于400,就隐藏
      }
    };

    // 回到顶部
    const goTop = () => {
      // dom.scrollTop = 0
      let time = setInterval(() => {
        if (num <= 0) {
          clearInterval(time); // 清空
        } else {
          num = num - 5;
          dom.scrollTop = num;
        }
      }, 10);
    };
```

点击返回顶部,有一个是使用vant组件的时候,再写返回顶部,会不好写,需要获取节点


    
    
    
        
   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值