2013-02-25 22 views
5

Ecco un breve demo. Voglio rendere trascinabile un dialogo. È orizzontale centrato via css nel seguente modo:jQuery-UI trascinabile: div non segue il mouse correttamente orizzontale

div.dialog-container { 
    position: absolute; 
    left: 0; 
    right: 0; 
    margin: auto; 
} 

La mia finestra di dialogo contiene un'intestazione e un div di contenuto. L'intera finestra di dialogo deve essere trascinata trascinando l'intestazione. Così ho usato il widget di jQuery UI-.draggable() in questo modo:

$("div.dialog-container").draggable({ 
    handle: "div.dialog-header" 
}); 

Il problema è: trascinare la finestra di dialogo intorno opere, ma non il modo in cui si intende. Verticalmente la finestra di dialogo segue il mouse perfetto ma orizzontalmente segue il mouse troppo lento quindi è possibile lasciare la finestra di dialogo mentre si trascina (ad esempio fare clic sull'intestazione sulla destra e trascinare la finestra di dialogo a destra). La cosa interessante è: Rimozione di "margine: auto;" corregge il problema ma l'elemento non è più centrato. Centrare il div con javascript non è un'opzione. Hai qualche idea su come risolvere questo problema?

risposta

4

Se la finestra ha una larghezza fissa, provare

left: 50%; 
margin: auto; 
margin-left: -200px; 

DEMO

+0

La tua demo non funziona per me. Non segue ancora correttamente il mouse ...? – tmuecksch

+0

Il collegamento demo è stato interrotto. Aggiustato... – Mennny

2

LIVE DEMO

div.dialog-container { 
    height: 250px; 
    width: 400px; 
    border: 1px solid black; 
    position: absolute; 
    left: 50%;    /* center */ 
    margin-left:-200px; /* width/2 */ 
    top: 100px; 
} 
+1

Grazie. Questa soluzione ha funzionato. Accetterò questa risposta non appena l'overflow dello stack mi consentirà di farlo. – tmuecksch

+0

@tmuecksch prego! aggiunto una demo con altre 2-3 correzioni –

+1

@roXon, ho adorato il modo in cui hai fatto 'LIVE DEMO' – Jashwant

Problemi correlati