<edit>
我实际上猜到会发生这种情况,但发布后几秒钟我就收到了“可能重复”的标志,这是不合适的!这个问题是关于 CSS 值 and 与 CSS 属性名称无关所以这不是重复的this https://stackoverflow.com/questions/17487716/does-css-automatically-add-vendor-prefixes/ or this https://stackoverflow.com/questions/8889014/setting-vendor-prefixed-css-using-javascript问题!!!这也不是一个骗局this one https://stackoverflow.com/questions/21819801/setting-flexbox-display-with-jquery-for-multiple-browsers因为我要求一个通用的解决方案。
如果您仍然不相信或不确定这篇文章的主题,也许您看一下这个问题的底部:“我不寻找什么”和“谁没有完成工作”</edit>
如果需要,有没有办法通过 JavaScript 在客户端设置适当的供应商前缀 CSS 值?
我在寻找什么
例如:background: -prefix-linear-gradient{...}
我很想获得一个关于如何通过 JavaScript 在客户端设置供应商前缀 CSS 值的通用解决方案。除此之外,问题是关于如何在客户端执行此操作并且不作为构建过程的一部分(例如POSTcss)。
但我也很欣赏任何提示
- JavaScript / jQuery 插件可以完成工作或
- 额外的资源可以让我自己解决这个问题。
正如你所看到的,我已经自己给出了答案。但我仍在寻找更好的解决方案,因为 Autoprefixer 的有效负载约为 626 KB!
使用案例场景
/*
Unprefixed version of "linear-gradient" will only work for
browsers: IE10+, FF16+, Chrome26+, Opera12+, Safari7+.
So how to generate a prefixed version on the fly if necessary?
*/
var aVal = ['linear-gradient(to bottom, #fefefe 0%,#aaaaaa 100%)', 'linear-gradient(to bottom, #aaaaaa 0%,#fefefe 100%']
style = document.getElementsByTagName('BODY')[0].style,
i = 0;
(function toggle () {
if ( i++ ) { i = 0; }
style.background = aVal[ i ];
/* here we need something like:
style.background = parseForPrefix( aVal[ i ] );
*/
setTimeout(toggle, 2000)
})();
* {
height: 100%;
margin: 0;
padding: 0;
width: 100%;
}
Unprefixed version of "linear-gradient" will only work for<br>
browsers: IE10+, FF16+, Chrome26+, Opera12+, Safari7+.<br>
So how to generate a prefixed version on the fly if nessecary?
或者想象一下类似的事情
jQuery('head').append('<style>body{background:linear-gradient(...)}</style>')
这应该是这样的
jQuery('head').append('<style>'
+ parseForPrefix('body{background:linear-gradient(...)}') +
'</style>')
instead.
我不寻找什么
例如:-prefix-transform: translate{...}
如何在 CSS 属性名称上使用供应商前缀的主题已经讨论得足够多了(而不是我所追求的)。
NOTE:我也完全了解用作部分的预处理器和后处理器构建过程。我的整个 CSS 工作流程基于“Grunt : SASS : PostCSS : Autoprefixer”,所以无需对此提出任何建议!
谁没有完成工作
-
-无前缀 http://leaverou.github.io/prefixfree/#test-drive在供应商前缀的 CSS 属性名称上做得很好,但不关心供应商前缀的 CSS 值。
- 不幸的是,jQuery 也是如此。
为了完成您所要求的操作,您需要一个参考来将当前使用的浏览器与所需的前缀进行比较;喜欢caniuse https://caniuse.com/。或者你可以用 CSS 做一些 mixins@支持规则 https://developer.mozilla.org/en-US/docs/Web/CSS/@supports,但这可能比它的价值更麻烦。
有一个现有的解决方案,自动前缀器 https://github.com/postcss/autoprefixer,但它需要你使用 postcss。自述文件包含各种构建工具插件的示例。我使用 SCSS 和 autoprefixer,我正在实现梦想。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)