requireJS模块化实现返回顶部功能的方法详解


Posted in Javascript onOctober 16, 2017

本文实例讲述了requireJS模块化实现返回顶部功能的方法。分享给大家供大家参考,具体如下:

引用requireJs

<script src="require.js" data-main="main"></script>

html部分

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
  <style>
    body{padding: 0; margin: 0; height: 3000px}
    .btn{width: 80px; height: 80px;
      position: fixed; bottom: 0; left: 50%; background: #ddd}
  </style>
  <script src="require.js" data-main="main"></script>
</head>
<body>
  <div id="top" class="btn"></div>
</body>
</html>

新建main.js

require.config({
  paths:{
    jquery:'jquery'
  }
});
requirejs(['jquery','backtop'],function($,backtop){
  $('#top').backtop({
    mode:"move",
    pos:100,
    dest:500,
    speed:20000
  })
});

创建backtop模块 backtop.js

/**
 * Created by Administrator on 2016/3/24.
 */
define(["jquery","scrollTo"],function($, scroll){
  function backtop(el,opts){
    this.opts = $.extend({},backtop.default,opts);
    this.$el = $(el);
    this.scroll = new scroll.scrollTo({
      dest:this.opts.dest,
      speed:this.opts.speed
    });
    this._checkPostion();
    if(this.opts.mode == "move"){
      this.$el.on("click", $.proxy(this._move,this))
    }else{
      this.$el.on("click", $.proxy(this._go,this))
    }
    $(window).on("scroll", $.proxy(this._checkPostion,this))
  };
  backtop.prototype._move = function(){
    this.scroll.move()
  };
  backtop.prototype._go = function(){
    this.scroll.go()
  };
  backtop.prototype._checkPostion = function(){
    if($(window).scrollTop() > this.opts.pos){
      this.$el.fadeIn();
    }else{
      this.$el.fadeOut();
    }
  }
  $.fn.extend({
    backtop:function(opts){
      return this.each(function(){
        new backtop(this,opts);
      })
    }
  });
  backtop.default = {
    mode:"move",
    pos:100,
    dest:0,
    speed:800
  }
  return{
    backtop:backtop
  }
})

backtop 依赖 scrollTo模块

创建scrollTo.js

define(['jquery'],function($){
  function scrollTo(opts){
    this.opts = $.extend({},scrollTo.DEFAULTS,opts);
    this.$el = $("html,body");
  }
  scrollTo.prototype.move = function(){
    if($(window).scrollTop() != this.opts.dest){
      //if(!this.$el.is(":animated")){
        this.$el.animate({scrollTop:this.opts.dest},this.opts.speed);
      //}
    }
  };
  scrollTo.prototype.go = function(){
    this.$el.scrollTop(this.opts.dest)
  };
  scrollTo.DEFAULTS = {
    dest:0,
    speed:800
  };
  return {
    scrollTo:scrollTo
  }
});

希望本文所述对大家基于requireJS的程序设计有所帮助。

Javascript 相关文章推荐
摘自百度的图片轮换效果代码
Nov 19 Javascript
JavaScript 获取当前时间戳的代码
Aug 05 Javascript
JS取得绝对路径的实现代码
Jan 16 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
Jan 27 Javascript
常用原生js自定义函数总结
Nov 20 Javascript
浅谈JS验证表单文本域输入空格的问题
Feb 14 Javascript
JavaScript+HTML5实现的日期比较功能示例
Jul 12 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
Dec 31 Javascript
JavaScript中变量提升与函数提升经典实例分析
Jul 26 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
May 28 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
Feb 10 Javascript
JS实现数组去重的11种方法总结
Apr 04 Javascript
JavaScript简单实现合并两个Json对象的方法示例
Oct 16 #Javascript
seajs实现强制刷新本地缓存的方法分析
Oct 16 #Javascript
基于ajax和jsonp的原生封装(实例)
Oct 16 #Javascript
AngularJS实现注册表单验证功能
Oct 16 #Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
Oct 16 #Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
Oct 16 #Javascript
Vue 2.0学习笔记之Vue中的computed属性
Oct 16 #Javascript
You might like
杏林同学录(五)
2006/10/09 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
Python中的ctime()方法使用教程
2015/05/22 Python
Python多线程实现同步的四种方式
2017/05/02 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
html5 标签
2009/07/16 HTML / CSS
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
Sony C++笔试题
2013/03/10 面试题
介绍一下MD5加密算法
2016/11/12 面试题
车间班组长岗位职责
2013/11/13 职场文书
2014年民政工作总结
2014/11/26 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
2015秋学期开学寄语
2015/05/28 职场文书
Python+pyaudio实现音频控制示例详解
2022/07/23 Python