2013-02-25 5 views
5

Hier ist eine kurze demo. Ich möchte einen Dialog ziehbar machen. Es ist horizontal zentriert über CSS auf die folgende Weise:jQuery-UI ziehbar: div folgt Maus nicht korrekt horizontal

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

Mein Dialogfeld enthält eine Kopfzeile und ein Inhalt div. Der gesamte Dialog wird durch Ziehen der Kopfzeile gezogen. So verwendete ich die jQuery-UI .draggable() Widget wie folgt aus:

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

Das Problem ist: den Dialog um Arbeiten ziehen, aber nicht so, wie es beabsichtigt ist. Vertikal folgt der Dialog der Maus perfekt aber horizontal folgt die Maus zu langsam so ist es möglich, den Dialog beim Ziehen um (zum Beispiel klicken Sie auf die Kopfzeile ganz rechts und ziehen Sie den Dialog nach rechts). Das Interessante ist: Entfernen von "margin: auto;" behebt das Problem, aber das Element ist nicht mehr zentriert. Zentrieren der div mit Javascript ist keine Option. Haben Sie Ideen, wie Sie dieses Problem beheben können?

Antwort

4

Wenn Ihr Dialog eine feste Breite hat, versuchen

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

DEMO

+0

Ihre Demo funktioniert nicht für mich. Es folgt immer noch nicht richtig der Maus ...? – tmuecksch

+0

Der Demo-Link wurde abgebrochen. Behoben... – 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

Danke. Diese Lösung hat funktioniert. Ich werde diese Antwort akzeptieren, sobald der Stapelüberlauf es mir erlaubt. – tmuecksch

+0

@tmuecksch du bist willkommen! eine Demo mit 2-3 weiteren Korrekturen hinzugefügt –

+1

@roXon, liebte ich die Art und Weise, wie Sie 'LIVE DEMO' – Jashwant