基于jq图片居中插件 [center]

最近在做一个项目,
大量的图片基于js进行缩放(图片放大镜),
考虑用css要写许多hack,
而已经基于jq了,
干脆写个方法得了。

 

代码很简单,不用多讲但是很实用。

$.fn.extend({ center: function (n,b) {
		
		n=typeof n?n:300;//过渡时间,默认为300毫秒;Number类型;
		b=b===false?b:true;//铺满父容器;如果为真 则清除标签上的style样式、计算出缩放数据后、还原清楚的样式后、按照缩放数据缩放,如果为假 则保持原尺寸(会出现图片显示不全现象);Boolean类型;
		
		$(this).each(function() {
                
			var t=$(this),tP=t.parent();//获取相对缩放的父容器;
			var tOld=t.attr("style");//存储当前样式;
				b&&t.removeAttr("style");//清除当前样式;
				
			var tH=t.height(),tW=t.width();//缩放对象宽,高;
			var tPH=tP.height(),tPW=tP.width();//缩放对象父容器宽,高;
			
			var scaleW=tH/tW,scaleH=tW/tH;//比例计算;
			var pScaleW=tPH/tPW,pScaleH=tPW/tPH;//父容器比例计算;
			
			var baseW=(pScaleW-scaleW)>(pScaleH-scaleH);//是否按照宽度进行缩放;
			
			t.attr("style",tOld);//还原存储的样式;
			
			var data={"width":tW,"height":tH,"opacity":1};//缩放效果数据(声明和原始数据);
			
					if((baseW&&b)){data.width=tPW; data.height=tPW*scaleW};//按照宽度进行缩放更改效果数据;
					if((!baseW&&b)){data.height=tPH; data.width=tPH*scaleH};//按照高度进行缩放更改效果数据;
			
				data["top"]=(tPH-data.height)/2; data["left"]=(tPW-data.width)/2;//计算位置;
			
				t.css("opacity",0);
				t.stop(true,true).animate(data,n);//实施效果参数;
				
		})
		
	 }})

 

 

center插件在线调试

 

 

 完整实例:

 

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>wangzf.com</title>
<style>
.item{ position:relative;
	   height:300px; width:300px; overflow:hidden; border:5px #ccc solid; float:left; margin:10px;}
.item img{ position:absolute;}
.item span{ position:absolute; top:50%;padding:20px; display:none; background:rgba(0,0,0,.5); color:#fff;}
.item:hover span{ display:block;}
</style>

</head>
<body>

<div class="item"><img src="http://f.hiphotos.baidu.com/album/w%3D2048/sign=5a4b7bd68326cffc692ab8b28d394b90/7af40ad162d9f2d3ba2229a0a8ec8a136327cc4a.jpg"><span></span></div>
<div class="item"><img src="http://d.hiphotos.baidu.com/pic/w%3D230/sign=3f65b6e61c950a7b753549c73ad0625c/0d338744ebf81a4c22620119d62a6059242da68a.jpg"><span></span></div>
<div class="item"><img src="http://h.hiphotos.baidu.com/pic/w%3D230/sign=d44f53508701a18bf0eb154cae2e0761/08f790529822720e536837867bcb0a46f21fab2c.jpg"><span></span></div>
<div class="item"><img src="http://e.hiphotos.baidu.com/pic/w%3D230/sign=3b73e8b90b55b3199cf9857673a88286/7af40ad162d9f2d3c39c8057a8ec8a136227ccfd.jpg"><span></span></div>
<br clear="all">
<a href="http://wangzf.com">wangzf.com</a>
</body>
</html>
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>

<script>
$(function(){
	$.fn.extend({ center: function (n,b) {
		n=typeof n?n:300;b=b===false?b:true;
		$(this).each(function() {
			var t=$(this),tP=t.parent();
			var tOld=t.attr("style");b&&t.removeAttr("style");
			var tH=t.height(),tW=t.width();
			var tPH=tP.height(),tPW=tP.width();
			var scaleW=tH/tW,scaleH=tW/tH;
			var pScaleW=tPH/tPW,pScaleH=tPW/tPH;
			var baseW=(pScaleW-scaleW)>(pScaleH-scaleH);
			t.attr("style",tOld);
			var data={"width":tW,"height":tH,"opacity":1};
					if((baseW&&b)){data.width=tPW; data.height=tPW*scaleW};
					if((!baseW&&b)){data.height=tPH; data.width=tPH*scaleH};
				data["top"]=(tPH-data.height)/2; data["left"]=(tPW-data.width)/2;
				t.css("opacity",0);
				t.stop(true,true).animate(data,n);
		})}})
});
</script>
<script>
$(function(){
	$("img").each(function() {
        var t=$(this);
		t.next().html("设置前图片大小 宽*高= "+t.width()+"*"+t.height())
    });
	
	$("img").eq(0).center(300,false)
	$("img").eq(1).center()
	$("img").eq(2).center(300,false)
	$("img").eq(3).center()
	})
</script>

 

王那个锋啊的个人博客  wangzf.com

 

转载于:https://www.cnblogs.com/wangzf-No1/p/3414701.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于jQuery的登录页面示例,包括背景图片。你可以根据自己的需求进行修改和定制。 HTML代码: ``` <!DOCTYPE html> <html> <head> <title>Login Page</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" type="text/css" href="style.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> </head> <body> <div class="login-container"> <div class="login-box"> <h2>Login</h2> <form> <div class="input-group"> <i class="fa fa-envelope"></i> <input type="text" placeholder="Email" required> </div> <div class="input-group"> <i class="fa fa-lock"></i> <input type="password" placeholder="Password" required> </div> <button type="submit">Login</button> </form> </div> </div> <script> $(document).ready(function(){ $('body').css('background-image', 'url(background.jpg)'); }); </script> </body> </html> ``` CSS代码: ``` body { margin: 0; padding: 0; background-repeat: no-repeat; background-size: cover; background-position: center; font-family: Arial, sans-serif; } .login-container { display: flex; justify-content: center; align-items: center; height: 100vh; } .login-box { background-color: #fff; padding: 50px; border-radius: 5px; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.3); } h2 { margin-top: 0; } form { display: flex; flex-direction: column; } .input-group { display: flex; align-items: center; margin-bottom: 20px; } input { flex: 1; padding: 10px; border-radius: 5px; border: none; background-color: #f4f4f4; } input:focus { outline: none; background-color: #e6e6e6; } button { padding: 10px; border-radius: 5px; border: none; background-color: #4CAF50; color: #fff; cursor: pointer; } button:hover { background-color: #3e8e41; } ``` 在这个示例中,我们使用了一张名为 `background.jpg` 的背景图片。你需要将其保存在项目文件夹中,并在相应的位置修改文件路径。此外,我们还使用了 Font Awesome 中的图标,你需要在 `<head>` 部分添加相应的链接才能使用这些图标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值