整合常用功能的JS小组件库-v1.0
function Alex() {
//给予video.js的页面滚动到视频元素范围内自动播放/出范围暂停播放-----01
this.video_autoplay = function (box) {
var video_box = box.getElementsByTagName('video')[0];
//能否自动播放
var canAuto = true;
//元素距离顶部高度//上滚此距离元素完全出现
var top = box.offsetTop;
//元素高度
var height = parseFloat((window.getComputedStyle ? window.getComputedStyle(box, null) : null || box.currentStyle).height);
//网页可见区域高度
var _height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
//下滚此距离元素完全出现
var min_scroll_height = top - _height + height;
//下滚超过此距离元素完全消失
var max_scroll_height = top + height;
//上滚此距离元素完全出现
var up_max_height = max_scroll_height - height;
//上滚此距离元素完全消失
var up_min_height = top - _height;
//人为点击之后不再自动播放
box.addEventListener('click', function () {
canAuto = false;
});
//判断是上滚还是下滚
var scroll = function (fn) {
var beforeScrollTop = document.documentElement.scrollTop || document.body.scrollTop,
fn = fn || function () {
};
window.addEventListener("scroll", function () {
var afterScrollTop = document.documentElement.scrollTop || document.body.scrollTop,
delta = afterScrollTop - beforeScrollTop;
if (delta === 0) return false;
fn(delta > 0 ? "down" : "up");
beforeScrollTop = afterScrollTop;
}, false);
}
var video_scroll = function () {
//可以自动播放
scroll(function (direction) {
var _top = document.documentElement.scrollTop || document.body.scrollTop;
if ((direction == 'down') && (_top > min_scroll_height) && canAuto) {
video_box.play();
}
if ((direction == 'down') && (_top > max_scroll_height)) {
video_box.pause();
}
if ((direction == 'up') && (_top < up_max_height) && canAuto) {
video_box.play();
}
if ((direction == 'up') && (_top < up_min_height)) {
video_box.pause();
}
});
}
video_scroll();
};
//元素滚动到一定距离后固定在页面顶部------------------------------02
this.menu_fixed = function (menu_container) {
var _top = menu_container.offsetTop;
var scroll_div = function () {
var top = document.documentElement.scrollTop || document.body.scrollTop;
if (top > _top) {
menu_container.style.position = 'fixed';
menu_container.style.top = '0';
} else if (top < _top) {
menu_container.style.position = 'relative';
menu_container.style.top = '0';
}
}
scroll_div();
}
}
var alex = new Alex();
调用方法
var box = document.querySelector('.index_video');
alex.video_autoplay(box);
整合常用功能的JS小组件库-v1.0的更多相关文章
- struct2json -- C结构体与 JSON 快速互转库V1.0发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/zhutianlong/article/d ...
- 通知:逆天异常库 V1.0版本支持下载了~~
百度网盘:http://pan.baidu.com/s/1bongheJ GitHub:https://github.com/dunitian/LoTDotNet
- 从零开发一款自己的小程序UI组件库(一)
写在前面:有开发过小程序的朋友肯定知道组件化开发的特性,高内聚与低耦合.使用已有的UI组件库,诸如:vantUI-weapp.minUI-weapp等UI组件库的诞生使我们的开发速度大大的加快,丰富的 ...
- 从零开发一款自己的小程序UI组件库(二)
写在前面:从零开发一款自己的小程序UI组件库(一) 上节我们讲到初始化组件库模板.模板文件概述.模板上传npm以及npm包文件下载至本地并运用到项目.这节我们继续,内容主要有基础UI组件库的搭建(bu ...
- vue 和 react 常用包(插件、组件 或 工具)
vue 和 react 都可以使用的包(只是 纯 js 功能的包) 1.qs : https://blog.csdn.net/sansan_7957/article/details/82227040 ...
- 使用自定义验证组件库扩展 Windows 窗体
使用自定义验证组件库扩展 Windows 窗体 1(共 1)对本文的评价是有帮助 - 评价此主题 发布日期 : 8/24/20 ...
- 如何快速为团队打造自己的组件库(上)—— Element 源码架构
文章已收录到 github,欢迎 Watch 和 Star. 简介 详细讲解了 ElementUI 的源码架构,为下一步基于 ElementUI 打造团队自己的组件库打好坚实的基础. 如何快速为团队打 ...
- 开箱即用 yyg-cli(脚手架工具):快速创建 vue3 组件库和vue3 全家桶项目
1 yyg-cli 是什么 yyg-cli 是优雅哥开发的快速创建 vue3 项目的脚手架.在 npm 上发布了两个月,11月1日进行了大升级,发布 1.1.0 版本:支持创建 vue3 全家桶项目和 ...
- [js开源组件开发]localStorage-cache本地存储的缓存管理
localStorage-cache本地存储的缓存管理 距离上次的组件开发有近三个月的时间了,最近一直在做一些杂事,无法静下心来写写代码,也是在学习emberjs,在emberjs中有一个很重要的东西 ...
随机推荐
- BZOJ1222_ 产品加工_KEY
题目传送门 我们设f[i]表示用机器A加工,时间还剩下i时的最优加工时间. 对于每一个时间可以加工的物品,有以下几个选择: 1.用机器A加工 2.用机器B加工 3.A和B一起加工 所以得到方程: f[ ...
- Mysql忘记密码处理办法
找回密码的步骤如下: 1.停止mysql服务器 sudo /opt/lampp/lampp stopmysql 2.使用`--skip-grant-tables' 参数来启动 mysqld sudo ...
- NB-IOT连接移动onenet平台流程
1. 先创建账号,然后创建产品 2. 创建设备,用AT+CGSN和AT+CIMI查询NB-IOT的IMEI和IMSI填写上去. 3. 创建好的设备.
- 通过反编译看Java String及intern内幕--费元星站长
通过反编译看Java String及intern内幕 一.字符串问题 字符串在我们平时的编码工作中其实用的非常多,并且用起来也比较简单,所以很少有人对其做特别深入的研究.倒是面试或者笔试的时候,往 ...
- 基于Kafka的服务端用户行为日志采集
本文来自网易云社区 作者:李勇 背景 随着互联网的不断发展,用户所产生的行为数据被越来越多的网站重视,那么什么是用户行为呢?所谓的用户行为主要由五种元素组成:时间.地点.人物.行为.行为对应的内容.为 ...
- 【廖雪峰老师python教程】——IO编程
同步IO 异步IO 最常见的IO——读写文件 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一 ...
- InnoDB意向锁和插入意向锁
Preface Last night one buddy in tech wechat group asked "what's intention locks of Inno ...
- Qt-网络与通信-UDP网络通讯
用户数据报协议是一种简单的轻量级.不可靠.面向数据.无连接的传出层协议,可以应用于在可靠性不是十分重要的场合,如短消息,广播信息等. 例如一下场合 网络数据大多为短消息 拥有大量客户端 对数据安全性无 ...
- VMware实现控制台功能(VMware Remote Console)
说明: 刚开始一脸懵逼,google了一些资料,发现基本没有能快速落地的,自己做完后梳理了一下发上来供大家参考. 如果帮到你了,请点赞评论关注,以资鼓励,多谢~ 实现VMware控制台功能主要有两种方 ...
- Python-3.6 安装pycrypto 2.6
最近接触公司后台管理系统的开发,其中涉及到加密模块pycrypto. 重点来了!!!!敲黑板!!!! pycrypto在PyCharm中跟其他的模块不一样,pip install pycrypto安装 ...