图片全屏预览实现

WEB前端 waitig 629℃ 百度已收录 0评论

要实现图片的全屏预览,主要知识点有一下几个:

(1)点击图片弹出弹出层

(2)获取已点击图片的图片地址

(3)弹出层样式处理(包括背景透明度、图片居中等)

(4)点击屏幕弹出层消失

代码实现:

HTML:主要是显示图片并创建弹出层

<div id="container" class="container">
    <img src="gongju1.png" alt=""/>
    <img src="gongju2.png" alt=""/>
    <img src="gongju3.jpg" alt=""/>
    <img src="gongju4.png" alt=""/>
</div>
<div id="popup">
    <div class="bg"><img src="" alt=""/></div>
</div>

JS:纯js实现

var imgs = document.getElementById("container").getElementsByTagName("img");
    var lens = imgs.length;
    var popup = document.getElementById("popup");

    for(var i = 0; i < lens; i++){
        imgs[i].onclick = function (event){
            event = event||window.event;
            var target = document.elementFromPoint(event.clientX, event.clientY);
            showBig(target.src);
        }
    }
    popup.onclick = function (){
        popup.style.display = "none";
    }
    function showBig(src){
        popup.getElementsByTagName("img")[0].src = src;
        popup.style.display = "block";
    }

也可添加jquery库,利用jquery实现:

//jquery版
	$("img").each(function(index, obj){
		$(this).click(function(){
			event = event || window.event;
			var target = document.elementFromPoint(event.clientX, event.clientY);
            showBig(target.src);
		});			
	});
	$("#popup").click(function(){
		$("#popup").css({
			"display":"none"
		});
	});
	
	function showBig(src){
		$("#popup img:first").attr("src",src);
		$("#popup").css({
			"display":"block"
		});
	}

jquery实现以及js实现的原理都是一样的,但是jquery实现了类CSS选择器,对于DOM节点的获取更为简便。

CSS:样式处理

.container {
            width: 600px;
            margin: 0 auto;
        }
        .container img{
            width: 45%;
            margin-right: 5%;
            margin-bottom: 30px;
            float: left;
        }
        /*弹出层样式*/
        #popup{
            position: fixed;
            left: 0px;
            top: 0px;
            width: 100%;
            height: 100%;
            text-align: center;
            display: none;         
        }
        #popup .bg{
            background-color: rgba(0,0,0,0.5);
            width: 100%;
            height: 100%;
        }
        @media \0screen\,screen\9 {
            #popup .bg{
                background-color:#000000;
                filter:Alpha(opacity=50);
                position:static;
            }
            #popup .bg img{
                position: relative;               
            }
        }
        #popup img{
            max-width: 100%;
            max-height: 100%;
            /*以下三行实现垂直居中*/
            margin: auto;  
  			position: absolute;  
 			top: 0; left: 0; bottom: 0; right: 0; 
 			/*以上三行实现垂直居中*/
        }

需要注意的是,为了使弹出层显示的图片根据浏览器窗口大小垂直居中,带注释的三行代码是必不可少的。当然,如果需求并不是水平垂直居中,那直接编辑对应的CSS样式即可!

效果图:

以上!


本文由【waitig】发表在等英博客
本文固定链接:图片全屏预览实现
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)