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. Javascript 事件对象(六)事件默认行为

    事件默认行为: 阻止默认事件普通写法:return false;屏蔽右键菜单 :  oncontextmenu <!DOCTYPE HTML> <html> <head& ...

  2. Oracle导出表(即DMP文件)的两种方法

    转载:http://blog.csdn.net/lanpy88/article/details/7580691   方法一:利用PL/SQL Developer工具导出: 菜单栏---->Too ...

  3. EMV文档:接收到的ATR不在EMV规定范围,终端需要的操作

    Required terminal behaviour in the event that a terminal receives characters outside the range allow ...

  4. CLR via C# 3rd - 05 - Primitive, Reference, and Value Types

    1. Primitive Types        Any data types the compiler directly supports are called primitive types. ...

  5. Lua IO库详解

    I/O 库提供了两套不同风格的文件处理接口. 第一种风格使用隐式的文件句柄: 它提供设置默认输入文件及默认输出文件的操作, 所有的输入输出操作都针对这些默认文件. 第二种风格使用显式的文件句柄. 当使 ...

  6. javascript下ie7,ie8的Date Bug的解决

    ie9+, chrome firefox opera下 string到Date 使用  new Date("2013-01-01"); 都是ok的. 但在ie7, ie8下 返回N ...

  7. ASP.NET中Cookies的使用

    准备开始写后台代码了,不过刚看到cookies就傻眼了,网上搜集了一些资料,总结了一下,初学者可以看看. 创建COOKIES System.Web.HttpCookie cookie=new Http ...

  8. 使用canvas元素-art方法绘制圆弧

    最近在学习HTML5,发现canvas真的很棒,canvas元素是一种可供绘图的平面,我们用JavaScript对它进行配置和操作.我这里说一下arc方法绘制圆弧,顺便提一下涉及到的基础知识. 首先看 ...

  9. 创建Maven web项目时 出现 web.xml is missing and <failOnMissingWebXml> is set to true错误 pox.xml编译错误

    今天创建一个maven项目 pom.xml出现如下错误: web.xml is missing and <failOnMissingWebXml> is set to true 这是因为你 ...

  10. socket reuse

    int k   =   1;    if( SUCCESS != m_socketServer.setSockOptSocket( SO_REUSEADDR, (char*)&k, sizeo ...