Jquery可拖动外溢出隐藏?

时间:2013-10-10 07:26:28

标签: jquery jquery-ui overflow draggable

这就是我现在所拥有的,看看stackoverflow无处不在,所有解决方案都没有为我工作:(问题是我使用draggable和resizable在一些元素等图片,这是在容器中具有溢出属性的地方。那问题是draggable,我希望不要将该对象移动到页面顶部的图片上,但是元素总是在顶部的图片下面。如果我首先调整大小,我可以将元素移到图片,之前没有变化:(另一个问题是我首先要调整大小,第二个对象来自那个元素,只是覆盖它?

我已经为这两个修复尝试了很多解决方案,但没有运气。这就是我现在所拥有的

CSS

#zidomotac{
    width:100%;

}
#myWorkContent{
width:100%;

    overflow-x: scroll;

    white-space: nowrap;
    box-sizing:border-box;
    margin-bottom:20px
    }
.slikezamenjanje{
    width: 100px;
    float:left;
    display: inline-block;
    vertical-align: middle;
}
.slikezamenjanje img{
    max-height: 120px;
    overflow:hidden;
    width: 100%;
}

外部

<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
 <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

功能

<script type="text/javascript">
        $(document).ready(function() {
            $('.slikezamenjanje').draggable().resizable({
      aspectRatio: 16 / 9,
    });
        });
    </script>

HTML

<div id="zidomotac"><img src="http://www.vectorimages.org/09/0920100513111825424.jpg"></div>

<div id="myWorkContent">

  <div class="slikezamenjanje"><img src="http://placekitten.com/200/200/"/></div>
<div class="slikezamenjanje"><img src="http://placekitten.com/200/200/"/></div>

</div>

</div>

这是工作的jsfiddle http://jsfiddle.net/gorostas/CS93M/ 我希望有人能找到解决方案

EDITED

也许我可以首先调用resizable然后在draggable中?

更新

如果我像这样使用可拖动

        $(document).ready(function() {
$(".slikezamenjanje").draggable({
            revert: "invalid" ,
            helper: function(){
                $copy = $(this).clone();
                return $copy;},
            appendTo: 'body',
            scroll: false
        });
        });

我可以移动元素,但问题是它会回来吗?

1 个答案:

答案 0 :(得分:12)

我修复了小提琴,我希望它能做到你想要的! 你可以在这里试试: DEMO

我改变了什么:

JQuery:

$(function() {
    $( ".slikezamenjanje" ).draggable({
        revert: 'invalid',
        helper: 'clone',
        start: function(){ //hide original when showing clone
            $(this).hide();             
        },
        stop: function(){ //show original when hiding clone
            $(this).show();
        }
    });

    $( "#zidomotac" ).droppable({ //set container droppable
        drop: function( event, ui ) { //on drop
            ui.draggable.css({ // set absolute position of dropped object
                top: ui.position.top, left: ui.position.left
            }).appendTo('#zidomotac'); //append to container
        }
    });
});

我在你的容器上添加了一个可放置状态,因此你可以在里面拖放。 然后我使用了drop事件,它允许我获取被删除元素的元素(ui.draggable)和位置(ui.position)。

所以我用.css()设置绝对位置,然后用.appendTo()追加到容器。

对于.draggable(),我只是添加了启动和停止事件,以便在隐藏/显示克隆时显示/隐藏原始元素。

CSS:

/* Custom style for dropped element */
#zidomotac .slikezamenjanje { 
    position: absolute;
}

刚添加此类以应用已删除元素的样式。

希望我帮助你;)