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 相关文章推荐
phpwind放自动注册方法
Dec 02 Javascript
Prototype Hash对象 学习
Jul 19 Javascript
!DOCTYPE声明对JavaScript的影响分析
Apr 12 Javascript
javascript按位非运算符的使用方法
Nov 14 Javascript
使用AngularJS 应用访问 Android 手机的图片库
Mar 24 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
Oct 02 Javascript
JS使用onerror捕获异常示例
Aug 03 Javascript
通过命令行生成vue项目框架的方法
Jul 12 Javascript
JS实现浏览上传文件的代码
Aug 23 Javascript
简单的Vue异步组件实例Demo
Dec 27 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
Jun 19 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
Dec 05 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
PHP中动态显示签名和ip原理
2007/03/28 PHP
PHP三元运算符的结合性介绍
2012/01/10 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
js的回调函数详解
2015/01/05 Javascript
javascript中使用正则表达式清理table样式的代码
2020/04/01 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
AngularJs 禁止模板缓存的方法
2017/11/28 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
Python实现获取网站PR及百度权重
2015/01/21 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
linux面试题参考答案(11)
2012/05/01 面试题
网上卖盒饭创业计划书
2014/01/26 职场文书
医院检讨书范文
2014/02/01 职场文书
教师批评与自我批评
2014/10/15 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
工资证明格式模板
2015/06/12 职场文书
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫