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 相关文章推荐
IE7提供XMLHttpRequest对象为兼容
Mar 08 Javascript
javascript中创建对象的三种常用方法
Dec 30 Javascript
浅析用prototype定义自己的方法
Nov 14 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
Mar 04 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
Mar 01 Javascript
javascript闭包概念简单解析(推荐)
Jun 03 Javascript
node.js cookie-parser 中间件介绍
Jun 06 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
Sep 27 Javascript
JavaScript实现获取远程的html到当前页面中
Mar 26 Javascript
JS实现的四级密码强度检测功能示例
May 11 Javascript
React优化子组件render的使用
May 12 Javascript
js实现星星海特效的示例
Sep 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按字符串长度分割成数组代码
2015/05/17 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
2016/09/14 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
基于nodejs res.end和res.send的区别
2018/05/14 NodeJs
详解vue的双向绑定原理及实现
2019/05/05 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
python和C语言混合编程实例
2014/06/04 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
wxpython绘制圆角窗体
2019/11/18 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
python3代码中实现加法重载的实例
2020/12/03 Python
CSS3解决移动页面上点击链接触发色块的问题
2016/06/03 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
EJB与JAVA BEAN的区别
2016/08/29 面试题
农药学硕士毕业生自荐信
2013/09/25 职场文书
交通安全演讲稿
2014/01/07 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
保险公司晨会主持词
2014/03/22 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
小学生感恩演讲稿
2014/04/25 职场文书
民事起诉书范本
2015/05/19 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
MySQL注入基础练习
2021/05/30 MySQL