javascript - CSS3 在 FF 和 Chrome 中的过渡不一致

标签 javascript jquery html css

所以我创建了一个 CSS3 动画,它在不同的浏览器中表现不一致。这是一个快速而粗略的概述,我在最后添加了一个 JSFiddle 链接。

这是 CSS:

.cloned_object {
   position:absolute;
   background-color:white;
   width: 700px;
   height: 640px;
   margin: 0; /*for centering purposes*/
   -webkit-transition: width 1s, height 1s, top 1s, left 1s, margin 1s;
   -moz-transition: width 1s, height 1s, top 1s, left 1s, margin 1s;
   -ms-transition: width 1s, height 1s, top 1s, left 1s, margin 1s ;
   transition: width 1s, height 1s, top 1s, left 1s, margin 1s;
}

和 JS 函数:

$('.content_cell').on('click', function(event) {
        // if the user is on a browser older then IE9
        if ($.browser.msie && $.browser.version.substr(0,1)<10) {
            var $clonedElement = $( this ).clone(true).attr('class','cloned_object content_cell').appendTo('#mainContentTable');
            $clonedElement.css({left:$(this).position().left, 
                                top:$(this).position().top, 
                                opacity:1.0}) ;

            selectedPos = $(this).position();

            var currentPos = $('#invitedToChatCell').position();

            $clonedElement.animate({
                height:640, width:700, 
                //position:'absolute', 
                left:currentPos.left, 
                top:currentPos.top, 
                opacity:1.0 
            }, 500, function(){ $('.cloned_object > ul').toggle(); });

        } else {
            var currentPos = $('#invitedToChatCell').position();

            var $clonedElement = $( this ).clone(true).attr('class', 'content_cell').appendTo('#mainContentTable');
            $clonedElement.css({left:$(this).position().left, 
                                top:$(this).position().top}) ;

            $clonedElement.addClass('cloned_object');               
            $clonedElement.css({'margin-left':-$(this).position().left+125,
                                'margin-top':-$(this).position().top,
                                }) ;

            selectedPos = $(this).position();           

            $('.cloned_object > ul').toggle();
        }                   

        event.stopPropagation();
    });

我真的不明白为什么它会在不同的浏览器中有所不同。我希望有人能告诉我发生了什么......

Here is the jsFiddle link.如果您在两个浏览器中运行它,您将看到动画位置不同。在FF中,看起来盒子变大了,这就是我想要的。在 Chrome 中这很奇怪......

最佳答案

您的过渡明确要求对“顶部”和“左侧”进行动画处理。他们必须从某个地方开始,所以他们从零开始。这是一个奇怪的情况,因为“克隆元素”样式并不是为元素提供“顶部”和“左侧”值的样式,而是您的代码将它们直接放在元素上。

但是,您对边距进行动画处理; Chrome 似乎并没有太关注这一点。如果我把“top”和“left”属性从过渡中去掉,它会变得更像 Firefox。

在元素出现的同时对其应用过渡的概念让我有点困惑。我希望有人能提供更好的答案。

关于javascript - CSS3 在 FF 和 Chrome 中的过渡不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9195013/

相关文章:

javascript - 如何使用 Jest 模拟 native javascript 方法?

javascript - 未触发按钮事件(使用动态创建的类)

javascript - 在 Chrome 开发工具控制台中记录 jQuery 对象时显示元素?

jquery - 具有 Bootstrap 4 性能的 Angular 5?

java - 如何使用 HTML 中的复选框获取两个值?

javascript - 未捕获格式错误的表格行,单元格未定义。无法在数据表中生成 pdf

javascript - JS 创建的 html 链接不会在 chrome 中打开?

javascript - 连接缓冲区串口

javascript - DataTables 个别列搜索框与 colvis 冲突

javascript - 如何在 CSS/JavaScript 中用水平线显示 "Classic"组合分数?