图片自适应缩放局中 鼠标滑过跟随预览-JQuery
2011-10-23 22:24
309 查看
效果图.图片会缩放到合适的尺寸.并局中.鼠标滑过图片. 图片会 上下或左右移动 显示区域
效果预览:http://noyobo.sinaapp.com/lab/demo/imgresize.htm
完整示例下载:http://files.cnblogs.com/noyobo/imgresize.rar
效果预览:http://noyobo.sinaapp.com/lab/demo/imgresize.htm
完整示例下载:http://files.cnblogs.com/noyobo/imgresize.rar
<!DOCTYPE html> <html> <head> <title>图片自适应局中-鼠标滑过图片预览效果</title> <style> body{background-color:#ddd;} *{padding:0; margin:0; border:0;} img{display:block;} .pics-list {} .pics-list li { -moz-transition: opacity 0.2s ease-in-out 0s; -webkit-transition: opacity 0.2s ease-in-out 0s; -0-transition: opacity 0.2s ease-in-out 0s; transition: opacity 0.2s ease-in-out 0s; background-color: #EAEAEA; float: left; height: 90px; margin: 0 1px 1px 0; overflow: hidden; width: 120px; border:5px solid #fff; opacity: 0.8; font-size:0; } .pics-list li a{display:block; height:100%; width:100%; overflow:hidden;} .pics-list li img { -moz-transition: opacity 1.5s ease-in-out 0s; -webkit-transition: opacity 1.5s ease-in-out 0s; -o-transition: opacity 1.5s ease-in-out 0s; transition: opacity 1.5s ease-in-out 0s; display: block; } .pics-list li:hover { opacity: 1; } div[id^=log]{position:fixed; z-index:20; right:0} #log1{top:20px;} #log2{top:40px;} </style> <script src="http://code.jquery.com/jquery-latest.min.js"></script> <script> var centerPics =function(img){ var img = jQuery(img); var objW = img.width(); var objH = img.height(); var objRatio = objW/objH; var objParentW = img.parent().width(); var objParentH = img.parent().height(); var objParentRatio = objParentW/objParentH; if(objW < objParentW && objH < objParentH){// 图片宽高都小于容器 img.css('margin-top',(objParentH - objH)/2); img.css('margin-left',(objParentW - objW)/2); }elseif(objW < objParentW && objH > objParentH){ // 图片只有高大于容器 img.css('margin-left',(objParentW - objW)/2) img.css('margin-top',(objParentH - objH)/2); img.attr('data-top',(objParentH - objH)/2); }elseif(objW > objParentW && objH < objParentH){ // 图片只有宽大于容器 img.css('margin-top',(objParentH - objH)/2) img.css('margin-left',(objParentW - objW)/2); img.attr('data-left',(objParentW - objW)/2); }elseif(objW > objParentW && objRatio > objParentRatio){ //图片宽高比例 都大于 容器宽高比例 img.height(objParentH); img.width(Math.round(objParentH*objRatio)); img.css('margin-left',(objParentW-(Math.round(objParentH*objRatio)))/2); img.attr('data-left',(objParentW-(Math.round(objParentH*objRatio)))/2); }elseif(objW > objParentW && objRatio < objParentRatio){ // 图片宽高大于容器. 图片比例小于容器比例的 img.width(objParentW); img.height(Math.round(objParentW/objRatio)); img.css('margin-top',(objParentH -(Math.round(objParentW/objRatio)))/2) img.attr('data-top',(objParentH -(Math.round(objParentW/objRatio)))/2) }; img.bind("mousemove", function(e) { setTimeout(function(){ movepic(img, e); },50); }); function movepic(img, e){ var objL = img.parent().position().left, objT = img.parent().position().top, X = e.pageX, Y = e.pageY, defaultBorder =16, // 鼠标在图片范围内的临界点. roundX = objL + objParentW /2, roundY = objT + objParentH /2; var moveSpaceX = (X - roundX)/((objParentW - defaultBorder)/2), moveSpaceY = (roundY - Y)/((objParentH - defaultBorder)/2); if(moveSpaceX >1|| moveSpaceX <-1){ moveSpaceX = Math.round(moveSpaceX); }; if(moveSpaceY >1|| moveSpaceY <-1){ moveSpaceY = Math.round(moveSpaceY); }; if(img.data('top')){ img.css('margin-top',img.data('top')*(1-moveSpaceY)); }; if(img.data('left')){ img.css('margin-left',img.data('left')*(1+ moveSpaceX)) }; }; }; </script> </head> <body> <div> <ul class="pics-list"> <li><a href="#"><img src="http://images.cnblogs.com/cnblogs_com/noyobo/328764/o_001.jpg" onload="centerPics(this)"/></a></li> <li><a href="#"><img src="http://images.cnblogs.com/cnblogs_com/noyobo/328764/o_002.jpg" onload="centerPics(this)"/></a></li> <li><a href="#"><img src="http://images.cnblogs.com/cnblogs_com/noyobo/328764/o_003.jpg" onload="centerPics(this)"/></a></li> <li><a href="#"><img src="http://images.cnblogs.com/cnblogs_com/noyobo/328764/o_004.jpg" onload="centerPics(this)"/></a></li> <li><a href="#"><img src="http://images.cnblogs.com/cnblogs_com/noyobo/328764/o_005.jpg" onload="centerPics(this)"/></a></li> <li><a href="#"><img src="http://images.cnblogs.com/cnblogs_com/noyobo/328764/o_006.jpg" onload="centerPics(this)"/></a></li> </ul> </div> </body> </html>
相关文章推荐
- jQuery 鼠标滑过图片 预览大图(附注释)
- jQuery实现鼠标滑过预览图片大图效果的方法
- 基于jquery实现的鼠标滑过按钮改变背景图片
- Jquery 上传图片预览,等比例缩放
- jQuery导航条鼠标滑过下划线跟随滑动效果
- jQuery实现鼠标滑过图片移动特效
- jQuery实现鼠标经过图片预览大图效果
- jQuery插件——图片按比例自适应缩放
- jquery-鼠标滑过图片渐变效果
- jquery 预览图片,鼠标放上去显示实际大小的预览图片
- jQuery hover事件鼠标滑过图片半透明标题文字滑动显示隐藏
- jQuery实现鼠标经过图片预览大图效果
- jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
- jquery预览图片实现鼠标放上去显示实际大小
- jquery聚光灯插件制作jquery图片特效鼠标滑过图片当前图片高亮
- jquery实现简单鼠标经过图片预览效果
- [测试文章]简单实用的鼠标滑过图片遮罩层动画jQuery插件
- jquery hotspot图片焦点区域标记鼠标滑过提示
- 基于jquery实现的鼠标滑过按钮改变背景图片
- jquery实现图片跟随鼠标的实例