8

它在Firefox中完美运行,但在Chrome和Opera中它不起作用。

<div> has position:fixed, and is .draggable()

除了firefox之外它不起作用

4

3 回答 3

11

不要在 CSS 中设置固定:它适用于 firefox、chromium、safari、iexplore

var div = $('#id');
div.resizable(
{
    stop: function(event, ui)
    {                       
        var top = getTop(ui.helper);
        ui.helper.css('position', 'fixed');
        ui.helper.css('top', top+"px");         
    }       
});
div.draggable(
{
    stop: function(event, ui)
    {           
        var top = getTop(ui.helper);
        ui.helper.css('position', 'fixed');
        ui.helper.css('top', top+"px");
    }
});

function getTop(ele)
{
    var eTop = ele.offset().top;
    var wTop = $(window).scrollTop();
    var top = eTop - wTop;

    return top; 
}
于 2012-04-20T13:14:06.623 回答
1

只需在您的 CSS 中使用:

#draggable{
    position:fixed !important;
}

如果你同时使用 draggable 和 rezisable,请从 CSS 中删除“!important”,然后将停止选项(拖动和调整大小停止时的回调)设置为该函数:

function stop(event){
    if(event.type === "resizestop"){
        var topOff = $(this).offset().top - $(window).scrollTop()
        $(this).css("top",topOff)
    }
    $(this).css("position","fixed")     
}   
于 2012-06-10T05:49:33.433 回答
0

如果你在 ...draggable(...); 上放置一个断点;您会看到它添加了位置:固定到 element.style。

只需使用 .style.position ="";

我的代码清除了样式,因此它将退回到 css 声明。对于较旧的 jquery ui 版本,您可能需要执行拖动停止处理程序。我对此表示怀疑。但绝对不是最新的。

于 2019-10-04T00:23:26.953 回答