html:点击图片放大到全屏,再次点击缩回

做手机网页开发时,经常遇到的效果:点击某个不加链接的图片时,图片放大,当再次点击放大的图片时,图片缩回(实质上将层隐藏掉了)。

实现思路:

准备原材料:一个遮档整个屏幕的不透明接近黑色的背景层(<div class="over"></div>),一个位于背景层之上的图片容器(<div class=tempContainer></div>) ;

加工过程:当点击不加链接的图片时,将黑色背景层显示,再通过计算原始图片尺寸与手机屏幕尺寸,使图片以恰当的比例显示在图片容器中,将图片容器显示;

        当再次点击放大的图片时,将黑色背景层和图片容器隐藏。

贴出代码:

HTML:

<div class="over"></div><!--背景层-->
<div class="logoImg amplifyImg"><!--注意:此处的amlifyImg不可少-->
     <img src="imgSrc"/>
</div>

CSS:

.over {position: fixed; left:0; top:0; width:100%; z-index:100;}
.tempContainer {position:fixed; width:100%; margin-right:0px; margin-left:0px; text-align:center; z-index:101;}

jQuery:

 var imgsObj = $('.amplifyImg img');//需要放大的图像
    if(imgsObj){
		$.each(imgsObj,function(){
			$(this).click(function(){
				var currImg = $(this);
				coverLayer(1);
				var tempContainer = $('<div class=tempContainer></div>');//图片容器
				with(tempContainer){//width方法等同于$(this)
					appendTo("body");
					var windowWidth=$(window).width();
					var windowHeight=$(window).height();
					//获取图片原始宽度、高度
					var orignImg = new Image();
					orignImg.src =currImg.attr("src") ;
					var currImgWidth= orignImg.width;
					var currImgHeight = orignImg.height;
					if(currImgWidth<windowWidth){//为了让图片不失真,当图片宽度较小的时候,保留原图
						if(currImgHeight<windowHeight){
							var topHeight=(windowHeight-currImgHeight)/2;
							if(topHeight>35){/*此处为了使图片高度上居中显示在整个手机屏幕中:因为在android,ios的微信中会有一个title导航,35为title导航的高度*/
								topHeight=topHeight-35;
								css('top',topHeight);
							}else{
								css('top',0);
							}
							html('<img border=0 src=' + currImg.attr('src') + '>');
						}else{
							css('top',0);
							html('<img border=0 src=' + currImg.attr('src') + ' height='+windowHeight+'>');
						}
					}else{
						var currImgChangeHeight=(currImgHeight*windowWidth)/currImgWidth;
						if(currImgChangeHeight<windowHeight){
							var topHeight=(windowHeight-currImgChangeHeight)/2;
							if(topHeight>35){
								topHeight=topHeight-35;
								css('top',topHeight);
							}else{
								css('top',0);
							}
							html('<img border=0 src=' + currImg.attr('src') + ' width='+windowWidth+';>');
						}else{
							css('top',0);
							html('<img border=0 src=' + currImg.attr('src') + ' width='+windowWidth+'; height='+windowHeight+'>');
						}
					}
				}
				tempContainer.click(function(){
					$(this).remove();
					coverLayer(0);
					});
			});
		});
    }
    else{
    	return false;
    }
    //使用禁用蒙层效果
    function coverLayer(tag){
		with($('.over')){
			if(tag==1){
				css('height',$(document).height());
				css('display','block');
				css('opacity',1);
				css("background-color","#191919");
			}
			else{
				css('display','none');
			}
		}
    }

  • 12
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值