J'ai mis un plugin jquery ici
VERSION TRÈS COURTE
$('#myDiv').css({top:'50%',left:'50%',margin:'-'+($('#myDiv').height() / 2)+'px 0 0 -'+($('#myDiv').width() / 2)+'px'});
VERSION COURTE
(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);
Activé par ce code :
$('#mainDiv').center();
VERSION DU PLUGIN
(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);
Activé par ce code :
$(document).ready(function(){
$('#mainDiv').center();
$(window).bind('resize', function() {
$('#mainDiv').center({transition:300});
});
);
C'est bien ça ?
UPDATE :
De CSS-Tricks
.center {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%); /* Yep! */
width: 48%;
height: 59%;
}
21 votes
Il s'agit davantage d'une question de CSS que de jQuery. Vous pouvez utiliser des méthodes jQuery pour vous aider à trouver le positionnement inter-navigateurs et à appliquer les styles CSS appropriés à un élément, mais l'essentiel de la question est de savoir comment centrer un div à l'écran à l'aide de CSS.
0 votes
Voici un autre plugin. alexandremagno.net/jquery/plugins/center
2 votes
Si vous centrez un div sur l'écran, vous utilisez peut-être un positionnement FIXE. Pourquoi ne pas simplement faire ceci : stackoverflow.com/questions/2005954/ . La solution est purement CSS, elle ne nécessite pas de javascript.
0 votes
Je suis d'accord, la méthode JavaScript n'est pas du tout conviviale. Surtout dans les différents navigateurs.