我需要通过JS和transition属性设置css属性。我想通过 JS 添加供应商前缀。该脚本不适用于 cssText,没有它们,只会添加一个没有前缀的过渡。如何通过 JS 添加前缀转换?
document.addEventListener('DOMContentLoaded', () => {
class MenuToggler{
constructor(data){
this.menuTriggerSelector = data.menuTriggerSelector;
this.menuSelector = data.menuSelector;
this.type = data.type || 'appear'; //type of Apperance
this.menuTrigger = document.querySelector(`${this.menuTriggerSelector}`);
this.menu = document.querySelector(`${this.menuSelector}`);
this.transitionTime = data.transitionTime || '.25s';
this.init();
}
init(){
if (this.type == 'appear'){
// add first styles, makes elem invisible and untouchuble
this.menu.style.height = '0px';
this.menu.style.opacity = '0';
this.menu.style.transition = `opacity ${this.transitionTime} linear ${this.transitionTime}, height 0s linear 0s`;
this.menu.style.cssText = `-webkit-transition: opacity ${this.transitionTime} linear ${this.transitionTime}, height 0s linear 0s`;
this.menu.style.cssText = `-o-transition: opacity ${this.transitionTime} linear ${this.transitionTime}, height 0s linear 0s`;
}
}
}
const menuToggler1 = new MenuToggler({
menuTriggerSelector: '.burger',
menuSelector: '.links-wrapper'
});
});
使用kebab-case -> camelCase
-webkit-transition变成webkitTransition更新:上述属性可能不会同时存在于所有浏览器中
...因此,无法安装它们并在控制台中查看它们。
如果你想通过JS设置前缀,你需要检查你要找的属性是否存在。在每一行代码中都这样做是不明智的。
我们正在编写一个小型库。我们的任务是为任何浏览器委派正确的前缀设置,而不使用这些相同的前缀。
还要注意属性的顺序,没有前缀的属性应该总是最后给出。否则,可能是浏览器支持
transitionand-webkit-transition,而你最后指定的正好是-webkit-*,那么就会应用。反过来,这可能会导致许多性能问题,因为“幕后”的前缀属性可以处理错误。