js 鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层异步加载模式
js用处:在做商城时,首页图片太多,严重影响首页打开速度,所以我们需要用到异步加载楼层。
js名称:鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层模式
js解释:1、用于商城的楼层内容异步加载,滚动条滚动时才加载数据
2、如果当前屏幕上显示了好几个楼层,那么同时执行这几个楼层的异步加载
3、如果滚动条在页面中间,此时刷新页面,刷新成功后,执行当前显示在屏幕上的几个楼层的异步加载,未显示的不加载
4、如果滚动条在页面下面,此时刷新页面,刷新成功后,执行当前显示在屏幕上的几个楼层的异步加载,滚动条向上滚动时才加载上面的楼层
下面上代码:
一、CSS
*{margin:0px;padding:0px;}
body{height:10000px;}
.header{
height: 1000px;
background-color: #0C3;
}
.yb_louceng_1{
background-color: #03F;
height: 640px;
}
.yb_louceng_2{
background-color: #F33;
height: 640px;
}
.yb_louceng_3{
background-color: #03F;
height: 640px;
color: #093;
}
.yb_louceng_4{
background-color: #F0F;
height: 640px;
}
二、js
/**
* js用处:在做商城时,首页图片太多,严重影响首页打开速度,所以我们需要用到异步加载楼层。
* js名称:鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层模式
js解释:1、用于商城的楼层内容异步加载,滚动条滚动时才加载数据
2、如果当前屏幕上显示了好几个楼层,那么同时执行这几个楼层的异步加载
3、如果滚动条在页面中间,此时刷新页面,刷新成功后,执行当前显示在屏幕上的几个楼层的异步加载,未显示的不加载
4、如果滚动条在页面下面,此时刷新页面,刷新成功后,执行当前显示在屏幕上的几个楼层的异步加载,滚动条向上滚动时才加载上面的楼层
* 注意:请引入jquery 如果效果实现不了,请检查版本为1.8.3
* 作者:yb
* 网址:http://www.cnblogs.com/phpyangbo/
*
*/ $(function(){
//载入页面时执行加载
yb_louceng_panduan();
//浏览器滚动时执行加载
$(window).scroll(function(){
yb_louceng_panduan(); });
}); //楼层位置数组
var yb_louceng_weizhi = new Array(); yb_louceng_weizhi[0] = new Array();
yb_louceng_weizhi[0]["start"] = 0;
yb_louceng_weizhi[0]["end"] = 1000;
yb_louceng_weizhi[0]["state"] = false;
yb_louceng_weizhi[1] = new Array();
yb_louceng_weizhi[1]["start"] = 1000;
yb_louceng_weizhi[1]["end"] = 1640;
yb_louceng_weizhi[1]["state"] = false;
yb_louceng_weizhi[2] = new Array();
yb_louceng_weizhi[2]["start"] = 1640;
yb_louceng_weizhi[2]["end"] = 2280;
yb_louceng_weizhi[2]["state"] = false;
yb_louceng_weizhi[3] = new Array();
yb_louceng_weizhi[3]["start"] = 2280;
yb_louceng_weizhi[3]["end"] = 2920;
yb_louceng_weizhi[3]["state"] = false;
yb_louceng_weizhi[4] = new Array();
yb_louceng_weizhi[4]["start"] = 2920;
yb_louceng_weizhi[4]["end"] = 3560;
yb_louceng_weizhi[4]["state"] = false; //楼层判断执行函数
function yb_louceng_panduan(){
var yb_getScrollTop = getScrollTop(); //滚动条在Y轴上的滚动距离
var yb_getWindowHeight = getWindowHeight(); //浏览器窗口高度
var yb_chufa_zuixiao_y = yb_getScrollTop; //触发的最小y值
var yb_chufa_zuida_y = yb_getScrollTop+yb_getWindowHeight; //触发的最大y值 //循环判断
for(var i=0;i<yb_louceng_weizhi.length;i++){ var yb_panduan_left_1 = yb_chufa_zuixiao_y>=yb_louceng_weizhi[i]["start"] && yb_chufa_zuixiao_y<=yb_louceng_weizhi[i]["end"];
var yb_panduan_left_2 = yb_chufa_zuida_y>=yb_louceng_weizhi[i]["start"] && yb_chufa_zuida_y<=yb_louceng_weizhi[i]["end"];
var yb_panduan_left_3 = yb_chufa_zuixiao_y<=yb_louceng_weizhi[i]["start"] && yb_chufa_zuida_y>=yb_louceng_weizhi[i]["end"]; if((yb_panduan_left_1 || yb_panduan_left_2 || yb_panduan_left_3) && yb_louceng_weizhi[i]["state"]==false){
//改变楼层状态
yb_louceng_weizhi[i]["state"] = true;
alert("正在加载第"+i+"个楼层");
//在此处构建ajax请求楼层数据
//处理异步数据的逻辑结构开始
//================================= //=================================
//处理异步数据的逻辑机构完
}
}
} //滚动条在Y轴上的滚动距离
function getScrollTop(){
var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;
if(document.body){
bodyScrollTop = document.body.scrollTop;
}
if(document.documentElement){
documentScrollTop = document.documentElement.scrollTop;
}
scrollTop = (bodyScrollTop - documentScrollTop > 0) ? bodyScrollTop : documentScrollTop;
return scrollTop;
} //文档的总高度
function getScrollHeight(){
var scrollHeight = 0, bodyScrollHeight = 0, documentScrollHeight = 0;
if(document.body){
bodyScrollHeight = document.body.scrollHeight;
}
if(document.documentElement){
documentScrollHeight = document.documentElement.scrollHeight;
}
scrollHeight = (bodyScrollHeight - documentScrollHeight > 0) ? bodyScrollHeight : documentScrollHeight;
return scrollHeight;
} //浏览器视口的高度
function getWindowHeight(){
var windowHeight = 0;
if(document.compatMode == "CSS1Compat"){
windowHeight = document.documentElement.clientHeight;
}else{
windowHeight = document.body.clientHeight;
}
return windowHeight;
}
三、HTML
<div class="header">头部内容</div> <div class="yb_louceng_1">楼层1内容</div>
<div class="yb_louceng_2">楼层2内容</div>
<div class="yb_louceng_3">楼层3内容</div>
<div class="yb_louceng_4">楼层4内容</div>
js 鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层异步加载模式的更多相关文章
- JS鼠标滚动插件scrollpath使用介绍
JS鼠标滚动插件scrollpath:在这个插件中首先要引人的JS是jQuery,因为后面的JS都是基于它的.再者需要引入的是jquery.scrollpath.js.scrollpath.css还有 ...
- [WP8.1UI控件编程]Windows Phone大数据量网络图片列表的异步加载和内存优化
11.2.4 大数据量网络图片列表的异步加载和内存优化 虚拟化技术可以让Windows Phone上的大数据量列表不必担心会一次性加载所有的数据,保证了UI的流程性.对于虚拟化的技术,我们不仅仅只是依 ...
- js 窗口滚动到一定高度时加载数据
<script type="text/javascript"> //当窗口滚动到一定高度时 某块页面开始加载数据 window.onload = function() ...
- JS鼠标滚动事件
-----------------------------//鼠标滚动事件以下是JS临听鼠标滚动事件 并且还考虑到了各浏览器的兼容----------------------------------- ...
- scrollify.js 鼠标滚动
在线实例 实例演示 使用方法 <! doctype html> <html> <head> <script> $(function() { $.scro ...
- js 鼠标滚动 禁用 启用
function disabledMouseWheel() { var div = document.getElementById('divid'); if (div.addEventListener ...
- 鼠标点击输入框文字消失 value placeholder 以及JQ实现效果 (仿京东的输入框效果)
鼠标点击输入框文字消失 value实现方法 placeholder实现方法 以及JQ实现placeholder效果 <input type="text" value ...
- 22 Flutter仿京东商城项目 inappbrowser 加载商品详情、保持页面状态、以及实现属性筛选业务逻辑
加群452892873 下载对应21可文件,运行方法,建好项目,直接替换lib目录,在往pubspec.yaml添加上一下扩展. cupertino_icons: ^0.1.2 flutter_swi ...
- Vue.js 子组件的异步加载及其生命周期控制
前端开发社区的繁荣,造就了很多优秀的基于 MVVM 设计模式的框架,而组件化开发思想也越来越深入人心.这其中不得不提到 Vue.js 这个专注于 VM 层的框架. 本文主要对 Vue.js 组件化开发 ...
随机推荐
- Spring Cloud集成相关优质项目推荐
Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储.Git以及Subversion. Spring Cloud Bus 事件.消 ...
- iOS 线性滚动
在这里,给大家带来简单的滚动实现,首先看一下实现效果. 通过观察不难发现,有很多地方并不是那么容易想出来的,对于篇随笔,感兴趣可以查查相关资料,我就不尽行过多说明,(主要是开考文字,不好说明
- WIN32服务程序(二):卸载服务
卸载服务的过程是这样的,用OpenSCManager打开SCM,使用OpenService打开准备卸载的服务,通过QueryServiceStatus查询该服务的状态是否停止,如果否,则先停止该服务C ...
- PAT (Advanced Level) Practise:1002. A+B for Polynomials
[题目链接] This time, you are supposed to find A+B where A and B are two polynomials. Input Each input f ...
- JDBC连接数据库(PreparedStatement)
PreparedStatement是在数据库端防止SQL注入漏洞的SQL方法这里演示了一些基本使用方法同样使用Oracle数据库,之前已经手动建立了一张t_account表数据库代码参见上一篇< ...
- struts2 数据校验
通过struts2中延续自xwork框架的validation.xml配置方式进行数据校验,因struts2 下存在三种请求参数的注入方式,固按照不同注入方式对validation.xml的配置进行总 ...
- GitHub的用法:到GitHub上部署项目
先提供两个较好的Git教程: 1. 如何在github部署项目: lhttp://jingyan.baidu.com/article/656db918fbf70ce381249c15.html 2. ...
- hdu2348题解
又恬不知耻的开始写题解了,暑假到了,QAQ然而想我这样的弱逼是没有暑假的sad,还是老老实实刷题吧. 题目大意:给一个小车的宽度和长度和两条道路的宽度,判断小车能否通过. 思路:可以先看下面的图,我们 ...
- CodeForces 239 Long Path
每个房间有两个单向出口,就是只能进不能出,这个开始理解错了. 进入房间的时候,首先要在屋顶画一个叉叉,如果画完之后叉叉的个数是奇数的话:那么就从第二条出口出去,会到达p[ i ]房间:如果叉叉的个数是 ...
- oracle-trasnlate函数
1.translate函数语法 TRANSLATE(string,from_str,to_str) 2.作用有两个: 1)可以替换string中的对应字符,from_str和to_str会做字符的一一 ...