思考

1、如果窗口resize了

2、如果节点加入重复了

3、怎样判断元素是在视窗范围内*

1、如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible实现

滚动条滚动距离+可视窗口高度>元素到页面顶部的距离就说明元素出现在可视范围内了。

function isVisible($node) {

var windowHeight = $(window).height(),

scrollTop = $(window).scrollTop(),

offsetTop = $node.offset().top,

nodeHeight = $node.height();

if (windowHeight+scrollTop>offsetTop && scrollTop

return true;

}else{

return false;

}

}

2、当窗口滚动时,判断一个元素是不是出现在窗口可视范围。每次出现都在控制台打印 true 。用代码实现

Document

body{

font: 20px/1.5 Helvetica, arial, "Microsoft Yahei", "微软雅黑", STXihei, "华文细黑", sans-serif;

background: #FF9279;

padding: 30px;

height: 2500px;

}

#hello{

position: absolute;

top: 1500px;

left: 40%;

padding: 50px;

border: 2px solid #FF0500;

background: #0096CC;

}

hello

$(window).on('scroll',function result(){

if(isVisible($('#hello'))){

console.log(true);

}

else{

console.log(false);

}

})

function isVisible($node){

var windowHeight = $(window).height(),

scrollTop = $(window).scrollTop(),

offsetTop = $node.offset().top,

nodeHeight = $node.height();

if (windowHeight+scrollTop>offsetTop && scrollTop

return true;

}else{

return false;

}

}

3、当窗口滚动时,判断一个元素是不是出现在窗口可视范围。在元素第一次出现时在控制台打印 true,以后再次出现不做任何处理。用代码实现

Document

body{

font: 20px/1.5 Helvetica, arial, "Microsoft Yahei", "微软雅黑", STXihei, "华文细黑", sans-serif;

background: #FF9279;

padding: 30px;

height: 2500px;

}

#hello{

position: absolute;

top: 1500px;

left: 40%;

padding: 50px;

border: 2px solid #FF0500;

background: #0096CC;

}

hello

function result(){

if($('#hello').not('.show').length === 1 && isVisible($('#hello'))){

console.log(true);

$('#hello').addClass('show');

}

else if(!isVisible($('#hello'))){

console.log(false);

}

}

$(window).on('scroll',result);

function isVisible($node){

var windowHeight = $(window).height(),

scrollTop = $(window).scrollTop(),

offsetTop = $node.offset().top,

nodeHeight = $node.height();

if (windowHeight+scrollTop>offsetTop && scrollTop

return true;

}else{

return false;

}

}

4、图片懒加载的原理是什么?

为什么要懒加载(延迟)?

对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载, 等到滚动到可视区域后再去加载。

这样子对于页面加载性能上会有很大的提升,也提高了用户体验。

原理:

为了整体网站的性能考虑,是一种延时加载图片的方法。把图片真实的URL 放在data-src的值中,当图片进入可视区域的瞬间把data-src赋给src。

注:图片要指定宽高

![](default.jpg)

当载入页面时,先把可视区域内的img标签的data-src属性值赋给src,然后监听滚动事件,把用户即将看到的图片加载。这样便实现了懒加载。

5、实现视频中的图片懒加载效果

6、实现视频中的新闻懒加载效果

附:clientHeight/scrollHeight/offsetHeight的区别?

QQ图片20170216040157.png

jquery 页面滚动条回到顶部_jquery懒加载、回到顶部相关推荐

  1. 服务器图片加载慢_页面提高性能利器_懒加载

    哈喽,艾瑞巴蒂,现在搜狗商城产品需求已经趋于稳定,已经开始逐步的着手进行页面的性能提升工作.这不最近小编正在进行"页面懒加载需求"的功能测试.小编第一次听说这个名词,让我们一起了解 ...

  2. jQuery页面滚动图片等元素动态加载实现

    一.关于滚动显屏加载 常常会有这样子的页面,内容很丰富,页面很长,图片较多.比如说光棍节很疯狂的淘宝商城页面. 或者是前段时间写血本买了个高档耳机的京东商城页面,或者是新浪微博之类. 这些页面图片数量 ...

  3. vue-router 的总结(导航守卫、组件过渡、组件间参数传输、懒加载)

    在实际项目中很多地方需要router的运用,下面从实践运用的例子总结一下需要引用router的地方 导航守卫:当用户没有登录时,限制用户不能访问某些页面 组件过渡,当页面中切换会出现动态的切换效果 组 ...

  4. 微信小程序优化:如何实现图片懒加载?

    前言 当我们在使用微信小程序浏览图片时,不可避免地会遇到加载缓慢的情况.这不仅会影响用户体验,还会耗费用户的流量.那么,有没有一种方法可以让图片在用户需要时再进行加载,从而提升用户体验和减少流量消耗呢 ...

  5. jquery 当页面图片加载之后_图片的懒加载和预加载

    一.懒加载 [1.1]什么是懒加载? 懒加载也就是延迟加载,指的是在长网页中延迟加载图像,是一种很好优化网页性能的方式.当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张大小为1 ...

  6. jQuery图片懒加载示例(滚动函数再加载)

    图片懒加载可以极大的减轻服务器请求的负担,如果没有做这样的操作,一个页面很多图片同时请求,就会渲染慢,影响用户体验! 原理其实很简单,就是滚动条拉下来显示的时候再加载显示出真实的图片,在不显示的区域的 ...

  7. JQuery实现网页图片懒加载

    使用img标签加载图片,在网页上显示图片,这里就简单的设置一下样式了,主要目的是展示图片的不同加载方式. 1.普通实现方式 普通的实现方式就是不做任何处理,需要使用到图片时就去加载图片,这些图片一般存 ...

  8. Java对图片懒加载_[Java教程]JQuery实现图片懒加载_星空网

    JQuery实现图片懒加载 2018-08-16 0 懒加载的原因: 对于图片过多的场景,为了提高页面的加载速度,降低服务器的负载,增强用户体验,我们对还没出现在视野的图片先不加载,当元素出现在我们视 ...

  9. html页面预加载图片不出来,页面图片预加载与懒加载策略

    在图片的加载策略之前,我们先来了解下html网页中,图片的不同位置的图片分别是在什么时候发起图片资源请求的 img 标签 img标签会在html渲染解析到的时候,如果解析到img src值,则浏览器会 ...

最新文章

  1. NVIDIA深度学习Tensor Core性能解析(上)
  2. 复习计算机网络基础 day7--网络层
  3. 进程间通信——共享内存(CreateFileMapping+MapViewOfFile)
  4. 题目1:学生成绩档案管理系统(代码实现)
  5. 二叉树的右视图—leetcode199
  6. 《HTML5和JavaScript Web应用开发》——第 2 章 移动Web 2.1移动优先
  7. 边缘AI研发落地生态挑战调研报告发布
  8. TensorFlow.js 来了!浏览器上线机器学习功能
  9. 文末福利 | 学习如何构建行业知识图谱(以医疗行业为例)
  10. hive 如何将数组转成字符串_HIve字符串函数
  11. 2021牛客练习赛90
  12. 新硬盘装机出现Disk Read Error解决方案
  13. 《SolidWorks 2014中文版机械设计从入门到精通》——第 1 章 认识SolidWorks 1.1 SolidWorks概述...
  14. 最简单最明白的关于“事件”和“委托”的例子说明
  15. Linux 浏览器访问PHP显示源码
  16. python基于SVM的疫情评论情感数据分析
  17. aab取A abb取B php,小学语文词语积累: AABC、ABCC、AABB、ABAB、ABAC、AAB、ABB七种形式,......
  18. VB6.0开发的计算机串口通讯程序1
  19. gitalk 未找到相关的Issues进行评论解决方法
  20. 高数【积分-定积分】--猴博士爱讲课

热门文章

  1. 【Python】pyinstaller安装失败的解决办法
  2. 思考一下http.ListenAndServe + echo+gorm+xorm的可行性?
  3. Git Stash解释:如何在Git中临时存储本地更改
  4. freeCodeCamp认证
  5. 卷积神经网络学习指南_卷积神经网络的直观指南
  6. 种子接近,随机数也接近吗_接近代码,接近爸爸
  7. 关于《应用STATA做统计分析(原书第8版)》一书中`chart()‘语句问题
  8. android项目实战博学谷源码_阿里爆款SpringBoot项目实战PDF+源码+视频分享
  9. Stateflow历史节点的使用
  10. Python数据分析之全球人口数据