iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >利用CSS、JavaScript及Ajax实现高效的图片预加载
  • 303
分享到

利用CSS、JavaScript及Ajax实现高效的图片预加载

CSSJavaScriptAjax图片预加载 2022-11-15 23:11:36 303人浏览 安东尼
摘要

方法一:用CSS和JavaScript实现预加载 实现预加载图片有很多方法,包括使用CSS、javascript及两者的各种组合。这些技术可根据不同设计场景设计出相应的解决方案,十分

方法一:用CSS和JavaScript实现预加载

实现预加载图片有很多方法,包括使用CSSjavascript及两者的各种组合。这些技术可根据不同设计场景设计出相应的解决方案,十分高效。
单纯使用CSS,可容易、高效地预加载图片,代码如下:


#preload-01 { background: url(/file/imgs/upload/202211/15/vsgd455v31g.jpg) no-repeat -9999px -9999px; }
#preload-02 { background: url(/file/imgs/upload/202211/15/wldkroxsjsx.jpg) no-repeat -9999px -9999px; }
#preload-03 { background: url(/file/imgs/upload/202211/15/p2t524510qc.jpg) no-repeat -9999px -9999px; }

将这三个ID选择器应用到(X)html元素中,我们便可通过CSS的background属性将图片预加载到屏幕外的背景上。只要这些图片的路径保持不变,当它们在WEB页面的其他地方被调用时,浏览器就会在渲染过程中使用预加载(缓存)的图片。简单、高效,不需要任何JavaScript。
该方法虽然高效,但仍有改进余地。使用该法加载的图片会同页面的其他内容一起加载,增加了页面的整体加载时间。为了解决这个问题,我们增加了一些JavaScript代码,来推迟预加载的时间,直到页面加载完毕。代码如下:

// better image preloading @ <a href="Http://perishablepress.com/press/2009/12/28/3-ways-preload-images-css-javascript-ajax/">http://perishablepress.com/press/2009/12/28/3-ways-preload-images-css-javascript-ajax/</a>
function preloader() {
if (document.getElementById) {
document.getElementById("preload-01").style.background = "url(/file/imgs/upload/202211/15/vsgd455v31g.jpg) no-repeat -9999px -9999px";
document.getElementById("preload-02").style.background = "url(/file/imgs/upload/202211/15/wldkroxsjsx.jpg) no-repeat -9999px -9999px";
document.getElementById("preload-03").style.background = "url(/file/imgs/upload/202211/15/p2t524510qc.jpg) no-repeat -9999px -9999px";
}
}
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(preloader);

在该脚本的第一部分,我们获取使用类选择器的元素,并为其设置了background属性,以预加载不同的图片。
该脚本的第二部分,我们使用addLoadEvent()函数来延迟preloader()函数的加载时间,直到页面加载完毕。
如果JavaScript无法在用户的浏览器中正常运行,会发生什么?很简单,图片不会被预加载,当页面调用图片时,正常显示即可。

方法二:仅使用JavaScript实现预加载

上述方法有时确实很高效,但我们逐渐发现它在实际实现过程中会耗费太多时间。相反,我更喜欢使用纯JavaScript来实现图片的预加载。下面将提供两种这样的预加载方法,它们可以很漂亮地工作于所有现代浏览器之上。

JavaScript代码段1

只需简单编辑、加载所需要图片的路径与名称即可,很容易实现:

<div class="hidden">
<script type="text/javascript">
<!--//--><![CDATA[//><!--
var images = new Array()
function preload() {
for (i = 0; i < preload.arguments.length; i++) {
images[i] = new Image()
images[i].src = preload.arguments[i]
}
}
preload(
"/file/imgs/upload/202211/15/jncapuaa5yo.jpg",
"/file/imgs/upload/202211/15/2nubfxckcq2.jpg",
"/file/imgs/upload/202211/15/vm25atccsyi.jpg"
)
//--><!]]>
</script>
</div>

该方法尤其适用预加载大量的图片。我的画廊网站使用该技术,预加载图片数量达50多张。将该脚本应用到登录页面,只要用户输入登录帐号,大部分画廊图片将被预加载。

JavaScript代码段2

该方法与上面的方法类似,也可以预加载任意数量的图片。将下面的脚本添加入任何Web页中,根据程序指令进行编辑即可。

<div class="hidden">
<script type="text/javascript">
<!--//--><![CDATA[//><!--
if (document.images) {
img1 = new Image();
img2 = new Image();
img3 = new Image();
img1.src = "/file/imgs/upload/202211/15/ohxzg2h3qas.jpg";
img2.src = "/file/imgs/upload/202211/15/3g2uagj4gxo.jpg";
img3.src = "/file/imgs/upload/202211/15/z1vmzxalc30.jpg";
}
//--><!]]>
</script>
</div>

正如所看见,每加载一个图片都需要创建一个变量,如“img1 = new Image();”,及图片源地址声明,如“img3.src = "../path/to/image-003.gif";”。参考该模式,你可根据需要加载任意多的图片。
我们又对该方法进行了改进。将该脚本封装入一个函数中,并使用 addLoadEvent(),延迟预加载时间,直到页面加载完毕。

function preloader() {
if (document.images) {
var img1 = new Image();
var img2 = new Image();
var img3 = new Image();
img1.src = "/file/imgs/upload/202211/15/ohxzg2h3qas.jpg";
img2.src = "/file/imgs/upload/202211/15/3g2uagj4gxo.jpg";
img3.src = "/file/imgs/upload/202211/15/z1vmzxalc30.jpg";
}
}
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(preloader);

方法三:使用Ajax实现预加载

上面所给出的方法似乎不够酷,那现在来看一个使用Ajax实现图片预加载的方法。该方法利用DOM,不仅仅预加载图片,还会预加载CSS、JavaScript等相关的东西。使用Ajax,比直接使用JavaScript,优越之处在于JavaScript和CSS的加载不会影响到当前页面。该方法简洁、高效。

window.onload = function() {
setTimeout(function() {
// XHR to request a JS and a CSS
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://domain.tld/preload.js');
xhr.send('');
xhr = new XMLHttpRequest();
xhr.open('GET', 'http://domain.tld/preload.css');
xhr.send('');
// preload image
new Image().src = "/file/imgs/upload/202211/15/0zuxxbzl1f0.jpg";
}, 1000);
};

上面代码预加载了“preload.js”、“preload.css”和“preload.png”。1000毫秒的超时是为了防止脚本挂起,而导致正常页面出现功能问题。
下面,我们看看如何用JavaScript来实现该加载过程:

window.onload = function() {
setTimeout(function() {
// reference to <head>
var head = document.getElementsByTagName('head')[0];
// a new CSS
var css = document.createElement('link');
css.type = "text/css";
css.rel = "stylesheet";
css.href = "http://domain.tld/preload.css";
// a new JS
var js = document.createElement("script");
js.type = "text/javascript";
js.src = "http://domain.tld/preload.js";
// preload JS and CSS
head.appendChild(css);
head.appendChild(js);
// preload image
new Image().src = "/file/imgs/upload/202211/15/0zuxxbzl1f0.jpg";
}, 1000);
};

这里,我们通过DOM创建三个元素来实现三个文件的预加载。正如上面提到的那样,使用Ajax,加载文件不会应用到加载页面上。从这点上看,Ajax方法优越于JavaScript。

--结束END--

本文标题: 利用CSS、JavaScript及Ajax实现高效的图片预加载

本文链接: https://www.lsjlt.com/news/172864.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用CSS、JavaScript及Ajax实现高效的图片预加载
    方法一:用CSS和JavaScript实现预加载 实现预加载图片有很多方法,包括使用CSS、JavaScript及两者的各种组合。这些技术可根据不同设计场景设计出相应的解决方案,十分...
    99+
    2022-11-15
    CSS JavaScript Ajax 图片预加载
  • javascript实现图片预加载和懒加载
    本文实例为大家分享了javascript实现图片预加载和懒加载的具体代码,供大家参考,具体内容如下 预加载 预加载是预先加载好后面需要用到的资源, 后面使用的时候直接去缓存里取。举个...
    99+
    2024-04-02
  • javascript如何实现图片预加载和懒加载功能
    这篇文章主要介绍“javascript如何实现图片预加载和懒加载功能”,在日常操作中,相信很多人在javascript如何实现图片预加载和懒加载功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”javascr...
    99+
    2023-06-14
  • javascript预加载图片、css、js的方法示例介绍
    预加载的好处可以让网页更快的呈现给用户,缺点就是可能会增加无用的请求(但图片、css、js这些静态文件可以被缓存),如果用户访问的页面里面的css、js、图片被预加载了,用户打开页面...
    99+
    2022-11-15
    javascript 预加载图片
  • JS+CSS实现图片预加载与背景图上中下切图
    图片预加载 为什么使用图片预加载 为什么会考虑使用图片预加载呢?你是否曾有个网站,在那个网站你要滚动你的导航然后有个延迟直到图片被加载完……预加载将在这方...
    99+
    2024-04-02
  • 利用纯css实现图片翻转的效果
    这篇文章将为大家详细讲解有关利用纯css实现图片翻转的效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现效果图如下直接上代码吧1, body部分代码如下: <body> ...
    99+
    2023-06-08
  • 如何利用HTML、CSS实现的图片预览弹出层
    本篇内容主要讲解“如何利用HTML、CSS实现的图片预览弹出层”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何利用HTML、CSS实现的图片预览弹出层”吧! ...
    99+
    2024-04-02
  • 怎么利用CSS实现图片轮播效果
    这篇文章给大家分享的是有关怎么利用CSS实现图片轮播效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。理论基础CSS3 animation 属性和 @keyframes 规则主体思想准备相同大小的多个图片将要展示...
    99+
    2023-06-14
  • css怎么使用高斯模糊的效果逐步加载图片
    本篇内容主要讲解“css怎么使用高斯模糊的效果逐步加载图片”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css怎么使用高斯模糊的效果逐步加载图片”吧!用过 Me...
    99+
    2024-04-02
  • JavaScript利用canvas实现炫酷的碎片切图效果
    目录前言需求分析实现过程坐标系切割绘制切割&渲染动画前言 今天分享一个炫酷的碎片式切图效果,这个其实在自己的之前的博客上有实现过,本人觉得这个效果还是挺炫酷的,这次还是用我们...
    99+
    2022-11-13
    JavaScript canvas碎片切图效果 JavaScript canvas 碎片切图 JavaScript canvas 切图
  • javascript实现上传图片并预览的效果实现代码
    今天用alphaimageloader滤镜的src属就是其中的主角它将使用绝对或相对url地址指定背景图像。假如忽略此参数,滤镜将不会作用。复制代码 代码如下: <!docty...
    99+
    2022-11-21
    上传图片 预览
  • Javascript中如何实现图片的延迟加载
    这篇文章主要介绍Javascript中如何实现图片的延迟加载,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Javascript之图片的延迟加载的实例详解作用:保证页面打开的速度(3s...
    99+
    2024-04-02
  • css中怎么利用filter实现图片透明效果
    css中怎么利用filter实现图片透明效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码如下:<style type='...
    99+
    2024-04-02
  • Android中怎么利用ViewPager实现图片滑动预览效果
    本篇文章给大家分享的是有关Android中怎么利用ViewPager实现图片滑动预览效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。xml代码:<xml ve...
    99+
    2023-05-30
    android viewpager
  • 利用JavaScript实现静态图片局部流动效果
    目录背景效果实现HTML 页面结构CSS 样式JavaScript 方法总结背景 如果你有玩过《王者荣耀》、《阴阳师》 等手游,一定注意到过它的启动动画、皮肤立绘卡片等场景...
    99+
    2022-11-13
    JavaScript 图片局部流动效果 JavaScript 图片流动效果 JavaScript 流动
  • 利用CSS实现图片展示特效的技巧和方法
    利用CSS实现图片展示特效的技巧和方法无论是网页设计还是应用开发,图片展示都是非常常见的需求。为了提升用户体验,我们可以利用CSS来实现一些炫酷的图片展示特效。本文将介绍几种常用的技巧和方法,并提供相应的代码示例,帮助读者快速上手。一、图片...
    99+
    2023-10-24
    CSS动画 图片剪裁 透明度控制
  • 利用CSS实现图片悬浮效果的技巧和方法
    在网页设计中,图片悬浮效果是一种常见且吸引眼球的设计方式。通过悬浮效果,可以让用户在鼠标悬浮在图片上时,出现一些动画效果、文字说明或者其他有趣的交互效果。本文将介绍一些利用CSS实现图片悬浮效果的技巧和方法,并提供具体的代码示例。放大效果通...
    99+
    2023-10-21
    CSS 效果 图片悬浮
  • 利用CSS实现响应式图片轮播效果的教程
    利用CSS实现响应式图片轮播效果的教程随着移动设备的普及和技术的进步,响应式网站设计已成为当今设计趋势之一。在设计过程中,图片轮播是常见的元素之一,它可以有效地向用户展示多张图片的信息。本教程将分享如何使用CSS实现响应式图片轮播效果,并提...
    99+
    2023-11-21
    图片轮播 响应式 CSS
  • 利用CSS实现图片气泡特效的技巧和方法
    在网页设计中,给图片添加特效是提升用户体验的重要手段之一。其中,图片气泡特效可以为图片增添趣味性和互动性,使网页内容更加吸引人。本文将分享一些利用CSS实现图片气泡特效的技巧和方法,并附带具体的代码示例。使用伪类元素创建气泡效果通过使用CS...
    99+
    2023-10-21
    CSS动画 鼠标悬停 图片缩放
  • 利用CSS实现图片遮罩特效的技巧和方法
    在网页设计中,为图片增加一些特效可以提升用户的浏览体验。其中,图片遮罩特效是一种常见且具有吸引力的效果,可以为图片增添一种神秘感和美感。本文将介绍利用CSS实现图片遮罩特效的技巧和方法,并提供具体的代码示例供参考。一、利用CSS的伪元素实现...
    99+
    2023-10-21
    CSS 特效 图片遮罩
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作