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 相关文章推荐
CCPry JS类库 代码
Oct 30 Javascript
关于js内存泄露的一个好例子
Dec 09 Javascript
JavaScript中扩展Array contains方法实例
Aug 23 Javascript
基于ajax实现文件上传并显示进度条
Aug 03 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
Oct 06 Javascript
JS使用JSON作为参数实例分析
Jun 23 Javascript
浅谈jQuery操作类数组的工具方法
Dec 23 Javascript
js禁止浏览器页面后退功能的实例(推荐)
Sep 01 Javascript
JS实现带动画的回到顶部效果
Dec 28 Javascript
Vue的土著指令和自定义指令实例详解
Feb 04 Javascript
AngularJS 事件发布机制
Aug 28 Javascript
vue动态子组件的两种实现方式
Sep 01 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 常用字符串函数总结
2008/03/15 PHP
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
解析wamp5下虚拟机配置文档
2013/06/27 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
2018/04/13 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
python requests指定出口ip的例子
2019/07/25 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
2020/01/20 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
美国高级音响品牌:Master&Dynamic
2018/07/05 全球购物
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
大学生先进事迹材料
2014/02/16 职场文书
小学教学随笔感言
2014/02/26 职场文书
条幅标语大全
2014/06/20 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript