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 相关文章推荐
JS等比例缩小图片尺寸的实例
Feb 27 Javascript
jquery easyui使用心得
Jul 07 Javascript
jQuery中[attribute*=value]选择器用法实例
Dec 31 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
Mar 02 Javascript
javascript事件冒泡实例分析
May 13 Javascript
BOM系列第二篇之定时器requestAnimationFrame
Aug 17 Javascript
利用jquery实现瀑布流3种案例
Sep 18 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
May 26 Javascript
微信小程序 获取二维码实例详解
Jun 23 Javascript
javaScript日期工具类DateUtils详解
Dec 08 Javascript
微信小程序实现动态获取元素宽高的方法分析
Dec 10 Javascript
vue实现简易计算器功能
Jan 20 Vue.js
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学习笔记 数组遍历实现代码
2011/06/09 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
2016/03/17 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
Python 修改列表中的元素方法
2018/06/26 Python
利用Python如何生成便签图片详解
2018/07/09 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
Python 3.8 新功能全解
2019/07/25 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
用Python进行websocket接口测试
2020/10/16 Python
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
安踏广告词改编版
2014/03/21 职场文书
商务经理岗位职责
2014/08/03 职场文书
励志演讲稿大全
2014/08/21 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
李强优秀员工观后感
2015/06/16 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server