Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using jQuery to center a DIV on the screen

How do I go about setting a <div> in the center of the screen using jQuery?

like image 908
Craig Avatar asked Oct 17 '08 00:10

Craig


People also ask

How do you put a div in the center of the screen?

You can do this by setting the display property to "flex." Then define the align-items and justify-content property to “center.” This will tell the browser to center the flex item (the div within the div) vertically and horizontally.

How do I center a div using Javascript?

js | center() Function. The center() function is used to set the alignment of element into the center either vertically, horizontally, or both, relative to its parent element or according to the body if the element has no parent.

How do I center a div box in HTML?

To horizontally center a block element (like <div>), use margin: auto; Setting the width of the element will prevent it from stretching out to the edges of its container.


2 Answers

I like adding functions to jQuery so this function would help:

jQuery.fn.center = function () {     this.css("position","absolute");     this.css("top", Math.max(0, (($(window).height() - $(this).outerHeight()) / 2) +                                                  $(window).scrollTop()) + "px");     this.css("left", Math.max(0, (($(window).width() - $(this).outerWidth()) / 2) +                                                  $(window).scrollLeft()) + "px");     return this; } 

Now we can just write:

$(element).center(); 

Demo: Fiddle (with added parameter)

like image 125
8 revs, 6 users 61% Avatar answered Sep 27 '22 21:09

8 revs, 6 users 61%


I put a jquery plugin here

VERY SHORT VERSION

$('#myDiv').css({top:'50%',left:'50%',margin:'-'+($('#myDiv').height() / 2)+'px 0 0 -'+($('#myDiv').width() / 2)+'px'}); 

SHORT VERSION

(function($){     $.fn.extend({         center: function () {             return this.each(function() {                 var top = ($(window).height() - $(this).outerHeight()) / 2;                 var left = ($(window).width() - $(this).outerWidth()) / 2;                 $(this).css({position:'absolute', margin:0, top: (top > 0 ? top : 0)+'px', left: (left > 0 ? left : 0)+'px'});             });         }     });  })(jQuery); 

Activated by this code :

$('#mainDiv').center(); 

PLUGIN VERSION

(function($){      $.fn.extend({           center: function (options) {                var options =  $.extend({ // Default values                     inside:window, // element, center into window                     transition: 0, // millisecond, transition time                     minX:0, // pixel, minimum left element value                     minY:0, // pixel, minimum top element value                     withScrolling:true, // booleen, take care of the scrollbar (scrollTop)                     vertical:true, // booleen, center vertical                     horizontal:true // booleen, center horizontal                }, options);                return this.each(function() {                     var props = {position:'absolute'};                     if (options.vertical) {                          var top = ($(options.inside).height() - $(this).outerHeight()) / 2;                          if (options.withScrolling) top += $(options.inside).scrollTop() || 0;                          top = (top > options.minY ? top : options.minY);                          $.extend(props, {top: top+'px'});                     }                     if (options.horizontal) {                           var left = ($(options.inside).width() - $(this).outerWidth()) / 2;                           if (options.withScrolling) left += $(options.inside).scrollLeft() || 0;                           left = (left > options.minX ? left : options.minX);                           $.extend(props, {left: left+'px'});                     }                     if (options.transition > 0) $(this).animate(props, options.transition);                     else $(this).css(props);                     return $(this);                });           }      }); })(jQuery); 

Activated by this code :

$(document).ready(function(){     $('#mainDiv').center();     $(window).bind('resize', function() {         $('#mainDiv').center({transition:300});     }); ); 

is that right ?

UPDATE :

From CSS-Tricks

.center {   position: absolute;   left: 50%;   top: 50%;   transform: translate(-50%, -50%); /* Yep! */   width: 48%;   height: 59%; } 
like image 22
molokoloco Avatar answered Sep 27 '22 22:09

molokoloco