先来张效果图:
基本业务:
点击“表情”字样或“图标”时显示“表情加载中,请稍后...” 的提示信息,等所有的表情都加载完成了再显示出来。
接下来还是那几句:
这个特效是跟着慕课网上的视频学的,视频链接如下:https://www.imooc.com/learn/502
源码和技术点已经上传到附件,有需要的可以查看、下载。
下面直接上代码(PS:代码中的注释是根据个人理解添加的,并不是老师原有的注释):
1、页面基本结构:
<div class="box"> <a href="javascript:void(0);" id="face-btn">表情</a> <div class="panel"> <p class="loading">表情加载中,请稍后...</p> <!-- <ul class="list"> <li><img src="emotion/ldw/w_0001.gif"/></li> <li><img src="emotion/ldw/w_0002.gif"/></li> </ul> --> </div> </div>
2、CSS样式:
<style> body,p,ul,li{ margin: 0; padding: 0; } body{background-color: #eee;} a{text-decoration: none;outline:none;} .box{margin:150px 0 0 200px;} #face-btn{ display:block; background: url(qq-icon.png) no-repeat 0 0px; width:225px; height:225px; background-size:12% 12%; text-indent:28px; color:#333; line-height:25px; font-size:23px; } .panel{ width:460px; padding:2px; border:1px solid #ccc; background-color:#fff; position:relative; top:-190px; display:none; } .loading{ text-align:center; } .list li{ display:inline-block; width:50px; height:50px; border:1px solid #fff; margin-right:5px; margin-bottom:5px; cursor:pointer; } .list li:hover{ border-color:#06c; } </style>
3、JS代码:
$(function(){ var $btn = $("#face-btn"); var $panel = $(".panel"); var $loading = $(".loading"); var len = 32;//图片数量 var emotions = [];//表情集合 //添加表情集合 for(var i=0;i<len;i++){ if(i<9){ emotions[i]="emotion/ldw/w_000"+(i+1)+".gif"; }else{ emotions[i]="emotion/ldw/w_00"+(i+1)+".gif"; } } //点击“表情”时,显示表情加载的区域 $btn.click(function(ev){ ev.stopPropagation();//阻止冒泡 if($(".list").length>0){//说明已经加载过图片了 if($(".list").is(":visible")){//处于显示状态,那么隐藏掉 $panel.hide(); }else{//隐藏状态,那么显示 $panel.show(); } return false; } //还没有加载过,那么进行加载 $panel.show();//图片正在加载的提示显示出来 //预加载各张图片 $.preload(emotions,{ all:function(){//全部加载完成之后 var html = "<ul class=\"list\">"; for(var i=0;i<len;i++){ html+="<li><img src=\""+emotions[i]+"\"/></li>"; } html += "</ul>"; $panel.append(html);//显示图片 $loading.hide();//隐藏“图片正在加载的提示” } }); }); //点击页面空白处时隐藏表情 $(document).click(function(){ if($(".list").is(":visible")){//处于显示状态,那么隐藏掉 $panel.hide(); } }); });
其中preload()是使用的第一篇中的插件,代码如下:
//图片预加载 //使用闭包模拟局部作用域 /* (function(){ })(); */ //传入jQuery对象,用$来接收,这样子就可以使用jQuery了 /* (function($){ })(jQuery); */ (function($){ //构造函数 //imgs:图片数组 //options:参数 function PreLoad(imgs,options){ //若传入图片数组的是字符串,手动转成数组 this.imgs = ((typeof imgs)==="string"?[imgs]:imgs); //将传入的options参数替换掉默认的PreLoad.DEFAULTS,生成一个新的对象,并返回给this.opts this.opts = $.extend({},PreLoad.DEFAULTS,options); //无序方法:下划线表示这个方法只在内部使用,不提供外部调用 this._unordered(); } //设置默认参数 PreLoad.DEFAULTS={ each:null,//每一张图片加载完成后执行 all:null//所有图片加载完成后执行 }; //在原型上添加无序加载的代码 PreLoad.prototype._unordered=function(){ //预加载各张图片 var imgs = this.imgs, opts = this.opts, count = 0, len = imgs.length; $.each(imgs,function(i,src){ if(typeof src != "string"){ return ;}//不是字符串直接返回 var imgObj = new Image(); imgObj.src = src; //正常加载或加载失败都执行该方法,以避免“加载失败时页面一直都显示正在加载数据”的问题 $(imgObj).bind("load error",function(){ opts.each && opts.each(count); //当图片预加载完成显示第一张图片的信息 if(count>=len-1){ //显示图片 opts.all && opts.all();//若是有all就调用all()方法 } count++; }); }); }; //定义一个工具方法 $.extend({ preload:function(imgs,opts){ new PreLoad(imgs,opts); } }); })(jQuery); //插件学习方法:http://www.imooc.com/video/14434/0
最后,感谢老师,也祝大家好运!
相关推荐
本文将深入探讨“图片预加载学习(一):无序加载之图片切换”的主题,主要涵盖以下几个方面: 1. **图片预加载的意义**: 图片预加载的主要目标是提前下载用户可能需要的图片资源,避免用户在浏览网页时因为图片...
9. **预加载效果**:在图片加载之前,可以展示占位符或加载动画,提高用户体验。使用`.load()`事件监听图片加载状态。 在实际应用中,可以根据需求选择或组合这些案例,同时也可以利用jQuery插件如`swiper`、`...
7. **图片预加载**:为了提升用户体验,避免图片加载延迟,可能会使用JavaScript进行图片预加载,确保用户在切换到下一张图片时能立即看到完整的内容。 8. **交互设计**:菜单式图片可能还包含用户交互元素,如左右...
13. jQuery仿新浪新闻图片浏览器(支持鼠标左右滚动控制图片切换) 14. jquery仿苏宁易购商城产品图片全方位展示功能 15. jquery制作漂亮按钮示例打包 16. jQuery动态切换网页背景的大块图片的导航栏代码 17. ...
38.jquery异步加载图片的插件jqGalScroll下载 39.jquery微型相册插件Micro Image Gallery下载 40.jQuery把图片放大及变亮特效插件下载 41.jquery拖动滚动条控制图片滚动及图片放大特效的示例 42.jquery旋转...
87. 分享多款jQuery图片预加载切换效果(上下滚动、淡入淡出渐变等) 88. 动感十足jquery仿腾讯图片滚动浏览功能(带左右控制按钮)MovingBoxes插件下载 89. 参考JQZOOM插件使用jQuery仿京东网产品展示切换及放大效果...
87. 分享多款jQuery图片预加载切换效果(上下滚动、淡入淡出渐变等) 88. 动感十足jquery仿腾讯图片滚动浏览功能(带左右控制按钮)MovingBoxes插件下载 89. 参考JQZOOM插件使用jQuery仿京东网产品展示切换及放大效果...
87. 分享多款jQuery图片预加载切换效果(上下滚动、淡入淡出渐变等) 88. 动感十足jquery仿腾讯图片滚动浏览功能(带左右控制按钮)MovingBoxes插件下载 89. 参考JQZOOM插件使用jQuery仿京东网产品展示切换及放大效果...
JavaScript 实现PC端横向轮播图是一种常见的网页交互效果,用于展示多张图片或内容,让用户可以方便地...在实际开发中,还可以考虑添加更多的功能,如图片预加载、触摸事件支持、动态加载更多图片等,以提升用户体验。
3. **图片加载**:使用`new Image()`创建图片对象预加载图片,确保在展示时图片已经完全加载。 4. **动画效果**:通过改变CSS属性(如`opacity`、`transform`等)来添加过渡动画,提高用户体验。 5. **响应式设计**...
5. **预加载图片**:通过JavaScript预加载即将显示的图片,减少加载时的延迟。 通过不断迭代和改进,你可以构建出更强大、更灵活的jQuery轮播插件,以满足各种应用场景的需求。 总的来说,jQuery轮播效果是网页...
15. **预加载图片**:预加载图片以优化用户体验,`$.ajax({url: "image.jpg", type: "GET", cache: true})`。 16. **事件委托**:使用`on()`方法进行事件委托,如`$("#container").on("click", ".target", function...
1. **编辑器无法加载**:检查路径是否正确,确保所有依赖文件已加载。 2. **图片上传失败**:检查上传设置,确保有权限写入文件,并配置好上传路径。 3. **样式显示异常**:确保你的CSS样式与编辑器兼容,避免使用...
- **`<pre>`**:预格式化文本。保留所有空白字符,如空格和换行符。 - **`<marquee>`**:滚动显示文本或图像。这是一个非标准标签,在现代 Web 开发中不推荐使用。 - **`<dl>`**、**`<dt>`** 和 **`<dd>`**:定义...
4. **CSS属性**:如`color`定义文字颜色,`background-color`设定背景色,`font-size`调整字体大小,`margin`和`padding`控制元素的边距和内填充,`display`属性可以切换元素的显示方式(如块级元素、行内元素或隐藏...
首先,通过`querySelectorAll`选取所有的图片元素,然后设置定时器`setInterval`每隔一定时间自动切换图片。在切换过程中,使用`for`循环改变图片的显示状态。当鼠标悬浮在分页上时,停止轮播,离开时恢复。关键代码...
通过`<video>`标签,我们可以指定视频源(src)、设置宽度和高度、添加预加载和控制选项等。例如: ```html Your browser does not support the video tag. ``` 控制属性(controls)会显示播放、暂停、...
接着是**jQuery TABPANEL**,TabPanel通常用于将大量内容分隔到不同的面板中,每个面板对应一个标签页,用户可以通过点击标签切换显示内容。jQuery Tab插件提供了创建和管理这些标签页的功能,支持动态加载内容、...
3. **AJAX (Asynchronous JavaScript and XML)**: 用于异步加载新的数据,如城市信息、图片或评论,无需刷新整个页面。 4. **表单验证**: 检查用户输入的有效性,如邮箱格式、必填项等。 5. **动画效果**: 使用...