scroll滚动监听实现animate返回顶部(有坑)

就是常见网页里滚动到一定高度,出现返回顶部按钮,触发事件按钮再消失。animate巨坑。

在这里插入图片描述
html

<div class="J_goTop"><img src="../res/static/img/totop.png" alt=""></div>

js

<script>
$(document).scroll(function() {
	var scroH = $(document).scrollTop();  //滚动高度
	if (scroH >= 100) { // 显示
		$('.J_goTop').css("display", "block")  // $('.J_goTop').fadeIn();
	} else{ // 消失
		$('.J_goTop').removeAttr("style")  // $('.J_goTop').fadeOut();
	}
    // 点击事件 
    $('.J_goTop').click(function(){
      if(scroH!=0){// 判断好像无效 :)
        // 巨坑!!!执行animate前先结束这个循环动作
        $('body,html').stop().animate({}).animate({ // document,window对象不能执行animate
          scrollTop: '0px',
        }, 600);
        return false;
      }
    })
  });
</script>

css

/* 回到顶部 */
.J_goTop{
  position: fixed;
  bottom: 10%;
  right: 1%;
  cursor: pointer;
  width: 2.5rem;
  height: 2.5rem;
  display: none;
}
.J_goTop img{width: 100%;height: 100%}

ps:一直以为是样式未及时清除…然后发现jq中animate动画第二次点击事件没反应。
原因:第一次触发后就一直在重复执行scroll=0的操作,导致无法进行第二次,也就是再次下拉会卡顿闪烁。

解决:执行animate前,先结束这个上一次动作,再执行操作。

$('body,html').stop().animate({'为空或具体操作'}).animate({ 
	scrollTop: '0px',
}, 600);

借鉴:https://zhidao.baidu.com/question/542439686.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vue-seamless-scroll 是一个基于 Vue.js 的无缝滚动插件,它可以实现滚动时无缝切换内容的效果。要实现有缝滚动跳转,可以按照以下步骤进行: 1. 安装 vue-seamless-scroll 插件: 你可以通过 npm 或 yarn 来安装 vue-seamless-scroll 插件,具体命令如下: ``` npm install vue-seamless-scroll ``` 或 ``` yarn add vue-seamless-scroll ``` 2. 在 Vue 组件中引入并注册 vue-seamless-scroll 插件: 在需要使用无缝滚动的组件中,引入 vue-seamless-scroll 插件,并将其注册为 Vue 的插件。示例代码如下: ```javascript import Vue from 'vue' import VueSeamlessScroll from 'vue-seamless-scroll' Vue.use(VueSeamlessScroll) ``` 3. 在模板中使用 vue-seamless-scroll 组件: 在需要实现有缝滚动跳转的地方,使用 vue-seamless-scroll 组件,并设置相应的属性。示例代码如下: ```html <template> <div> <vue-seamless-scroll :list="scrollList" :speed="100" :interval="2000" :direction="direction"> <div slot-scope="{ item }">{{ item }}</div> </vue-seamless-scroll> </div> </template> <script> export default { data() { return { scrollList: ['Item 1', 'Item 2', 'Item 3', 'Item 4'], direction: 'vertical' // 设置滚动方向,可以是 'vertical' 或 'horizontal' } } } </script> ``` 在上述示例中,`scrollList` 是一个数组,包含了需要滚动显示的内容。`speed` 属性表示滚动速度,单位是像素/秒。`interval` 属性表示滚动间隔时间,单位是毫秒。`direction` 属性表示滚动方向,可以是 'vertical'(垂直方向)或 'horizontal'(水平方向)。 通过以上步骤,你就可以实现有缝滚动跳转的效果了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值