js+css实现点小图动态遮罩弹出大图特效 这是使用JavaScript与CSS共同实现的点小图弹大图效果代码,采用了比较流行的遮罩层效果,当点击小图后,动态弹出大图,同时实现了点击关闭功能,兼容IE6/7/8,火狐下表现也不错,代码中有注释,使用前请注意注释部分的代码。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br /> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh"><br /> <head><br /> <meta http-equiv="content-type" content="text/html; charset=gbk" /><br /> <title>小图动态弹大图 可关闭 适应窗口大小 - Liehuo.Net</title><br /> <style type="text/css"><br /> body { background:#f1f1f1; margin:0 }<br /> #workDemo { width:100%; }<br /> #workDemo a { width: 150px; height:90px; margin:5px; padding:0; border:gray 5px solid; float:left; overflow:hidden; text-decoration:none; display:block; position:relative }<br /> #workDemo a span { display:none; }<br /> #workDemo a img { border:none; }<br /> #workDemo a:hover { border-color:red; }<br /> #workDemo a:hover span { position:absolute; background:red; color:white; width:100%; padding-top:3px; text-align:center; right:0; bottom:0; display:block; font-size:11px; filter: Alpha(Opacity=60);Opacity:0.6; }<br /> </style><br /> </head><br /> <body><br /> <div id="workDemo"><br /> <a href="#"><img src="http://www.veryhuo.com/uploads/common/images/liehuo_net_600x400_7.jpg" /><span>把浏览器窗口放小后点击</span></a><br /> <a href="#"><img src="http://www.veryhuo.com/uploads/common/images/liehuo_net_600x400_3.jpg" /><span>把浏览器窗口放小后点击</span></a><br /> </div><br /> <script type="text/javascript"><br /> function ImgShow(evt){<br /> var imgTag=(window.event)?event.srcElement:evt.target;<br /> var imgPath=imgTag.src.replace(/\_\d\./,"_4.");//取得弹出的大图url<br /> var tagTop=Math.max(document.documentElement.scrollTop,document.body.scrollTop);<br /> var tag=document.createElement("div");<br /> tag.style.cssText="width:100%;height:"+Math.max(document.body.clientHeight,document.body.offsetHeight,document.documentElement.clientHeight)+"px;position:absolute;background:black;top:0;filter: Alpha(Opacity=80);Opacity:0.8;";<br /> tag.ondblclick=closes;<br /> var tagImg=document.createElement("div");<br /> tagImg.style.cssText="font:12px /18px verdana;overflow:auto;text-align:center;position:absolute;width:200px;border:5px solid white;background:white;color:white;left:"+(parseInt(document.body.offsetWidth)/2-100)+"px;top:"+(document.documentElement.clientHeight/3+tagTop)+"px;"<br /> tagImg.innerHTML="<div style='padding:10px;background:#cccccc;border:1px solid white'><img src='http://www.veryhuo.com/uploads/common/images/loading.gif' /><br /><br /><b style='color:#999999;font-weight:normal'>Image loading...</b><br /></div>";<br /> tagImg.oncontextmenu=function(){var clsOK=confirm("确定要取消图片显示吗?点击确定将关闭图片。\n如果您是想缩放图片请在图片上双击。"); if(clsOK){closes();};return false};<br /> var closeTag=document.createElement("div");<br /> closeTag.style.cssText="display:none;position:absolute;left:10px;top:10px;color:black;";<br /> var closesHtml="<b style='background:red;border:1px solid white;filter:Alpha(Opacity=50);Opacity:0.5;cursor:pointer;'> 关闭 </b>";<br /> closeTag.innerHTML=closesHtml+" 提示:双击图片缩放";<br /> closeTag.onclick=closes;<br /> document.body.appendChild(tag);<br /> document.body.appendChild(tagImg);<br /> var img=new Image();<br /> img.src=imgPath;<br /> img.style.cssText="border:1px solid #cccccc;filter: Alpha(Opacity=0);Opacity:0;cursor:pointer";<br /> var barShow,imgTime;<br /> img.complete?ImgOK():img.onload=ImgOK;<br /> function ImgOK(){<br /> var Stop1=false,Stop2=false,temp=0;<br /> var tx=tagImg.offsetWidth,ty=tagImg.offsetHeight;<br /> var ix=img.width,iy=img.height;<br /> var sx=document.documentElement.clientWidth,sy=window.innerHeight||document.documentElement.clientHeight;<br /> if(iy>sy||ix>sx){<br /> var yy=sy-100;<br /> var xx=(ix/iy)*yy;<br /> }else{<br /> var xx=ix+4;<br /> var yy=iy+3;<br /> }<br /> img.style.width=xx-4+'px';<br /> img.style.height=yy-3+'px';<br /> if(ix<sx&&iy<sy){tagImg.alt="";closeTag.innerHTML=closesHtml;};<br /> var maxTime=setInterval(function(){<br /> temp+=35;<br /> if((tx+temp)<xx){<br /> tagImg.style.width=(tx+temp)+"px";<br /> tagImg.style.left=(sx-(tx+temp))/2+"px";<br /> }else{<br /> Stop1=true;<br /> tagImg.style.width=xx+"px";<br /> tagImg.style.left=(sx-xx)/2+"px";<br /> }<br /> if((ty+temp)<yy){<br /> tagImg.style.height=(ty+temp)+"px";<br /> tagImg.style.top=(tagTop+((sy-(ty+temp))/2))+"px";<br /> }else{<br /> Stop2=true;<br /> tagImg.style.height=yy+"px";<br /> tagImg.style.top=(tagTop+((sy-yy)/2))+"px";<br /> }<br /> if(Stop1&&Stop2){<br /> clearInterval(maxTime);<br /> tagImg.appendChild(img);<br /> temp=0;<br /> imgOPacity();<br /> }<br /> },1);<br /> function imgOPacity(){<br /> temp+=10;<br /> img.style.filter="alpha(opacity="+temp+")";<br /> img.style.opacity=temp/100;<br /> imgTime=setTimeout(imgOPacity,1)<br /> if(temp>100) clearTimeout(imgTime);<br /> }<br /> tagImg.innerHTML="";<br /> tagImg.appendChild(closeTag);<br /> if(ix>xx||iy>yy){<br /> img.alt="左键拖动,双击放大缩小";<br /> img.ondblclick=function (){<br /> if(tagImg.offsetWidth<img.offsetWidth||tagImg.offsetHeight<img.offsetHeight){<br /> img.style.width="auto";<br /> img.style.height="100%";<br /> img.alt="双击可以放大";<br /> img.onmousedown=null;<br /> closeTag.style.top="10px";<br /> closeTag.style.left="10px";<br /> tagImg.style.overflow="visible";<br /> tagImg.style.width=img.offsetWidth+"px";<br /> tagImg.style.left=((sx-img.offsetWidth)/2)+"px";<br /> }else{<br /> img.style.width=ix+"px";<br /> img.style.height=iy+"px";<br /> img.alt="双击可以缩小";<br /> img.onmousedown=dragDown;<br /> tagImg.style.overflow="auto";<br /> tagImg.style.width=(ix<sx-100?ix+20:sx-100)+"px";<br /> tagImg.style.left=((sx-(ix<sx-100?ix+20:sx-100))/2)+"px";<br /> }<br /> }<br /> img.onmousedown=dragDown;<br /> tagImg.onmousemove=barHidden;<br /> tagImg.onmouseout=moveStop;<br /> document.onmouseup=moveStop;<br /> }else{<br /> tagImg.style.overflow="visible";<br /> tagImg.onmousemove=barHidden;<br /> }<br /> }<br /> function dragDown(a){<br /> img.style.cursor="move";<br /> var evts=a||window.event;<br /> var onx=evts.clientX,ony=evts.clientY;<br /> var sox=tagImg.scrollLeft,soy=tagImg.scrollTop;<br /> var sow=img.width+2-tagImg.clientWidth,soh=img.height+2-tagImg.clientHeight;<br /> var xxleft,yytop;<br /> document.onmousemove=function(e){<br /> var evt=e||window.event;<br /> xxleft=sox-(evt.clientX-onx)<0?"0":sox-(evt.clientX-onx)>sow?sow:sox-(evt.clientX-onx);<br /> yytop=soy-(evt.clientY-ony)<0?"0":soy-(evt.clientY-ony)>soh?soh:soy-(evt.clientY-ony);<br /> tagImg.scrollTop=yytop;<br /> tagImg.scrollLeft=xxleft;<br /> closeTag.style.top=(yytop+10)+"px";<br /> closeTag.style.left=(xxleft+10)+"px";<br /> return false;<br /> }<br /> return false;<br /> }<br /> function barHidden(){<br /> clearTimeout(barShow);<br /> closeTag.style.top=(tagImg.scrollTop+10)+"px";<br /> closeTag.style.left=(tagImg.scrollLeft+10)+"px";<br /> if(closeTag.style.display=="none")closeTag.style.display="block";<br /> barShow=setTimeout(function(){closeTag.style.display="none";},1000);<br /> }<br /> function closes(){<br /> document.body.removeChild(tag);<br /> document.body.removeChild(tagImg);<br /> clearTimeout(barShow);<br /> clearTimeout(imgTime);<br /> document.onmouseup=null;<br /> tag=img=tagImg=closeTag=null;<br /> }<br /> function moveStop(){<br /> document.onmousemove=null;<br /> tagImg.onmousemove=barHidden;<br /> img.style.cursor="pointer";<br /> }<br /> }<br /> //事件绑定部分<br /> if(document.getElementById("workDemo")){<br /> var workTag=document.getElementById("workDemo");<br /> var workImg=workTag.getElementsByTagName("img"); //注册此处会把 workDemo下的所有img选中,包括子集下的子集。<br /> var worka=workTag.getElementsByTagName("a");<br /> for(var i=0; i<workImg.length; i++){workImg[i].onclick=ImgShow;worka[i].href="##"}<br /> }<br /> </script></body> <br /><center>如不能显示效果,请按Ctrl+F5刷新本页,更多网页代码:<a href='http://www.veryhuo.com/' target='_blank'>http://www.veryhuo.com/</a></center>提示:可修改后代码再运行! 文章导航 早报:红芯浏览器承认基于Chromium开源项目CSS+JS实现的滑动TAB,滑动门的特效代码