遇到一个困扰多日的问题,在页面中生成了一个幻灯片组件,正常载入的时候是挺正常的,但是偶尔多刷新几次,图片的宽高会出现异常,离谱的是幻灯容器的宽度正常,图片大幅度溢出,而按钮位置无误。
以上的bug描述对解决问题毫无帮助,幻灯容器的宽高是由js根据图片元素页面实际宽高实时写入的,所以第一时间认为是css写法出了问题。各种修改方式不再赘述,反正就是连改了两天,尝试了在任意自适应语句块内都写一段幻灯组件的css语句无果之后,搜到一篇有点相关的文章,描述css通过文件方式载入后在页面读取完毕后产生预期外的动画效果的。大意是说如果直接将css写在页面内不会导致这样的问题,而以文件方式载入,则会导致css在文档未完全布局完毕前被加载,于是文档边布局边触发了transition。(事实上这个问题也一直困扰着博主)
但看完文章脑海里莫名闪过的却是这两个大字:“加载顺序”,查看了页面head部分的文件引用顺序,发现js文件早于css文件被加载,于是调换了一下加载的顺序,先引用css文件,再引用js文件,然后问题就解决了。回顾一下bug的原因,js的过早加载,可能导致了在js读取元素宽度的同时,css正努力的计算各元素的长宽,正碰上js老弟兄过来咨询,就随手抛出了一个还没有算完的结果,于是导致了宽高的异常。