Anzeige:
Ergebnis 1 bis 3 von 3

Thema: DIV in einem DIV per Drag&Drop verschieben (Opera Problem)

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.05.2005
    Ort
    Dortmund
    Beiträge
    31

    GELÖST - DIV in einem DIV per Drag&Drop verschieben (Opera Problem)

    Guten Morgen!

    Ich habe einen absolut positionierten DIV mit fixer Höhe/Breite, welcher wiederum einen einzelnen DIV enthält. Dieser ist größer als sein Parent und kann vom Benutzer mit der Maus verschoben werden - dies funktioniert wunderbar unter Webkit, Gecko und dem IE.

    Unter Opera 10 habe ich leider ein Problem. Positioniere ich das Child relativ, so wird es rechts gekürzt. Auch bei einer absoluten Positionierung tritt ein Fehler auf: verschiebt man das Child nach rechts, so ändert sich (trotz Größenangabe) die Breite des Parents.

    Ich gehe mal davon aus, dass es sich um einen Opera-Bug handelt. Trotzdem benötige ich eine Lösung und hoffe, dass hier vielleicht jemand einen dreckigen Workaround kennt

    Hier ist der Code:
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
    <html> 
    <head> 
    <title>test</title> 
    
    <script type="text/javascript"> 
       var objDrag = null; 
       var mouseX = 0; 
       var mouseY = 0; 
       var offX = 0; 
       var offY = 0; 
       var IE = false; 
    
       IE = document.all&&!window.opera; 
       if(navigator.appName == 'Microsoft Internet Explorer') 
       { 
          IE = true; 
       } 
    
       function init() 
       { 
          document.onmousemove = doDrag; 
          document.onmouseup = stopDrag; 
       } 
    
       function startDrag(objElem) 
       { 
          objDrag = objElem; 
    
          offX = mouseX - objDrag.offsetLeft; 
          offY = mouseY - objDrag.offsetTop; 
       } 
    
    
       function doDrag(e) 
       { 
              mouseX = (IE) ? window.event.clientX : e.pageX; 
          mouseY = (IE) ? window.event.clientY : e.pageY; 
    
          if (objDrag != null) 
          { 
             objDrag.style.left = (mouseX - offX) + "px"; 
             objDrag.style.top = (mouseY - offY) + "px"; 
          } 
       } 
    
       function stopDrag(e) 
       { 
          objDrag = null; 
       } 
    </script> 
    </head> 
    
    <body onload="init();"> 
       <div style="position:relative; width:600px; height:500px; border:1px solid black; overflow:hidden;"> 
          <div style="position:absolute; border:1px solid black; background-color:red; width:1000px; height:200px; cursor:pointer;" onmousedown="startDrag(this);"> 
             TEST 
          </div> 
       </div> 
    </body> 
    </html>
    [edited]
    Das Problem hing wohl mit meinen Benutzereinstellungen zusammen - unter einem anderen Benutzerkonto klappt es. So kann man auch seine Zeit verschwenden... *grummel*
    [/edited]
    Geändert von Lord Kefir (23-09-2009 um 14:53 Uhr)

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Ist kein Bug - Siehe CSS Stylesheet die display: * Definitionen.
    http://www.w3.org/TR/CSS2/visuren.html#propdef-display
    Geändert von undefined (25-09-2009 um 06:34 Uhr) Grund: Link eingefügt
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer
    Registriert seit
    04.05.2005
    Ort
    Dortmund
    Beiträge
    31
    Es lag bei mir daran, dass die Option "an Breite anpassen" aktiviert war. So kann man sich auch Zeit vertreiben...


    Gruß,

    Lord Kefir

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •