Created
September 30, 2013 21:10
-
-
Save markthelefty/6770342 to your computer and use it in GitHub Desktop.
jquery-center.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @author Alexandre Magno | |
* @desc Center a element with jQuery | |
* @version 1.0 | |
* @example | |
* $("element").center({ | |
* | |
* vertical: true, | |
* horizontal: true | |
* | |
* }); | |
* @obs With no arguments, the default is above | |
* @license free | |
* @param bool vertical, bool horizontal | |
* @contribution Paulo Radichi | |
* | |
*/ | |
jQuery.fn.center = function(params) { | |
var options = { | |
vertical: true, | |
horizontal: true | |
} | |
op = jQuery.extend(options, params); | |
return this.each(function() { | |
//initializing variables | |
var $self = jQuery(this); | |
//get the dimensions using dimensions plugin | |
var width = $self.width(); | |
var height = $self.height(); | |
//get the paddings | |
var paddingTop = parseInt($self.css("padding-top")); | |
var paddingBottom = parseInt($self.css("padding-bottom")); | |
//get the borders | |
var borderTop = parseInt($self.css("border-top-width")); | |
var borderBottom = parseInt($self.css("border-bottom-width")); | |
//get the media of padding and borders | |
var mediaBorder = (borderTop + borderBottom) / 2; | |
var mediaPadding = (paddingTop + paddingBottom) / 2; | |
//get the type of positioning | |
var positionType = $self.parent().css("position"); | |
// get the half minus of width and height | |
var halfWidth = (width / 2) * (-1); | |
var halfHeight = ((height / 2) * (-1)) - mediaPadding - mediaBorder; | |
// initializing the css properties | |
var cssProp = { | |
position: 'absolute' | |
}; | |
if (op.vertical) { | |
cssProp.height = height; | |
cssProp.top = '50%'; | |
cssProp.marginTop = halfHeight; | |
} | |
if (op.horizontal) { | |
cssProp.width = width; | |
cssProp.left = '50%'; | |
cssProp.marginLeft = halfWidth; | |
} | |
//check the current position | |
if (positionType == 'static') { | |
$self.parent().css("position", "relative"); | |
} | |
//aplying the css | |
$self.css(cssProp); | |
}); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment