i've got some simple javascript drag and drop boxes with hover effects. it has mouse event support for both firefox and internet explorer. everything works fine in firefox, but the css :hover effects were not working in ie. after some searching, i found that i needed to specify doctype for :hover to work in ie, so i did. then everything worked great in internet explorer, but the layout is messed up in firefox. specifically, they are not receiving positioning, and it looks like they just stack at the default location.
Code:<html> <head> <style type="text/css"> div.draggable, div.fixed { position:absolute; width:270px; height:70px; padding:10px; border:0px; color: #ffffff; background-color:#313C6F; } div.draggable:hover, div.fixed:hover { border:2px solid #333333; padding:8px; } div.fixed { background-color:#444444; } #follow { background-color:#772727; } #me { background-color:#28682E; } #where { } </style> <title>Follow Me</title> <script type="text/javascript"> var z = 1; //set initial z-index onload = init; //run function INIT on load function init() { //set initial parameters boxes = document.getElementsByTagName('div'); //get all divs on page var x = 10; //inital position x var y = 10; //initial position y for (i=0; i<boxes.length; i++) { //loop through all divs box = boxes[i]; //set current div box.left = x; //store position x box.style.left = box.left; //set position x box.top = y; //store position y box.style.top = box.top; //set position y y = y + 100; //next position y if (box.className == "draggable") { //if draggable if (navigator.appName == "Microsoft Internet Explorer") { box.onmousedown = followMeIE; } else { box.onmousedown = followMeFF; //run function FOLLOW ME on mousedown } } } } function followMeFF(e) { //allows draggable divs to follow cursor box = this; //set current div box.leftLoc = e.clientX-box.left; //locate relative mouse position x box.topLoc = e.clientY-box.top; //locate relative mouse position y box.style.zIndex = z++; //bring to top document.onmousemove = moveBoxFF; //run function MOVEBOX on mousemove document.onmouseup = freezeFF; //run function FREEZE on mouseup } function followMeIE() { //allows draggable divs to follow cursor box = this; //set current div box.leftLoc = event.clientX-box.left; //locate relative mouse position x box.topLoc = event.clientY-box.top; //locate relative mouse position y box.style.zIndex = z++; //bring to top document.onmousemove = moveBoxIE; //run function MOVEBOX on mousemove document.onmouseup = freezeIE; //run function FREEZE on mouseup } function freezeFF(e) { //return div to stationary document.onmousemove = ''; //clear div positioning function document.onmouseup = ''; //clear div freeze function box.left = e.clientX-box.leftLoc; //set final position x box.top = e.clientY-box.topLoc; //set final position y } function freezeIE() { //return div to stationary document.onmousemove = ''; //clear div positioning function document.onmouseup = ''; //clear div freeze function box.left = event.clientX-box.leftLoc; //set final position x box.top = event.clientY-box.topLoc; //set final position y } function moveBoxFF(e) { //set div position to follow cursor box.style.top = e.clientY-box.topLoc; //set position y box.style.left = e.clientX-box.leftLoc; //set potition x } function moveBoxIE() { //set div position to follow cursor box.style.top = event.clientY-box.topLoc; //set position y box.style.left = event.clientX-box.leftLoc; //set potition x } </script> </head> <body> <div id="follow" class="draggable">This is a draggable div.</div> <div id="me" class="draggable">This is another div you can drag.</div> <div class="fixed">But this one is not draggable.</div> <div id="where" class="draggable">This is one more draggable div.</div> <div class="fixed">This one is also not draggable.</div> </body> </html>


Reply With Quote

Bookmarks