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的公告无限循环滚动实现代码
May 11 Javascript
jquery获取checkbox的值并post提交
Jan 14 Javascript
浅谈JavaScript数据类型及转换
Feb 28 Javascript
node.js操作mysql(增删改查)
Jul 24 Javascript
微信小程序 template模板详解及实例代码
Mar 09 Javascript
JS实现的点击表头排序功能示例
Mar 27 Javascript
浅谈angularjs依赖服务注入写法的注意点
Apr 24 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
May 03 Javascript
Thinkjs3新手入门之如何使用静态资源目录
Dec 06 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 Javascript
解决Layui 表单提交数据为空的问题
Aug 15 Javascript
JavaScript实现旋转木马轮播图
Mar 16 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的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
Javascript 阻止javascript事件冒泡,获取控件ID值
2009/06/27 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
2018/09/17 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
python实现排序算法
2014/02/14 Python
浅谈function(函数)中的动态参数
2017/04/30 Python
Python3计算三角形的面积代码
2017/12/18 Python
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
python删除字符串中指定字符的方法
2018/08/13 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
运动会通讯稿400字
2014/01/28 职场文书
业务员自荐信范文
2014/04/20 职场文书
代理人委托书
2014/08/01 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
2022/04/11 Vue.js
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python