整合常用功能的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中有一个很重要的东西 ...
随机推荐
- 优步北京B组奖励政策
用户组:优步北京B组(2015年7月20日前激活的部分司机) 更新日期:2015年8月4日 滴滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最 ...
- python字符串格式化符号及转移字符含义
博文出自鱼C论坛文章 http://bbs.fishc.com/thread-39140-1-1.html
- VINS(五)非线性优化与在线标定调整
首先根据最大后验估计(Maximum a posteriori estimation,MAP)构建非线性优化的目标函数. 初始化过程通过线性求解直接会给出一个状态的初值,而非线性优化的过程关键在于求解 ...
- spring-boot、mybatis整合
一.MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 X ...
- typescript语法
先来讲一讲TypeScript出现的背景 前端javascript的编程思想与后端java面向对象的编程思想有很大的不同,微软公司借鉴了coffeescript语言,继承了很多C#和java的编程思想 ...
- 深入解析UUID及其应用(转载)
UUID 编辑 UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Founda ...
- lesson 17 The longest suspension bridge in the world
lesson 17 The longest suspension bridge in the world agreeable adj. 令人愉快的:适合的 = pleasant be located ...
- flume 整合 kafka
flume 整合 kafka: flume:高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统. kafka:分布式的流数据平台. flume 采集业务日志,发送到kafka 一. ...
- post接口_form表单上传
上传文件的本质是浏览器读取本地文件的内容,以二进制数据方式传输到服务端,服务端新建一个文件,将获取到的数据复制到文件中 LR中上传操作可以通过web_submit_data函数实现,支持录制要点:we ...
- 「雅礼集训 2017 Day1」市场 (线段树除法,区间最小,区间查询)
老师说,你们暴力求除法也整不了多少次就归一了,暴力就好了(应该只有log(n)次) 于是暴力啊暴力,结果我归天了. 好吧,在各种题解的摧残下,我终于出了一篇巨好看(chou lou)代码(很多结构体党 ...