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 相关文章推荐
一个简单的Ext.XTemplate的实例代码
Mar 18 Javascript
JavaScript代码复用模式实例分析
Dec 02 Javascript
JS定时关闭窗口的实例
May 22 Javascript
json属性名为什么要双引号(个人猜测)
Jul 31 Javascript
js同源策略详解
May 21 Javascript
JavaScript中exec函数用法实例分析
Jun 08 Javascript
详解JavaScript函数
Dec 01 Javascript
jQuery实现用户输入自动完成功能
Feb 13 Javascript
深入理解vue2.0路由如何配置问题
Jul 18 Javascript
jQuery实现简单聊天室
Feb 08 jQuery
微信小程序自定义纯净模态框(弹出框)的实例代码
Mar 09 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
Aug 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数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
javascript操作css属性
2013/12/30 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
js图片预加载示例
2014/04/30 Javascript
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
Python数据库小程序源代码
2019/09/15 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
PHP如何自定义函数
2016/09/16 面试题
大型主题婚礼活动策划方案
2014/09/15 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
五一晚会主持词
2015/07/01 职场文书
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers