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 鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层异步加载模式的更多相关文章

  1. JS鼠标滚动插件scrollpath使用介绍

    JS鼠标滚动插件scrollpath:在这个插件中首先要引人的JS是jQuery,因为后面的JS都是基于它的.再者需要引入的是jquery.scrollpath.js.scrollpath.css还有 ...

  2. [WP8.1UI控件编程]Windows Phone大数据量网络图片列表的异步加载和内存优化

    11.2.4 大数据量网络图片列表的异步加载和内存优化 虚拟化技术可以让Windows Phone上的大数据量列表不必担心会一次性加载所有的数据,保证了UI的流程性.对于虚拟化的技术,我们不仅仅只是依 ...

  3. js 窗口滚动到一定高度时加载数据

    <script type="text/javascript"> //当窗口滚动到一定高度时 某块页面开始加载数据 window.onload = function() ...

  4. JS鼠标滚动事件

    -----------------------------//鼠标滚动事件以下是JS临听鼠标滚动事件 并且还考虑到了各浏览器的兼容----------------------------------- ...

  5. scrollify.js 鼠标滚动

    在线实例 实例演示 使用方法 <! doctype html> <html> <head> <script> $(function() { $.scro ...

  6. js 鼠标滚动 禁用 启用

    function disabledMouseWheel() { var div = document.getElementById('divid'); if (div.addEventListener ...

  7. 鼠标点击输入框文字消失 value placeholder 以及JQ实现效果 (仿京东的输入框效果)

    鼠标点击输入框文字消失 value实现方法  placeholder实现方法     以及JQ实现placeholder效果 <input type="text" value ...

  8. 22 Flutter仿京东商城项目 inappbrowser 加载商品详情、保持页面状态、以及实现属性筛选业务逻辑

    加群452892873 下载对应21可文件,运行方法,建好项目,直接替换lib目录,在往pubspec.yaml添加上一下扩展. cupertino_icons: ^0.1.2 flutter_swi ...

  9. Vue.js 子组件的异步加载及其生命周期控制

    前端开发社区的繁荣,造就了很多优秀的基于 MVVM 设计模式的框架,而组件化开发思想也越来越深入人心.这其中不得不提到 Vue.js 这个专注于 VM 层的框架. 本文主要对 Vue.js 组件化开发 ...

随机推荐

  1. Bool 类型变量的使用

    定义一个bool类型的变量,默认为FALSE的 private bool BHaveBeenTip=false; private void label5_Click(object sender, Ev ...

  2. PS与TOP详解

    一:ps  ps -l 查看属于自己这次登录的PID与相关信息列出来(只与自己的bash有关) F:代表这个进程标志(process flags),说明这个进程的权限,常见号码有: 若为4表示此进程的 ...

  3. input点击链接另一个页面,各种操作

    1.链接到某页<input type="button" name="Submit" value="确 定" class="b ...

  4. OpenGL阴影,Shadow Mapping(附源程序)

    实验平台:Win7,VS2010 先上结果截图(文章最后下载程序,解压后直接运行BIN文件夹下的EXE程序): 本文描述图形学的两个最常用的阴影技术之一,Shadow Mapping方法(另一种是Sh ...

  5. 安卓微信浏览器中location.href失效的问题

    在移动web中,经常会使用window.location.href去跳转页面,这个方法在绝大多数浏览器中都不会存在问题,但是在安卓手机的微信自带浏览器中,会出现一个奇怪的bug. window.loc ...

  6. mac下获取应用签名

    查看md5和SHA1: universalbroker.jks为签名文件 keytool -list -v -keystore universalbroker.jks 微信分享和登录平台需要去掉冒号的 ...

  7. iOS AppStore提交错误收集

    ERROR ITMS-90535: "Unexpected CFBundleExecutable Key. The bundle at 'Payload/创可贴.app/TencentOpe ...

  8. 代理委托和block

    delegate 委托是协议的一种,顾名思义,就是委托他人帮自己去做事.委托是给一个对象提供机会对另一个对象中的变化做出反应或者影响另一个对象的行为.其基本思想是:两个对象协同解决问题,并且打算在广泛 ...

  9. oracle删除用户及表空间,导入用户和数据

    drop user xxx cascade; drop tablespace xxx including contents and datafiles; create tablespace xxx d ...

  10. create dll project based on the existing project

    Today, I have to create a dll project(called my.sln), the dllmain.cpp/.h/ is already in another proj ...