手机端cssText无法赋值

最近在开发的时候发现一个cssText无法赋值的小问题,首先要问的是为啥会使用cssText呢? 有两个具体原因:

1、transition/animation的坑
   transition/animation等属性之能赋值一次,后续再进行赋值无论如何都写不上去了,相同的代码,在PC浏览器执行正常(当然,我会带上前缀),不信你可以试试。
   被逼无奈,只好使用cssText进行处理啦。
2、性能
   使用cssText一次性批量写入,有利于减少页面的重绘和重排,性能会有些提升

   综合以上两点,在代码中使用了cssText并使用replace来简单处理字符串,这块就不再废话了。 在使用过程中,碰到了一个写法的坑,就是比如这样写:

xx.style.cssText = xx.style.cssText.replace(/transition.*?;/, '');
这样是没法给xx.style.cssText赋值的,究其原因,猜测是由于cssText一旦变更,浏览器立马会开始进行重绘,所以当这样写的时候,浏览器不会去写xx.style.cssText的值。那么应该怎么写呢? 其实你只要:

var text = xx.style.cssText;
xx.style.cssText = text.replace(/transition.*?;/, '');

这个点给到我的感觉就是,pc到手机端的各种奇怪的坑,确实需要不断积累和发现,也需要有扎实的基础和解决各种奇葩问题的能力。

Table of Contents