javascript - 在 Safari 上正确使用 Modernizr.prefixed 进行过渡和转换

标签 javascript jquery css safari modernizr

我有一个可以为页面上的元素添加动画效果的函数。它向该元素添加内联样式。在最简单的情况下,它添加了这些:

<div style="transition: transform 0.5s; transform: translateX(100px);">...</div>

但我想添加对旧版浏览器的支持,因此我使用 Modernizer.prefixed 来查找属性的正确前缀,但现在我在使用 Safari 时遇到问题。

我尝试使用此代码:

var cssTransformProperty = Modernizr.prefixed("transform");
var cssTransitionProperty = Modernizr.prefixed("transition");
$myElement
    .css(cssTransitionProperty, cssTransformProperty + " 0.5s")
    .css(cssTransformProperty, "translateX(" + margin + "px)");

但在 safari 上它尝试添加如下内容:

.css("transition", "WebkitTransform 0.5s")
.css("WebkitTransform", "translateX(100px)")

问题出在这里:"WebkitTransform 0.5s" - Safari 不理解这一行。如果我手动将其更改为 "-webkit-transform 0.5s" 它会按预期工作。

有没有办法告诉 prefixer 使用这种 css 格式而不是 js 格式?

最佳答案

是的,您可以,如 Modernizr docs指出:

Return values will also be the camelCase variant, if you need to translate that to hyphenated style use:

str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');

示例:

var str = Modernizr.prefixed('WebkitTransform'); 
str = str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-'); 
alert(str); //-webkit-transform

关于javascript - 在 Safari 上正确使用 Modernizr.prefixed 进行过渡和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31702993/

相关文章:

javascript - 具有单个元素的 JSON 数组

javascript - 带有 PHP 输入的 jQuery 对话窗口

jquery - 更改 daterangepicker 中的日期格式

javascript - 如何在包含动态元素的表中实现带有句点的书籍式索引?

html - 使用百分比 `width:100%` 考虑元素 `float:left`

html - 如何对中跨度

javascript 搜索数组的数组

javascript - 读取多个文件输入

jquery - CSS 中的 DIV onClick

html - 具有从主题继承的背景颜色的 Css 叠加