如何用Jquery做图片展示效果

一. 前言

 到底用JQuery做出怎样的展示效果? 让我们先来看一下!网页加载时,如图所示:

二.本人思路

   这个效果初学者看起来好像有点复杂,其实不太难,关键是理清思路,从后端的数据库中找出我们要展示的图档,将其放在一个特定的容器<div class='popshow'></div>里并且每个文件对象的个数都按照一下的规格进行设置:

   <img src="00031a.jpg" width="120" height="90" alt="Image Gallery #1" rel=00031.jpg>除了正常的信息外,我们将alt当作我们要显示的图片说明,而将rel是要展示的图片位置与图文件名(大图).

三. 图片展示效果实现

    1.样式代码

 1     <style>
 2         html
 3         {
 4             /*background-color:black;*/
 5             font:70% Verdana; 
 6             color:#ACACB0
 7         }
 8         a{
 9          color:white;
10          text-decoration: none;
11          font-weight: bold; 
12          border-bottom: 1px dotted black;
13          cursor: help; 
14         }
15         img.pop{
16         position: absolute;
17         border: 10px solid #214263;
18         z-index: 1;
19         }
20         .more{
21         background: #214263;
22         color:white;
23         position: absolute;
24         border: 10px solid #214263;
25         z-index: 2;
26         }
27     </style>

2.图片展示代码

 1 <body>
 2     <center>
 3     <b>Image Gallery</b>
 4     </center>
 5     <div class="popshow">
 6         <img src="00031a.jpg" width="120" height="90" alt="Image Gallery #1" rel=00031.jpg>
 7         <img src="00032a.jpg" width="120" height="90" alt="Image Gallery #2" rel=00032.jpg>
 8         <img src="00033a.jpg" width="120" height="90" alt="Image Gallery #3" rel=00033.jpg>
 9         <img src="00034a.jpg" width="120" height="90" alt="Image Gallery #4" rel=00034.jpg>
10         <img src="00035a.jpg" width="120" height="90" alt="Image Gallery #5" rel=00035.jpg>
11         <img src="00036a.jpg" width="120" height="90" alt="Image Gallery #6" rel=00036.jpg>
12         <img src="00037a.jpg" width="120" height="90" alt="Image Gallery #7" rel=00037.jpg>
13     </div>
14     <div id=dis class=more style="display:none" ></div>
15     <div id=next class=more style="display:none" ></div>
16     <div id=prev class=more style="display:none" ></div>
17 </body>

3.jquery代码

  1 <script src="../../Scripts/jquery-2.0.3.min.js"></script>
  2 <script>
  3     $(function (){
  4 
  5         // 怎么做? 让我们看一段程序。
  6         var myshow, mywidth, myheight, showpic, mytitle, mynext, myprev, mylength, index, temp, shownext, showprev;
  7 
  8         // 先将会用到的变量作一个设定.
  9         // 我们设定一个数组w,并求取所有图片的个数,然后利用一个each()循环将.popshow的Img 利用clone() 复制一份,放到w里,如此一来我们就有
 10         // 一个所有图文件img对象的数组,可以让我们随时调用。
 11         var w = new Array();
 12         mylength = $(".popshow img").size();
 13         $(".popshow img").each(function(e){
 14             temp = $(this).clone();
 15             w[e] = temp;
 16         });
 17 
 18         $(".popshow img").click(function(){
 19             myshow = $(".popshow img").index(this);
 20             doimg(myshow);
 21             return false;
 22         });
 23 
 24         // 测试数组并输出至控制台
 25         //$.each(w, function (e, i) {
 26         //    console.log("e:" + e + "- i" + i.href + "-");
 27         //});
 28 
 29         // 我们先定义当.popshow 下的img 被Click时要做的事情
 30         // 使用index()求得目前被按的图形在.popshow下img的index是什么,求得的是一个数值,将这个数值传给子程序doimg(),所以我们使用doing(myshow)
 31         // 为什么要设定一个子程序,doimg()?因为鼠标按下要求做展示的有两个以上的部位,一个是图形,一个是Next的对象,一个是Prev的对象
 32         // 为免程序代码重复,所以我们写了一个专门做图形展示的子程序doimg();
 33         // myshow = $(".popshow img").index(t);
 34         // 让我们来看一下doimg()
 35         function doimg(index){
 36             console.log(index);
 37             /// 首先把正在展示的对象(如果有的话,Id = this_show)清除掉,因为doimg会要求传入一个值(index),这个值就是要展示的图形的index值.
 38             /// 其用parseInt()(避免字符串而不可以计算)变成可以计算的变量,下一张的mynext就是传入值加1的值,前一张就是传入值减1的值
 39             /// 如果下一张的index值大于或等于图形个数,mynext 就是0 如果上一张小于0 就是图形个数减1作为数组最后的index来展示。
 40             $("#this_show").remove();
 41             index = parseInt(index);
 42             mynext = index + 1;
 43             myprev = index - 1;
 44             if (mynext >= mylength) {
 45                 mynext = 0;
 46             }
 47             if (myprev < 0) {
 48                 myprev = mylength - 1;
 49             }
 50 
 51             /// 将要展示的图形从w的数组中引到变量kkk里,我们利用new Image()的方法建立一个
 52             /// 新的图形对象,主要的原因是想要找出将要展示的(大图)的宽与高,因为等一下我们要求出的宽与高
 53             /// 来定位图形的显示位置,让其显示整个网页的正中央,并借此调整Next,Prev与文字说明的位置
 54             var kkk = w[index];
 55             var myImage = new Image();
 56             myImage.src = $(kkk).attr('rel')
 57             // 求得大图的src位置
 58             mytitle = $(kkk).attr('alt')
 59             // 求得文字说明
 60             mywidth = 500;
 61             // 大图的宽
 62             myheight = 375;
 63            /// debugger;
 64             // 大图的高
 65             showpic = '<img src=' + myImage.src + '>';
 66             // showpic已有目前要展示的大图的完整Html描述
 67 
 68             // 将showpic加入id=this_show并加入css的class pop(已设定于网页中),且加入定位的Css信息,
 69             // 完成后将其用appendTo()加入网页的body后面,并将其隐藏。
 70             $(showpic).attr("id", "this_show").addClass('pop').css({
 71                 'left': ($('body').width() - mywidth) / 2,
 72                 'top': 100,
 73                 'width': mywidth,
 74                 'height':myheight
 75             }).appendTo('body').hide();
 76 
 77             $('.popshow').css({ 'opacity': 0.4 });
 78             // 将原本的小图串(.popshow)的透明度减到0.4
 79             $("#dis").css({
 80                 'left': ($('body').width() - mywidth) / 2,
 81                 'top':100,'opacity':0.7
 82             }).html(mytitle);
 83 
 84             // Next
 85             $("#next").css({
 86                 'left': ($('body').width() + mywidth - 70) / 2,
 87                 'top':460,'opacity':0.7
 88             });
 89 
 90             // Prev
 91             $("#prev").css({
 92                 'left': ($('body').width() - mywidth) / 2,
 93                 'top':460,'opacity':0.7
 94             });
 95 
 96             // 对prev定位与降低透明度
 97             shownext = '<a href=# rel='+mynext+'>Next</a>';
 98             showprev = '<a href=# rel='+myprev+'>PREV</a>';
 99 
100             // 产生Next与Prev的链接与文字
101             // 将产生的链接分别写入next与prev的DIV中
102             $("#next").html(shownext);
103             $("#prev").html(showprev);
104 
105             
106             $('.more').show("fast");
107             $("#this_show").fadeIn("slow");
108             return false
109         }
110 
111         // 因为当初我们在产生next及prev的链接时就已将下一张的index放在链接a的rel里面,
112         // 现在我们将其取出来并直接调用doimg(),将index传给它。
113         // 
114         $("#next").click(function () {
115             var nindex = $("#next a").attr('rel');
116             doimg(nindex);
117             return false
118         });
119 
120         $("#prev").click(function () {
121             var pindex = $("#prev a").attr('rel');
122             doimg(pindex);
123             return false;
124         });
125 
126         // 最后我们要设定一个关掉展示与还原图片(小图)的透明度功能。
127         $(document).click(function(){
128             $('.popshow').css({ 'opacity': 1 });
129             $(".more").hide();
130             $("#this_show").remove();
131         });
132     });
133 </script>

四. 举一反三

   less is more ,贪多未必能学好技术,关键还是思考,举一反三,这个例子我们可以联想很多类型的功能比如(购物车,产品展示,图库等等)多需要图片放大的功能,可以适当的进行修改源代码均可实现。

五. 下载
    代码下载

转载于:https://www.cnblogs.com/binb/p/base_jquery.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux版本的redis bin,Linux下安装Redis4.0版本(简便方法)

Redis介绍&#xff1a;Redis 是完全开源免费的&#xff0c;遵守BSD协议&#xff0c;是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点&#xff1a;Redis支持数据的持久化RDB和AOF&#xff0c;可以将内存中的数据保存在磁盘中&#xff0c;重启的…

win7创建虚拟无线网络

如何用WIN7建立无线热点&#xff0c;供没有无线网的我们在家里轻松使 如何用WIN7建立无线热点&#xff0c;供没有无线网的我们在家里轻松使用&#xff0c;不过你家得有宽带吧&#xff01;《转》来源&#xff1a; 董昱的日志开启windows 7的隐藏功能&#xff1a;虚拟WiFi和SoftA…

linux内核双向循环队列,读书笔记之linux内核设计与实现(2)进程调度

调度程序是内核的组成部分&#xff0c;它负责选择下一个要运行的进程。进程调度程序可看作在可运行态进程之间分配有限的处理器时间资源的内核子系统。多任务操作系统就是能够同时并发的交互执行多个进程的操作系统。多任务系统可以划分为两类&#xff1a;抢占式和非抢占式。Li…

OpenCV图像分割-watershed

转自&#xff1a;Tiger & Pi http://blog.163.com/my_645/blog/static/369785222013310619742/Watershed就是传说中的分水岭算法&#xff0c; 它将一幅图像看成是一块有湖泊和山川组成的地形。 图像灰度值大的像素对应海拔高的山地&#xff0c; 灰度值低的像素对应于海拔低…

linux限制单个ip频繁连接,限制单个IP并发TCP连接的方法

限制单个IP并发TCP连接的方法适应于保护Linux上的各种TCP服务&#xff0c;使用iptables 中patch-o-matic中iplimit补丁来实现&#xff0c;对各种TCP服务比较通用。做法&#xff1a;配置Linux核心&#xff0c;使用2.4.20&#xff0c;并使用www.netfilter.org中patch-o-matic中的…

MyEclipse下安装MyBatis Generator代码反向生成工具

在http://mybatis.googlecode.com/svn/sub-projects/generator/trunk/eclipse/UpdateSite/下载 features/plugins/里面所有的jar包&#xff0c;新建一个mybatis-generator文件夹&#xff0c;把features跟plugins都丢到mybatis-generator文件夹中&#xff0c;把mybatis-generato…

linux的rootkit工具包,免费Linux杀毒软件Anti-Virus分享

ClamAVClamAV是一个免费的、开源的、通用的Linux系统杀毒工具包。它被用于检测木马&#xff0c;病毒&#xff0c;恶意软件和其他恶意威胁。是邮件网关扫描软件的标准;它支持几乎所有的邮件文件格式。它的主要功能有&#xff1a;它是跨平台的&#xff0c;适用于Linux、Windows和…

toj 3616 Add number (没想到啊~~)

Add number 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交: 60 测试通过: 21 描述 Employees of Baidu like to play a game called Making Numbers. It goes like this: there are two players in the game, one is called little A, the other little B…

att汇编教程 linux,ATT 汇编语法

6 个段寄存器:%cs(code),%ds(data),%ss(stack), %es,%fs,%gs;3 个控制寄存器:%cr0,%cr2,%cr3;6 个 debug 寄存器:%db0,%db1,%db2,%db3,%db6,%db7;2 个测试寄存器:%tr6,%tr7;8 个浮点寄存器栈:%st(0),%st(1),%st(2),%st(3),%st(4),%st(5),%st(6),%st(7).4. 操作数顺序操作数排列…

无插件,无com组件,利用EXCEL、WORD模板做数据导出(一)

本次随笔主要讲述着工作中是如何解决数据导出的&#xff0c;对于数据导出到excel在日常工作中大家还是比较常用的&#xff0c;那导出到word呢&#xff0c;改如何处理呢&#xff0c;简单的页面导出问题应该不大&#xff0c;但是如果是标准的公文导出呢&#xff0c;要保证其基本格…

linux提示链接层次太多,嵌入式linuxmusic播放器

VLC music player流媒体客户端软件层次结构流媒体网络协议流视频协议是为了在客户端机和服务器之间进行通信而设计的标准化协议。根据它们的功能&#xff0c;网络上传输的流视频相关的协议分为三类。网络层协议&#xff1a;网络层协议提供了基本的网络服务支持。IP就是网络上流…

vc的UI编程PngTextButton控件的适用情况

控件继承自Cbutton。重写了其中的一些方法。适用ui类型&#xff1a;带图片和文字的类型的按钮&#xff0c;其中图片在前面&#xff0c;文字在后面。如下图 文件下载 转载于:https://www.cnblogs.com/songtzu/p/3415601.html

python在eclipse下中文乱码问题zz

首先要确保eclipse编辑器环境的编码为utf8&#xff0c;这个是大前提&#xff1b;其次如果py文件中含有中文字符的话&#xff0c;需要在py文件中对编码进行声明。1. 修改eclipse编辑器编码 a) window->preferences->general->editors->text editors->spelling-&g…

SecureCRT连接linux时主机名,secureCRT连接linux方法

jookfoon 于 2011-09-22 11:43:08发表:挺简单的zdq 于 2011-09-22 11:28:00发表:回复吧&#xff0c;又没钱下载了&#xff0c;怎么这样子咧sand302 于 2011-08-12 11:05:35发表:感谢分享&#xff0c;支持chongee 于 2011-08-12 10:55:11发表:收藏之前&#xff0c;先支持一下&am…

如何使用一个库中不存在的函数

Windows是一个不断发展的系统&#xff0c;很多新的 API 在操作系统更新时更新&#xff0c;而MASM32开发包一般在很长一段时间内都无法及时更新&#xff0c;如果需要在编程中使用新添加的API函数。就得自己动手来更手库文件&#xff0c;下面我就给大家介绍一下如何通过手动的方法…

linux使用root操作文件,以root用户登录Linux系统,当前目录是/root,要求完成如下操作和功...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼1、groupadd benetgrp2. useradd -g benetgrp benet3, mkdir -p /var/www/beneta, chown benet /var/www/benet ; chmod urwx /var/www/benetb, chown :benetgrp /var/www/benet或者chgrp benetgrp /var/www/benet; chmod grx /var…