js实现点击图⽚在屏幕中间弹出放⼤效果js实现点击图⽚在屏幕中间弹出放⼤效果
效果图
点击图⽚后
关键代码
html
<div>
<img height="100" width="100" src="cdn.pixabay/photo/2018/08/14/13/23/ocean-3605547_960_720.jpg" class="pic"/>
<img height="100" width="100" src="cdn.pixabay/photo/2011/12/14/12/21/orion-nebula-11107_960_720.jpg" class="pic"/>
<img height="100" width="100" src="cdn.pixabay/photo/2017/08/30/01/05/milky-way-2695569_960_720.jpg" class="pic"/>
</div>
<div id="outerdiv" >
<div id="innerdiv" >
<img id="bigimg" src="" />
</div>
js
<script src="./jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$(".pic").click(function(){
var _this = $(this);//将当前的pimg元素作为_this传⼊函数
imgShow("#outerdiv", "#innerdiv", "#bigimg", _this);
});
});
function imgShow(outerdiv, innerdiv, bigimg, _this){
var src = _this.attr("src");//获取当前点击的pimg元素中的src属性
$(bigimg).attr("src", src);//设置#bigimg元素的src属性
/*获取当前点击图⽚的真实⼤⼩,并显⽰弹出层及⼤图*/
$("<img/>").attr("src", src).load(function(){
var windowW = $(window).width();//获取当前窗⼝宽度
var windowH = $(window).height();//获取当前窗⼝⾼度
var realWidth = this.width;//获取图⽚真实宽度
var realHeight = this.height;//获取图⽚真实⾼度
var imgWidth, imgHeight;
var scale = 0.8;//缩放尺⼨,当图⽚真实宽度和⾼度⼤于窗⼝宽度和⾼度时进⾏缩放
if(realHeight>windowH*scale) {//判断图⽚⾼度
imgHeight = windowH*scale;//如⼤于窗⼝⾼度,图⽚⾼度进⾏缩放
imgWidth = imgHeight/realHeight*realWidth;//等⽐例缩放宽度
if(imgWidth>windowW*scale) {//如宽度扔⼤于窗⼝宽度
imgWidth = windowW*scale;//再对宽度进⾏缩放
}
} else if(realWidth>windowW*scale) {//如图⽚⾼度合适,判断图⽚宽度
imgWidth = windowW*scale;//如⼤于窗⼝宽度,图⽚宽度进⾏缩放
imgHeight = imgWidth/realWidth*realHeight;//等⽐例缩放⾼度
} else {//如果图⽚真实⾼度和宽度都符合要求,⾼宽不变
imgWidth = realWidth;
imgHeight = realHeight;
}
$(bigimg).css("width",imgWidth);//以最终的宽度对图⽚缩放
var w = (windowW-imgWidth)/2;//计算图⽚与窗⼝左边距
var h = (windowH-imgHeight)/2;//计算图⽚与窗⼝上边距
$(innerdiv).css({"top":h, "left":w});//设置#innerdiv的top和left属性
$(outerdiv).fadeIn("fast");//淡⼊显⽰#outerdiv及.pimg
});
$(outerdiv).click(function(){//再次点击淡出消失弹出层
$(this).fadeOut("fast");
});
}
</script>
使⽤⽅式
将以下两个⽂件放在同⼀个⽂件夹下,使⽤浏览器打开1.html
完整代码
完整1.html
<html>
<head>
<script src="./jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$(".pic").click(function(){
var _this = $(this);//将当前的pimg元素作为_this传⼊函数
imgShow("#outerdiv", "#innerdiv", "#bigimg", _this);
});
});
function imgShow(outerdiv, innerdiv, bigimg, _this){
var src = _this.attr("src");//获取当前点击的pimg元素中的src属性
$(bigimg).attr("src", src);//设置#bigimg元素的src属性
jquery弹出div窗口/
*获取当前点击图⽚的真实⼤⼩,并显⽰弹出层及⼤图*/
$("<img/>").attr("src", src).load(function(){
var windowW = $(window).width();//获取当前窗⼝宽度
var windowH = $(window).height();//获取当前窗⼝⾼度
var realWidth = this.width;//获取图⽚真实宽度
var realHeight = this.height;//获取图⽚真实⾼度
var imgWidth, imgHeight;
var scale = 0.8;//缩放尺⼨,当图⽚真实宽度和⾼度⼤于窗⼝宽度和⾼度时进⾏缩放
if(realHeight>windowH*scale) {//判断图⽚⾼度
imgHeight = windowH*scale;//如⼤于窗⼝⾼度,图⽚⾼度进⾏缩放
imgWidth = imgHeight/realHeight*realWidth;//等⽐例缩放宽度
if(imgWidth>windowW*scale) {//如宽度扔⼤于窗⼝宽度
imgWidth = windowW*scale;//再对宽度进⾏缩放
}
} else if(realWidth>windowW*scale) {//如图⽚⾼度合适,判断图⽚宽度
imgWidth = windowW*scale;//如⼤于窗⼝宽度,图⽚宽度进⾏缩放
imgHeight = imgWidth/realWidth*realHeight;//等⽐例缩放⾼度
} else {//如果图⽚真实⾼度和宽度都符合要求,⾼宽不变
imgWidth = realWidth;
imgHeight = realHeight;
}
$(bigimg).css("width",imgWidth);//以最终的宽度对图⽚缩放
var w = (windowW-imgWidth)/2;//计算图⽚与窗⼝左边距
var h = (windowH-imgHeight)/2;//计算图⽚与窗⼝上边距
$(innerdiv).css({"top":h, "left":w});//设置#innerdiv的top和left属性
$(outerdiv).fadeIn("fast");//淡⼊显⽰#outerdiv及.pimg
});
$(outerdiv).click(function(){//再次点击淡出消失弹出层
$(this).fadeOut("fast");
});
}
</script>
</head>
<body>
<div>
<img height="100" width="100" src="cdn.pixabay/photo/2018/08/14/13/23/ocean-3605547_960_720.jpg" class="pic"/>
<img height="100" width="100" src="cdn.pixabay/photo/2011/12/14/12/21/orion-nebula-11107_960_720.jpg" class="pic"/>
<img height="100" width="100" src="cdn.pixabay/photo/2017/08/30/01/05/milky-way-2695569_960_720.jpg" class="pic"/>
</div>
<div id="outerdiv" >
<div id="innerdiv" >
<img id="bigimg" src="" />
</div>
</body>
</html>
jquery.min.js (常规jquery包)
/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | /license */
!function(a,b){"object"==typeof module&&"object"==ports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,fu if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{p}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].d(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.d },cur:function(){var a=Zb.propHooks[this.prop];return a&&?a.get(this):Zb.propHooks._(this)},run:function(a){var b,c=Z
总结
以上所述是⼩编给⼤家介绍的js实现点击图⽚在屏幕中间弹出放⼤效果,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
如果你觉得本⽂对你有帮助,欢迎转载,烦请注明出处,谢谢!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论