刚刚改进了一下某个页面的图片lazyload功能。
原先是用jquery的lazyload插件的标准方式做的。有一个缺点是脚本不开启时图片都不显示了。
解决方法也不难,就是同时插一个noscript标签。lazyload插件官网给出的解决方案也是如此。
<img class="lazy" src="img/grey.gif" data-original="img/example.jpg" width="640" heigh="480">
<noscript><img src="img/example.jpg" width="640" heigh="480"></noscript>
不过这个方式带来双份的代码,且还要额外的样式表切换(避免无脚本时也出现用于有脚本时的占位图片)。
其实脚本本来就可以做任何事情,我们完全可以直接提取noscript里的部分。以下是代码示例
1. 模板部分(Jade):
span.thumb
if (imgSrc)
if index >= 10
noscript: img(src=imgSrc, alt='')
else
img(src=imgSrc, alt='')
else
img(src='default.png', alt='')
注:暂时设定了前10项不用lazyload。
2. 脚本部分:
script(src="jquery.lazyload.min.js")
script
$(function(){
var imgs = $('span.thumb:has(noscript:contains(img))')
$(window).on('scroll', function(evt){
var showImgs = imgs.filter(':in-viewport')
showImgs.html(function(){ return $(this).find('noscript').text() })
imgs = imgs.not(showImgs)
})
})
注:
:has(selector)是jQuery支持的伪类,表示子代元素必须匹配指定selector。
:contains(text)也是jQuery支持的伪类,表示元素包含指定的文本。因为noscript里的部分被作为文本节点,所以这里其实是比较随意的,比如<noscript>sex img</noscript>也会匹配。
:in-viewport是lazyload插件扩展的伪类,表示元素是否处于窗口可见区域。
当然以上的方式的缺点就是无法使用lazyload插件的标准方式和其他功能(比如渐现),但这足以作为一个PoC,我有空完善下再给lazyload作者发个pull request(或者哪位读者愿意做这个事情也很好啊)。
分享到:
相关推荐
2. **事件监听**:可能由于JQuery.LazyLoad监听滚动事件的方式与浏览器的滚动机制不完全兼容,导致图片未能在正确的时间点加载。 3. **CSS和布局问题**:页面的CSS样式或布局设置可能会影响元素的可见性判断,使得...
**jQuery Lazyload 图片加载技术详解** 在网页设计中,图片是重要的元素之一,但大量图片的预加载可能会拖慢页面的加载速度,影响用户体验。为了解决这一问题,jQuery 提供了一个插件——jQuery Lazyload,它允许...
**jQuery LazyLoad 图片懒加载实例** 在网页设计中,图片加载是影响页面性能的关键因素。当页面包含大量图片时,一次性加载所有图片可能会导致页面加载速度变慢,用户体验下降。为了解决这一问题,我们可以使用`...
为了解决fancybox与lazyload的兼容性问题,需要修改lazyload的JavaScript代码逻辑,确保在替换图片`src`属性的同时更新fancybox的`href`属性。具体修改方法如下: ```javascript $("<img/>") .bind("load", ...
jQuery.lazyload 是一个非常流行的 jQuery 插件,专门用于实现图片延迟加载功能。这个插件通过监听滚动事件来判断图片是否进入视口,一旦发现图片进入可视区域,它就会替换占位符,加载真实的图片资源。jQuery.lazy...
jQuery_lazyload是一个非常实用的JavaScript库,用于优化网页性能,特别是在处理大量图片或者内容时。这个插件的主要目的是延迟加载,即在用户滚动到页面的特定部分时才加载那些可视区域以外的内容,从而减少初次...
8. **插件使用**:"lazyload"插件的具体使用方法通常包括引入jQuery库和插件文件,然后通过jQuery选择器选中需要懒加载的图片元素,调用插件方法初始化设置。 在提供的压缩包文件中,"lazyload"可能是实现上述功能...
标题中的“lazyload.js演示页面”表明这是一个关于延迟加载技术的示例,主要使用了名为“lazyload.js”的JavaScript库。延迟加载,或称为懒加载,是一种优化网页性能的策略,它只在用户滚动到视口附近的图片或内容时...
《jQuery LazyLoad 图片预加载技术详解》 在网页设计中,图片的加载速度往往直接影响着用户体验。当页面中包含大量图片时,如果一次性全部加载,可能会导致页面加载时间过长,用户需要等待,这无疑降低了网站的可用...
jQuery LazyLoad插件是一个广泛使用的解决方案,它允许图片、iframe等元素在进入浏览器视口时才开始加载,从而显著减少了初次页面加载的时间。本文将详细介绍jQuery LazyLoad 2.x版本的API使用及实践应用。 一、...
3. **加载图片**:如果图片完全或部分位于视口中,`lazyload.js`会替换图片的`src`属性,加载实际的图片资源。 ### 使用`lazyload.js` 1. **引入库文件**:首先需要在HTML文件中引入`lazyload.js`。通常,你可以...
4. **适应性强**:jQuery.Lazyload.js兼容各种浏览器,包括较老版本的IE,这使得它能够在广泛的用户群体中保持良好的性能。 5. **易于集成和定制**:作为基于jQuery的插件,jQuery.Lazyload.js拥有丰富的API和配置...
资源包内不仅提供了核心的lazyload.js脚本,还提供了一个演示示例(Demo),帮助开发者理解如何正确地使用这个插件。 **标签解读:** - **懒加载**:这是一种网页优化策略,只在需要时加载资源,如图片、视频等,...
`lazyload.js`是一个轻量级、高性能的JavaScript库,专门用于实现图片和其他元素的延迟加载。它具有以下特点: - **简单易用**:只需几行代码即可集成到项目中。 - **兼容性好**:支持所有现代浏览器,包括IE9及...
总之,Magento LazyLoad插件是提升Magento店铺性能的有效工具,通过智能管理图片加载,为用户带来流畅的浏览体验,同时也有助于网站的SEO优化。正确安装和配置该插件,可以为电商网站的运营带来显著的积极影响。
描述中提到的"应用lazyload.js 插件实现图片懒加载",意味着这个项目的核心是通过`lazyload.js`来处理网页上的图片加载。在网页加载时,非首屏的图片不会立即下载,而是等待用户滚动到图片所在位置时才开始加载。...
5. **兼容性**:jQuery.lazyload 1.7.2版本应与大部分现代浏览器兼容,包括IE8及更高版本,这得益于其基于jQuery的构建,jQuery自身已经很好地处理了跨浏览器的问题。 6. **性能优化**:此插件使用节流和防抖技术来...
jQuery LazyLoad 实现了图片的延时加载(也称为懒加载),即只有当图片进入用户可视区域时,才会开始加载,这样可以显著减少页面初次加载时的流量,并提高页面加载速度。 **一、jQuery LazyLoad 基本原理** 1. **...
**jQuery LazyLoad 插件详解:实现图片延迟加载** 在网页设计中,为了提升用户体验,减少页面初次加载的时间,一种常见的优化策略是采用图片延迟加载(Image Lazy Load)技术。`jQuery LazyLoad` 是一个非常实用的 ...