修复了 Firefox 中 jQuery 动画位置不准确的问题

标签 jquery firefox jquery-animate position fixed

我在使用 jQuery 在 Firefox 中设置固定位置的动画 div 时遇到问题。 有一个 div,当单击关闭链接时,它应该部分移离屏幕;当单击打开链接时,它会移回屏幕。 动画在 Chrome 和 Opera 中运行良好,但在 Firefox 中它移动到稍微不同的位置。好像动画不完整。因此,打开和关闭链接在动画之后是不可见的,因为它们仍然位于浏览器窗口边框后面。

火狐版本:19.0.2 jQuery 版本:1.9.1

jQuery 代码:

$(document).ready(function(){
    $("#calc_close").click(function(){
        $("#calc").animate({right:'-121px'});
        $("#calc_open").show();
        $("#calc_close").hide();
        $("#state").val("2");
        $.post('calc_state_update.php', $('#calc_op_form').serialize());
        });
    $("#calc_open").click(function(){
        $("#calc").animate({right:'0px'});
        $("#calc_open").hide();
        $("#calc_close").show();
        $("#state").val("1");
        $.post('calc_state_update.php', $('#calc_op_form').serialize());
        });
    });

HTML 代码:

<div id="calc" class="<?php if($calc == 1){ echo 'calc_opened'; } else { echo 'calc_hidden'; } ?>">
        <h4>Title</h4>
        <p>
            Some text in Czech :)           
        </p>
        <p>
            Click here...           
        </p>
        <div id="calc_open" class="<?php if($calc == 1){ echo 'calc_op_hidden'; } else{ echo 'calc_op_visible'; } ?>"><a href="#" title="Zobrazit okno">&laquo;</a></div>           
        <div id="calc_close" class="<?php if($calc == 1){ echo 'calc_op_visible'; } else{ echo 'calc_op_hidden'; } ?>"><a href="#" title="Skrýt okno">&raquo;</a></div>
    <form id="calc_op_form" method="POST" action="calc_state_update.php">
        <input type="hidden" name="state" id="state" value="1">
    </form>     
    </div>

最后是 CSS:

#calc
{
width: 109px;
height: 152px;
background-color: #fff;
background-image: url(./img/calc_bg.png);
background-repeat: repeat-y;
border: 1px #646161 solid;
border-left-color: #563928;
border-right: none;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
display: block;
top: 137px;
position: fixed;
padding: 0px 6px 0px 25px;
}
.calc_hidden
{
right: -121px;  
}
.calc_opened
{
right: 0px; 
}

非常感谢您的任何想法!

最佳答案

我解决了这个问题。我尝试更改动画坐标格式

-=121px

我也尝试过使用百分比,但都不起作用。 解决方案是对边距进行动画处理,而不是对位置进行动画处理。 所以我在 CSS 中的 #calc 中添加了一行

margin-right: 0px;

并像这样更改了 jQuery

 $("#calc").animate({marginRight:'-121px'});

现在在所有浏览器中都能完美运行。我希望这会对某人有所帮助。

关于修复了 Firefox 中 jQuery 动画位置不准确的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15419711/

相关文章:

css - 带有轮廓和伪元素的 Firefox 中的奇怪行为

jquery - 调整 jQuery 的大小以自动脚本工作......在所有链接上

javascript - 如何从 Firefox 插件在网页中插入图像?

javascript - Android Firefox 版本 25 及更高版本无法重定向到任何地方?

javascript - 将div滑动到屏幕顶部

javascript - jQuery 滑动并延迟淡出不起作用

javascript - 如何构建此菜单

javascript - 在 html 测验网站中一次显示一个问题

jquery - 将枚举值传递到jQuery网格过滤器

javascript - 动态生成html和js,生成意外的引用