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 相关文章推荐
JSQL SQLProxy 的 php 版本代码
May 05 Javascript
让浏览器非阻塞加载javascript的几种方法小结
Apr 25 Javascript
js 通用javascript函数库整理
Aug 14 Javascript
javascript两种function的定义介绍及区别说明
May 02 Javascript
Jquery获取复选框被选中值的简单方法
Jul 04 Javascript
JS正则验证邮箱的格式详细介绍
Nov 19 Javascript
JQuery结合CSS操作打印样式的方法
Dec 24 Javascript
js实现上传图片及时预览
May 07 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
Jan 17 Javascript
Vue组件化通讯的实例代码
Jun 23 Javascript
微信小程序页面调用自定义组件内的事件详解
Sep 12 Javascript
JavaScript实现跟随鼠标移动的盒子
Jan 28 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实现的MySQL数据浏览器
2007/03/11 PHP
Php图像处理类代码分享
2012/01/19 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
2013/02/22 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
python判断字符串是否是json格式方法分享
2017/11/07 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
python3.6实现学生信息管理系统
2019/02/21 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
HTML5应用之文件上传
2016/12/30 HTML / CSS
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
高考标语大全
2014/06/05 职场文书
考察邀请函范文
2015/01/31 职场文书
项目战略合作意向书
2015/05/08 职场文书
北京爱情故事观后感
2015/06/12 职场文书
redis数据一致性的实现示例
2022/03/18 Redis
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技