2

これがシナリオです。

親DIVで囲まれた、jQuery UI(バージョンは1.9.2ですが、実際には問題ではありません)を介してドラッグおよびサイズ変更できるロゴがあります。ドラッグ&サイズ変更でうまく機能します。

ただし、DIV を背景画像の真上に重ねようとすると、マウス クリックが上の DIV によってブロックされます。

HTML

<div id="appleLogo"></div>
<div id="frameBorder">
    <div id="draggableHelper" style="display:inline-block">
        <img id="image" src="http://www.google.com.br/images/srpr/logo3w.png" />
    </div>
</div>

JS

$('#draggableHelper').draggable({
    containment: "#frameBorder",
    scroll: false
});
$('#image').resizable();

CSS

#appleLogo {
    position: absolute;
    width: 400px;
    height: 400px;
    background-image: url(http://wbridgewaterschools.org/school/images/Apple%20logo.png);
    background-size: cover;
    opacity: 0.7;
    filter: alpha(opacity=70);
    z-index: 10;
}
#frameBorder {
    position: absolute;
    width: 400px;
    height: 400px;
    border: 1px solid #F00;
    overflow: hidden;
    z-index: 1;
}

より良いデモンストレーションのために、ここにjsFiddleがあります。上記の DIV をバイパスするにはどうすればよいですか?

ここに私が読んだいくつかの参考文献がありますが、このケースには当てはまりません:

4

2 に答える 2

1

編集: 新しいフィドル: http://jsfiddle.net/EVSZQ/5/

これがjsコードです:しかし、理解しやすいと思って最適化しませんでした...

$('#image').resizable();
$('#draggableHelper').draggable({
    containment: "#frameBorder",
    scroll: false
});

$('#appleLogo').on('mousedown', function(event){
    var gxstart = $('#image').offset().left;
    var gxend = $('#image').offset().left + $('#image').width();
    var gystart = $('#image').offset().top;
    var gyend = $('#image').offset().top + $('#image').height();  

    var mouseX = event.clientX;
    var mouseY =event.clientY;

    if( gxstart < mouseX )
    {
        if ( mouseX < gxend )
        {
            if(gystart < mouseY)
            {
                if(mouseY < gyend)
                {   
                    $('#draggableHelper').trigger(event);
                }
            }
        }
    }    
});
于 2013-09-26T11:23:52.637 に答える