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 HTML CSS外部链接

    HTML文件 <!--<html> <head><link rel="stylesheet" type="text/css" ...

  2. 适配布局-ios

    // 系统的约束代码 @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIView *superVi ...

  3. Linux覆盖率一点研究:获取覆盖率数据

     首先,当然哥不介意你鄙视我在网上找的资料研究! 白盒覆盖率是啥东东这个问题大家自己查百度啦!我也不太懂,就知道它不是个东西,就这样开始吧(MT一般是先摸四蹄呢还是先黑金币呢?这是个问题)! 首先:l ...

  4. Entity Framework search sequnce

    sql express, then (LocalDb)\v11.0 (LocalDb)\mssqllocaldb sqllocaldb i  could list all the local db i ...

  5. 用python+selenium从百度获取本地明日的天气信息并根据温度情况设置提醒

    从百度天气获取当地明天的天气情况,如果明天下雨,请发送邮件通知全体同事带伞, 如果明天气温低于10度,请邮件提醒同事注意保暖,如果气温高于30度则提醒同事注意高温. 假设存在发送邮件的方法self.s ...

  6. 理解闭包 js回收机制

    为什么要有回收机制?why? 打个比方,我有一个内存卡,这个内存是8G的,我把文件,视频,音乐,都保存到了这个内存卡,随着我的储存的内容越来越多,这个内存卡已经保存不了了,如果我还想再把其他的文件保存 ...

  7. java常用IO流数据流小结

      类名 常用方法 说明 输入流 InputStream int read(); 只能读字节流,虽然返回值是int,但只有低8位起作用. DataInputStream Type readType() ...

  8. mysql 根据某字段特定值排序

    比如: 表 :user 字段:orders (值为 1,2,3) 要求根据字段  orders 按2 -> 1 -> 3 排序 使用以下语句实现SELECT *FROM userORDER ...

  9. hiho一下18周 RMQ问题再临

    RMQ问题再临 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 终于,小Hi和小Ho踏上了回国的旅程.在飞机上,望着采购来的特产--小Hi陷入了沉思:还记得在上上周他们去 ...

  10. PHP 类中的魔术方法

    定义: PHP类中以两个下画线“__”开头的方法被称为魔术方法. 分类: 例如:构造方法:__construct:析构方法:__destruct:动态重载:__set().__get().__call ...