JS库之Waypoints的用法详解


Posted in Javascript onSeptember 13, 2017

一款用于捕获各种滚动事件的插件?Waypoints。同时Waypoints还支持固定元素和无限滚动的功能,功力十分强大。

一、最简易的使用

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>waypoints的最简单使用</title>
  <!-- 定义css样式 -->
  <style>
    *{
      padding: 0;
      margin: 0;
    }
    #example-basic{
      height: 500px;
      text-align: center;
    }
  </style>
  <!-- 引入js文件 -->
  <script src="js/jquery-3.0.0.min.js"></script>
  <script src="js/jquery.waypoints.js"></script>
  <script src="js/jquery-ui.min.js"></script>
  <!-- 启动waypoints -->
  <script>
  $(function () {
    $(‘#example-basic‘).waypoint(function() { 
      console.log("hi,example-basic,你的顶部碰到了浏览器窗口的顶部!");//测试打开web调试器,看控制台信息
    });
  });
  //注:无论是鼠标向上或向下只要该元素的顶部碰到浏览器的顶部都会触发waypoints事件
  </script>
</head>
<body>
  <div style="background:#ccc;height:1800px;">one div</div>
  <div id="example-basic">example-basic.</div>
  <div style="background:#ccc;height:1800px;">one div</div>
</html>

二、能检测鼠标滚动方向的基本应用

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>检测鼠标滚动方向</title>
  <style>
    *{
      padding: 0;
      margin: 0;
    }
    #example-basic{
      height: 500px;
      text-align: center;
    }
    .in{
      font-size: 36px;
      color: #ff0;
      background:red;
      transition:all 0.5s;
    }
  </style>
  <script src="js/jquery-3.0.0.min.js"></script>
  <script src="js/jquery.waypoints.js"></script>
  <script src="js/jquery-ui.min.js"></script>
  <script>
  $(function () {
    $(‘#example-basic‘).waypoint(
      function(direction){ 
        if(direction=="down"){
          $(‘#example-basic‘).addClass("in");
          $(‘#example-basic‘).html("你在向下滚动!")
        }else{
          $(‘#example-basic‘).removeClass("in");
          $(‘#example-basic‘).html("你在向上滚动!")
        }
      },//第1个参数为waypoints事件响应时所执行的代码,是一个匿名函数即可
      {
        offset:‘50%‘
      }//第2个参数为偏移量,本例即该div到窗口高度一半时触发
      );
  });
  </script>
</head>
<body>
  <div style="background:#ccc;height:1800px;">one div</div>
  <div id="example-basic">example-basic.</div>
  <div style="background:#ccc;height:1800px;">one div</div>
</html>

三、鼠标滚动加动画效果的应用

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>加下动画效果的</title>
  <style>
    *{
      padding: 0;
      margin: 0;
    }
    div{
      background: #eee;
    }
    .banner{
      width: 1100px;
      margin: 0 auto;
    }
    .title{
      height: 100px;
      background: #9f9;
    }
    .lt{
      position: relative;
      height: 400px;
      border:1px dotted #999;
    }
    .lt_left{
      position: absolute;
      width: 500px;
      height: 300px;
      left: -20%;
      top: 0;
      margin-left: -550px;
      background: #f99;
    }
    .lt_right{
      position: absolute;
      width: 500px;
      height: 300px;
      left: 120%;
      top: 0;
      margin-left: 50px;
      background: #99f;
    }
  </style>
  <script src="js/jquery-3.0.0.min.js"></script>
  <script src="js/jquery.waypoints.js"></script>
  <script src="js/jquery-ui.min.js"></script>
  <script>
  $(function () {
    //获取运动的盒子
    var boxElemets = $(‘.boxaction‘);
    $.each(boxElemets, function() {
      $(this).attr(‘init‘, ‘false‘);
    }); 
    //判断是否出现在浏览器界面里面!
    function isScrolledIntoView(elem) { 
      var docViewTop = $(window).scrollTop();
      var docViewBottom = docViewTop + $(window).height();
      var elemTop = $(elem).offset().top;
      if (elemTop + 50 < docViewBottom) {
        return true
      } else {
        return false
      }
    }
    //定义动画
    function animateInit() {
      $.each(boxElemets, function() {
        if ($(this).attr(‘init‘) == ‘false‘ && isScrolledIntoView($(this))) { //没有显示过且刚出现在浏览器界面
          $(this).attr(‘init‘, ‘true‘);
          $(this).animate({
            ‘left‘: ‘50%‘
          }, 1000, ‘easeOutCubic‘);
        }
      });
    }
    animateInit(); //先执行一次animateInit
    $(window).scroll(function() { //滑动执行animateInit
      animateInit();
    });
  })
  </script>
</head>
<body>
  <div style="background:#ccc;height:1800px;text-align:center;">top div</div>
  <div class="banner">
    <div class="title">这是标题</div>
    <div class="lt">
      <div class="lt_left boxaction">这是左边盒子</div>
      <div class="lt_right boxaction">这是右边盒子</div>
    </div>
  </div>
</body>
</html>

总结

以上所述是小编给大家介绍的JS库之Waypoints的用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery 表单取值赋值的一些基本操作
Oct 11 Javascript
jQuery UI-Draggable 参数集合
Jan 10 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
Jan 12 Javascript
javascript针对DOM的应用分析(二)
Apr 15 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
Jul 09 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
Feb 12 Javascript
JS定义网页表单提交(submit)的方法
Mar 20 Javascript
Bootstrap3下拉菜单的实现
Feb 22 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
Apr 20 Javascript
实例解析Vue.js下载方式及基本概念
May 11 Javascript
element中el-container容器与div布局区分详解
May 13 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
Oct 29 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
Sep 13 #Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
Sep 13 #Javascript
基于vue的短信验证码倒计时demo
Sep 13 #Javascript
BootStrap数据表格实例代码
Sep 13 #Javascript
使用Fullpage插件快速开发整屏翻页的页面
Sep 13 #Javascript
Angular CLI 安装和使用教程
Sep 13 #Javascript
JS库之Three.js 简易入门教程(详解之一)
Sep 13 #Javascript
You might like
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
javascript中对对层的控制
2006/12/29 Javascript
javascript instanceof,typeof的区别
2010/03/24 Javascript
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
使用socket.io实现简单聊天室案例
2018/01/02 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
Python实现获取某天是某个月中的第几周
2015/02/11 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
证婚人经典证婚词
2014/01/09 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
教师节简报
2015/07/20 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
Python turtle实现贪吃蛇游戏
2021/06/18 Python