javascript - -webkit-transition 在使用 jQuery 进行转换时无效

标签 javascript jquery html css

问题

我正在为类似于 this answer 的转换设置转换.在 Chrome 上,我发现当我在 transition 之前使用转换设置 css -webkit-transition 时,转换的转换不起作用(转换立即发生而不是超过 5 秒 - 稍后查看演示):

$img.css('-webkit-transition', '-webkit-transform 5s');        
$img.css('transition', 'transform 5s');//move this line before the previous line and it works

解决方法

但以下确实有效:

  • 将第二行移到第一行之前。

  • 注释掉第二行。

  • 使用 JavaScript(我希望它能与 jQuery 代码完全一样,但它确实有效):

    img.style.setProperty("-webkit-transition", "-webkit-transform 5s");
    img.style.setProperty("transition", "transform 5s");
    
  • 使用 css class 然后 addClass:

    .transformStyle
    {
        -webkit-transition: -webkit-transform 5s;
        transition: transform 5s;
        ....
    

演示

您可以看到这些不同案例的演示 here .

信息

当我在 Chrome 开发工具中针对 jQuery 案例查看 element.style 时,我得到:

-webkit-transform: perspective(400px) rotateX(30deg);

(根本没有过渡样式)。

对于带有注释行的 jQuery,我得到:

-webkit-transition: -webkit-transform 5s;
transition: -webkit-transform 5s;
-webkit-transform: perspective(400px) rotateX(30deg);

对于 JavaScript,我得到:

-webkit-transition: -webkit-transform 5s;
transition: -webkit-transform 5s;
-webkit-transform: perspective(400px) rotateX(60deg);

因此,似乎当我在 jQuery 中注释掉该行时,transform 设置为 -webkit-transform 即使我明确设置它,JavaScript 也会发生这种情况只是为了转换

问题

  • jQuery 案例发生了什么?为什么设置 $img.css('transition', 'transform 5s'); 导致根本没有过渡。为什么将此行移到 -webkit-transition 行之前会导致事情突然起作用?

  • 为什么 JavaScript 的转换会自动设置为“-webkit-transform”?

要么是我遗漏了什么,要么是 Chrome/jQuery/JavaScript 正在做一些事情。我有一个使用 JavaScript 的解决方法,但我很想知道发生了什么,以防万一它可能会在 webkit/jQuery 的其他地方出现。我环顾四周并查看了 MDN page for transitions , 但没有找到任何东西。

最佳答案

按照你的第一个链接

p {
  -webkit-transform: translate(-100%, 0);
     -moz-transform: translate(-100%, 0);
      -ms-transform: translate(-100%, 0);
       -o-transform: translate(-100%, 0);
          transform: translate(-100%, 0);
  -webkit-transition: -webkit-transform 1s ease-in; /* Changed here */ 
     -moz-transition: -moz-transform 1s ease-in;
       -o-transition: -o-transform 1s ease-in;
          transition: transform 1s ease-in;
}

a:hover + p {
  -webkit-transform: translate(0, 0);
     -moz-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
       -o-transform: translate(0, 0);
          transform: translate(0, 0);
}

您不能直接在您的 css 中使用转换,因为您需要通过某些事件更改它,即悬停,然后您也可以使用 javascript 在您的代码中获取转换。

上面的 css 可以正常工作,因为它会更改悬停事件的转换。

关于javascript - -webkit-transition 在使用 jQuery 进行转换时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23674535/

相关文章:

html - Bootstrap-rails,如何改变车身尺寸?

javascript - AngularJS 中的动态 http post 参数名称

javascript - 修改后图像 slider 不起作用

asp.net - 单击后退按钮强制刷新页面

javascript - jquery 和 safari 7 - slipToggle 和 fadeToggle 不起作用

javascript - jQuery 使用什么正则表达式来验证电子邮件?

javascript - 为什么这个函数总是返回 "true1"

javascript - jQuery 从嵌套元素中获取元素属性

css - 带有内部样式表的表格宽度

html - CSS 图像重新对齐,不同的液晶显示器/屏幕