css和jQuery在Firefox中关于scrollbar和right:0px的行为不一致

css和jQuery在Firefox中关于scrollbar和right:0px的行为不一致,jquery,css,firefox,Jquery,Css,Firefox,我有一个,如果你看它在铬或IE的作品很好。只需单击橙色框,框就会滑出,再次单击,框就会返回到原来的位置 但是,如果您在Firefox中查看它(确保滚动条显示在右下角的框架中),那么定位该框的CSS right: -290px; 设置相对于滚动条左边缘的位置,如我所期望的 但是jQuery(注意=-290px,它应该将其重置为第二次单击时的位置) 设置相对于滚动条右边缘的位置,给出17px的不一致性 这是一个已知的错误,还是我只是在某个地方弄错了。如果它是一个bug,解决方法是什么?可能与fir

我有一个,如果你看它在铬或IE的作品很好。只需单击橙色框,框就会滑出,再次单击,框就会返回到原来的位置

但是,如果您在Firefox中查看它(确保滚动条显示在右下角的框架中),那么定位该框的CSS

right: -290px;
设置相对于滚动条左边缘的位置,如我所期望的

但是jQuery(注意=-290px,它应该将其重置为第二次单击时的位置)

设置相对于滚动条右边缘的位置,给出17px的不一致性


这是一个已知的错误,还是我只是在某个地方弄错了。如果它是一个bug,解决方法是什么?

可能与firefox处理滚动条宽度的方式不同于webkit有关,并且firefox最终以这种方式解决了它(检测浏览器是否有FF,滚动条是否可见,如果可见,则添加17px的右边距,虽然不漂亮,但可以正常工作)

编辑-添加,并在浏览器窗口最终由用户缩放(或调整大小)的情况下修复元素的位置


这也会起作用。我也遇到过类似的问题,那就是firefox对滚动条的处理方式不同。此解决方案不适用于jQuery1.9及更高版本。你现在应该使用特征检测,但我还没有开始。希望这有帮助:)


谢谢我看了看。。。也许我错了,但我认为它们是不同的问题,可能是相关的。这似乎与jQuery有关。@Stanto谢谢你想自己做一个答案吗?谢谢,不,我只是做了一个编辑,以便人们可以看到你的小提琴。。。谢谢我明天会接受这个答案。
$('#slideClick').toggle(function() {
                $(this).parent().animate( { right: '0px' }, {queue:false, duration: 500});
            }, function() {
                $(this).parent().animate( { right: '-290px' }, {queue:false, duration: 500});
            });
    $('#slideClick').toggle(function() {
        $(this).parent().animate( { right: '0px' }, {queue:false, duration: 500});
    }, function() {
        $(this).parent().animate( { right: '-290px' }, {queue:false, duration: 500});

        // If UA is firefox and vert scrollbar present
        if ( ( navigator.userAgent.toLowerCase().indexOf('firefox') > -1 ) && ( $(document).height() > $(window).height() ) ) {
            $('#slideOut').css('margin-right', '17px');
        }
    });
    jQuery(function($) {
        $('#slideClick').toggle(function() {
            $(this).parent().animate( { right: '0px' }, {queue:false, duration: 500});
        }, function() {
            if ($.browser.mozilla && ($(document).height() > $(window).height()))
            {
                $(this).parent().animate({right: '-275px'},500);
            }
            else $(this).parent().animate( { right: '-290px' }, {queue:false, duration: 500});
        });
    });