jquery实现的元素居中插件简单介绍
本章节分享一个插件,它实现了元素的居中效果。
下面给出代码实例,然后再给出详细的实现过程,需要的朋友可以做一下参考。
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="/jquery/1.9.0/jquery.js"></script>
<script type="text/javascript">
(function($){
$.fn._center = function(self, parent, dimension){
if(!dimension.vertical && !dimension.horizontal){
return;
}
if(parent){
parent = self.parent();
parent.css("position", "relative");
}
else{
parent = window;
}
self.css("position", "absolute");
if(dimension.vertical){
self.css("top",Math.max(0,(($(parent).height()-$(self).outerHeight())/2)
+$(parent).scrollTop())+"px");
}
if(dimension.horizontal){
self.css("left",Math.max(0,(($(parent).width()-$(self).outerWidth())/2)
+$(parent).scrollLeft())+"px");
}
return self;
};
$.fn.center = function(parent, args){
if(!args){
args = {horizontal: true, vertical: true};
}
return this.each(function(){
var obj = $(this);
obj._center(obj, parent, args);
function callback(){
obj._center(obj, parent, args);
}
callback();
$(window).resize(callback);
});
};
})(jQuery);
$(document).ready(function(){
$("#antzone").center(false,{horizontal: true, vertical: true})
});
</script>
</head>
<body>
<div id="box">
<div id="antzone"></div>
</div>
</body>
</html>
上面的代码实现了元素的居中效果,下面介绍一下它的实现过程,毕竟掌握原理才是最重要的,因为插件都不是万能的,随时都有可能需要根据需求做出修改,下面进入正题。
一.代码注释:
(1).(function($){})(jQuery),一个匿名自执行函数,传递的参数是jQuery对象,这么写也可以防止$污染,当然在当前这个代码中没有这个问题,不过也需要注意到。
(2).$.fn._center = function(self, parent, dimension){},为jQuery对象实例扩展一个方法,第一个参数是要居中的元素,第二个参数是一个布尔值,规定是否是以父元素作为参考的进行居中,第三个参数是一个对象直接量,规定在垂直或者水平方位上居中,这个方法其实相当于用作内部调用。
(3).if(!dimension.vertical && !dimension.horizontal){
return;
},如果既不在垂直方向上居中也不在水平方向上居中,那么直接返回。
(4).if(parent){
parent = self.parent();
parent.css("position", "relative");
},如果是以父元素为居中参考,那么先获取父元素,然后再将其设置为相对定位。
(5).else{
parent = window;
},否则一窗口为居中参考。
(6).self.css("position", "absolute"),将元素设置为绝对定位。
(7).if(dimension.vertical){
self.css("top",Math.max(0,(($(parent).height()-$(self).outerHeight())/2)
+$(parent).scrollTop())+"px");
},如果要在垂直方向上居中。
$(parent).scrollTop()加这个的作用就是实现有滚动条的时候也能够垂直居中。
(8).return self,返回当前对象,为了实现链式调用。
(1).parent()方法可以参阅jQuery parent()一章节。
(2).css()方法可以参阅jQuery css()一章节。
(3).绝对定位可以参阅css absolute一章节。
(4).Math.max()方法可以参阅javascript Math.max()一章节。
(5).outerHeight()方法可以参阅jQuery outerHeight()一章节。
(6).scrollTop()方法可以参阅jQuery scrollTop()一章节。
(7).resize事件可以参阅jQuery resize 事件一章节。
相关推荐
-
jQuery实现的具有淡出效果的元素删除
默认情况下,删除元素一般都是瞬间完成的,这种效果未免不可。但是感觉有点生硬,下面就分享一段能够实现淡出效果的元素删除功能。代码如下: c
-
jQuery实现的多列元素高度相等
在实际应用中,可能为了实现整齐划一,会将多列的高度设置为相等。下面就通过代码实例介绍一下如何利用jQury实现此功能。代码实例如下:
-
jQuery实现的元素延迟指定时间之后隐藏
本章节介绍一下如何实现使用jQury让指定元素延迟一段时间之后隐藏。由于代码实在是太简单了,完整的代码就不给出了,只给出核心的代码片段。实现方式一://这是1.3.2中我们使用stTimout来
-
angularJS的$attrs方法使用代码实例
下面就是相关此方法应用的代码实例,需要的朋友可以做一下参考。代码如下: ut
-
表单元素的form属性用法介绍
本章节介绍一下表单元素的form属性的用法。此属性可以返回当前表单元素所在的form元素对象。代码实例如下: