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 相关文章推荐
javascript单引号和双引号的区别和处理
May 14 Javascript
Bootstrap每天必学之轮播(Carousel)插件
Apr 25 Javascript
用director.js实现前端路由使用实例
Jan 27 Javascript
jQuery实现获取隐藏div高度的方法示例
Feb 09 Javascript
详解angularJS自定义指令间的相互交互
Jul 05 Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
JavaScript中Object值合并方法详解
Dec 22 Javascript
详解angular路由高亮之RouterLinkActive
Apr 28 Javascript
Vue不能检测到Object/Array更新的情况的解决
Jun 26 Javascript
ES6 新增的创建数组的方法(小结)
Aug 01 Javascript
js实现页面图片消除效果
Mar 24 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
Aug 07 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脚本中include文件出错解决方法
2008/11/20 PHP
memcache命令启动参数中文解释
2014/01/13 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
PHP针对JSON操作实例分析
2015/01/12 PHP
js的逻辑运算符 ||
2010/05/31 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
2015/08/24 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
对angular4子路由&amp;辅助路由详解
2018/10/09 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
婚礼新郎父母答谢词
2014/01/16 职场文书
教师个人学习总结
2015/02/11 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers