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 Cookie的读取和写入函数
Dec 08 Javascript
javascript针对DOM的应用分析(三)
Apr 15 Javascript
JavaScript数组去重的3种方法和代码实例
Jul 01 Javascript
Bootstrap进度条组件知识详解
May 01 Javascript
js实现华丽的九九乘法表效果
Mar 29 Javascript
Javascript实现base64的加密解密方法示例
Jun 27 Javascript
浏览器调试动态js脚本的方法(图解)
Jan 19 Javascript
js中时间格式化的几种方法
Jul 22 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 Javascript
vueScroll实现移动端下拉刷新、上拉加载
Mar 22 Javascript
学前端,css与javascript重难点浅析
Jun 11 Javascript
vue打包时去掉所有的console.log
Apr 10 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图片处理函数获取类型及扩展名实例
2014/11/19 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
JavaScript 学习历程和心得分享
2010/12/12 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
jquery使用经验小结
2015/05/20 Javascript
Bootstrap基础学习
2015/06/16 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
js实现复制功能(多种方法集合)
2018/01/06 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
Python中的包和模块实例
2014/11/22 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
浅谈Python中的私有变量
2018/02/28 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
python字典一键多值实例代码分享
2019/06/14 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
python操作链表的示例代码
2020/09/27 Python
python实现磁盘日志清理的示例
2020/11/05 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
幼儿园小班教师个人工作总结
2015/02/06 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
客户答谢会致辞
2015/07/30 职场文书
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS