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 相关文章推荐
jQuery之折叠面板的深入解析
Jun 19 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
Nov 30 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
May 22 Javascript
VS2008中使用JavaScript调用WebServices
Dec 18 Javascript
jQuery中:selected选择器用法实例
Jan 04 Javascript
理解javascript中try...catch...finally
Dec 25 Javascript
jQuery EasyUI提交表单验证
Jul 19 Javascript
原生js实现jquery函数animate()动画效果的简单实例
Aug 21 Javascript
jQuery Chosen通用初始化
Mar 07 Javascript
Vue实现web分页组件详解
Nov 28 Javascript
mocha的时序规则讲解
Feb 16 Javascript
js实现倒计时秒杀效果
Mar 25 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转成EXE文件
2006/10/09 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
Ajax请求PHP后台接口返回信息的实例代码
2018/08/21 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
关于前后端json数据的发送与接收详解
2017/07/30 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
Python3的socket使用方法详解
2020/02/18 Python
基于Python fminunc 的替代方法
2020/02/29 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
改进作风怎么办发言材料
2014/08/17 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
蜗居观后感
2015/06/11 职场文书
婚礼答谢词范文
2015/09/29 职场文书
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
SQL基础的查询语句
2021/11/11 MySQL