2013-02-26 10 views
7

Ho bisogno di posizionare un elemento div al centro dello schermo. Ho trovato un semplice codice qui sotto, ma ho bisogno del centro della schermata EFFETTIVA, non "altezza totale/2" della pagina!Come posizionare un elemento div al centro della schermata ACTUAL? (JQuery)

qui è il codice Jquery che centra un elemento ma non lo schermo effettivo;

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

come ho detto, ho bisogno di calcolare le dimensioni effettive dello schermo (come 1366 * 768 o qualsiasi altra cosa gli utenti ridimensionate loro browser) e posizionare l'elemento al centro dello schermo. quindi, se scorro la pagina, il centro dovrebbe essere sempre al centro, di nuovo.

+0

[Questa risposta] (http://stackoverflow.com/questions/504052/determining-position-of-the-browser-window-in-javascript) potrebbe farti andare nella giusta direzione. È piuttosto una vecchia discussione quindi sono sicuro che ci sia una bella libreria che avvolge le diverse chiamate richieste per i diversi browser – Matthew

+0

@Matt C'è stato un commento che dice che IE ora accetta screenX e screenY. Quindi ora è compatibile con i browser incrociati. :) –

risposta

10

Se stai bene con l'utilizzo di fixed posizionamento invece di absolute, è possibile utilizzare qualcosa di simile al seguente:

jQuery.fn.center = function() 
{ 
    this.css("position","fixed"); 
    this.css("top", ($(window).height()/2) - (this.outerHeight()/2)); 
    this.css("left", ($(window).width()/2) - (this.outerWidth()/2)); 
    return this; 
} 

$('#myDiv').center(); 
$(window).resize(function(){ 
    $('#myDiv').center(); 
}); 

Demo: http://jsfiddle.net/GoranMottram/D4BwA/1/

+1

risolto il problema, grazie! –

0

provate questo:

var width=$("#div").css("width"); 
var half=width/2; 
$("#div").css("marginLeft","-"+half+"px"); 

Cambiare #div con il selettore.

+0

Ancora ... Se leggi attentamente, la domanda riguarda il centraggio VERTICAL e stai proponendo il centraggio ORIZZONTALE. – Havok

1

si works..take questa immersione come #sample

dare il suo stile css come

#sample{ 
margin-left:auto; 
margin-right:auto; 
width:200px;//your wish 
} 

pensano che funziona ..

+0

Se si legge attentamente, la domanda riguarda la centratura verticale e si propone la centratura ORIZZONTALE. – Havok

+0

e non funzionerà con elementi fissi –

Problemi correlati