简体   繁体   English

Javascript破坏z-index

[英]Javascript destroying z-index

I have made jsfiddle cointaing parent div and few childs divs. 我做了jsfiddle共同造父div和几个孩子的div。 I have properly added z-index, but as soon as i move object the z-index is gone. 我已经正确添加了z-index,但是一旦移动对象,z-index就会消失。 The JS might be buggy, because I dont really know how to program in it. JS可能有问题,因为我真的不知道如何在其中编程。 Can anyone please help? 谁能帮忙吗?

Here is the js: 这是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);
}

Browsers render elements with a transform a little different from regular elements. 浏览器渲染一个元素transform从常规元素有一点不同。 In this case it looks like the negative z-index is ignored because its parent has a transform. 在这种情况下,负Z索引似乎被忽略了,因为其父级具有转换。 If you rewrite the html/css a bit to make all z-index values positive, it works. 如果您稍微重写html / css以使所有z-index值均为正,则它可以工作。

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. 在这种情况下,我将#pointer的红色轮廓和白色背景移到了#pointer::before -element #pointer::before#pointer::before ,并将#koule2的z-index更改为0。

You can also replace the ::before with an actual element if you prefer. 如果愿意,还可以将::before替换为实际元素。

#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/ 示例: https//jsfiddle.net/x3tqj1h7/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM