Reputation: 3
I have made jsfiddle cointaing parent div and few childs divs. I have properly added z-index, but as soon as i move object the z-index is gone. The JS might be buggy, because I dont really know how to program in it. Can anyone please help?
Here is the js:
var img = $('#pointer');
var offset = img.offset();
var mouseDown = false;
function mouse(evt) {
if(mouseDown ==true){
var center_x = (offset.left) + (img.width() / 2);
var center_y = (offset.top) + (img.height() / 2);
var mouse_x = evt.pageX;
var mouse_y = evt.pageY;
var radians = Math.atan2(mouse_x - center_x, mouse_y - center_y);
var degree = (radians * (180 / Math.PI) * -1) + 90;
img.css('-moz-transform', 'rotate(' + degree + 'deg)');
img.css('-webkit-transform', 'rotate(' + degree + 'deg)');
img.css('-o-transform', 'rotate(' + degree + 'deg)');
img.css('-ms-transform', 'rotate(' + degree + 'deg)');
}
}
img.mousedown(function (e) {
mouseDown=true;
$(document).mousemove(mouse);
});
$(document).mouseup(function (e) {
mouseDown = false;
})
var resizeHandle = document.getElementById('marker');
var pointer = document.getElementById('pointer');
resizeHandle.addEventListener('mousedown', initialiseResize, false);
function initialiseResize(e) {
window.addEventListener('mousemove', startResizing, false);
window.addEventListener('mouseup', stopResizing, false);
}
function startResizing(e) {
/*pointer.style.width = (e.clientX - pointer.offsetLeft) + 'px';*/
pointer.style.height = (e.clientY - pointer.offsetTop) + 'px';
}
function stopResizing(e) {
window.removeEventListener('mousemove', startResizing, false);
window.removeEventListener('mouseup', stopResizing, false);
}
Upvotes: 0
Views: 95
Reputation: 171
Browsers render elements with a transform
a little different from regular elements. In this case it looks like the negative z-index is ignored because its parent has a transform. If you rewrite the html/css a bit to make all z-index values positive, it works.
In this case I've moved the red outline and white background of your #pointer
to a #pointer::before
psuedo-element, and changed #koule2
's z-index to 0.
You can also replace the ::before
with an actual element if you prefer.
#pointer {
position:absolute;
height:150px;
top:82px;
width:50px;
left:100px;
}
#pointer::before {
content: '';
position: absolute;
height:100%;
top:0;
width:100%;
border-color: red;
border-style: solid;
border-width: 2px 2px 0 2px;
left:-2px;
background-color: white;
z-index: 10;
}
Example: https://jsfiddle.net/x3tqj1h7/
Upvotes: 1