JS实现图片预加载之无序预加载功能代码
发布时间 - 2026-01-11 01:06:03 点击率:次图片预加载之无序预加载的效果图如下所示,如果大家感觉不错,请参考实现代码。
具体代码如下所示:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>PreLoading</title>
<style>
*{margin:0; padding:0; border:none; outline:0; text-decoration:none;}
html,body,.box{width:100%; height:100%;}
.box{display:none;}
#img{width:90%; height:90%; margin:2vh auto 0; display:block; box-shadow:0 0 10px gray;}
.box .btns{width:140px; height:40px; display:block; margin:20px auto;}
.box .btns .btn{width:60px; height:40px; display:block; border:1px gray solid; background-color:#ccc; text-align:center; line-height:40px; float:left;}
.box .btns .btn:nth-of-type(2){margin-left:16px;}
.load{width:100%; height:100%; display:block; font-size:60px; font-family:"微软雅黑"; color:#ccc; text-align:center; line-height:100vh; position:fixed;}
</style>
</head>
<body>
<div class="box">
<img id="img" src="" alt="pic">
<p class="btns"><a href="javascript:" rel="external nofollow" rel="external nofollow" class="btn">prev</a><a href="javascript:" rel="external nofollow" rel="external nofollow" class="btn">next</a></p>
</div>
<p class="load">0%</p>
<script type="text/javascript">
var imgs = ['http://down.699pic.com/photo/50036/7661.jpg?_upt=da51378d1494571758&_upd=500367661.jpg',
'http://desk.fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/09/0F/ChMkJljskIqIPX9bAAMPyuIn8DcAAbj8QB7XpYAAw_i343.jpg',
'http://desk.fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/09/0F/ChMkJljskLeIaW-JAAIudN_yqvgAAbj8gDQO5AAAi6M64.jpeg',
'http://desk.fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/0F/08/ChMkJlauzISIH0uXAARUHuJLVX8AAH8-gHu6zsABFQ2166.jpg',
'http://desk.fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/0F/08/ChMkJlauzISIIL5TAAObxg4-XeUAAH8-gHzP3EAA5ve000.jpg'];
// 绑定按钮事件
var btns = document.getElementsByClassName('btn'),
img = document.getElementById('img'),
index = 0;
for(var i=0;i<btns.length;i++){
btns[i].onclick = function(){
if(this.innerHTML === 'next'){
index = Math.min(++index , imgs.length-1);
img.setAttribute('src',imgs[index]);
}
if(this.innerHTML === 'prev'){
index = Math.max(--index , 0);
img.setAttribute('src',imgs[index]);
}
}
}
// 计数变量
var count = 0,
load = document.getElementsByClassName('load')[0],
box = document.getElementsByClassName('box')[0];
// 无序预加载
for(var i=0;i<imgs.length;i++){
(function(i){
var imgObj = new Image();
imgObj.onload = function(){
load.innerHTML = Math.round((count + 1) / imgs.length * 100) + '%';
count++;
if(count >= imgs.length-1){
load.style.display = 'none';
box.style.display = 'block';
img.setAttribute('src',imgs[0]);
document.title = '1/' + imgs.length;
}
}
imgObj.onerror = function(){
load.innerHTML = Math.round((count + 1) / imgs.length * 100) + '%';
count++;
if(count >= imgs.length-1){
load.style.display = 'none';
box.style.display = 'block';
img.setAttribute('src',imgs[0]);
document.title = '1/' + imgs.length;
}
}
imgObj.src = imgs[i];
})(i);
}
</script>
</body>
</html>
以上所述是小编给大家介绍的JS实现图片预加载之无序预加载功能代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# js
# 图片预加载
# 无序预加载
# js图片预加载示例
# 利用CSS、JavaScript及Ajax实现高效的图片预加载
# javascript预加载图片、css、js的方法示例介绍
# js 利用image对象实现图片的预加载提高访问速度
# JS实现图片预加载无需等待
# 加载
# 所示
# 小编
# 在此
# 微软
# 给大家
# 所述
# 绑定
# 给我留言
# 请参考
# 感谢大家
# 疑问请
# 有任何
# btns
# gray
# btn
# px
# vh
# img
# auto
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
如何在企业微信快速生成手机电脑官网?
文字头像制作网站推荐软件,醒图能自动配文字吗?
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
Laravel如何升级到最新版本?(升级指南和步骤)
使用spring连接及操作mongodb3.0实例
如何挑选高效建站主机与优质域名?
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
详解Android中Activity的四大启动模式实验简述
个人网站制作流程图片大全,个人网站如何注销?
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
如何在阿里云香港服务器快速搭建网站?
Laravel如何创建自定义Artisan命令?(代码示例)
Laravel如何实现一对一模型关联?(Eloquent示例)
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
如何在香港服务器上快速搭建免备案网站?
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
Android自定义控件实现温度旋转按钮效果
Android利用动画实现背景逐渐变暗
如何在Windows 2008云服务器安全搭建网站?
如何在万网自助建站中设置域名及备案?
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
Laravel怎么为数据库表字段添加索引以优化查询
Laravel模型事件有哪些_Laravel Model Event生命周期详解
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
Laravel distinct去重查询_Laravel Eloquent去重方法
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
如何登录建站主机?访问步骤全解析
JS中对数组元素进行增删改移的方法总结
Android Socket接口实现即时通讯实例代码
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
免费网站制作appp,免费制作app哪个平台好?
如何快速搭建个人网站并优化SEO?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
网站建设要注意的标准 促进网站用户好感度!
WordPress 子目录安装中正确处理脚本路径的完整指南
黑客如何利用漏洞与弱口令入侵网站服务器?

