uniApp挖坑指南:
1.
一切涉及到要获取Dom进行操作的方法都不能快设备跨端编译,微信端与app都不能获取到document window 等等。
2.
先结论:不要尝试修改默认组件的css样式。例如:scroll-view,swiper等等,使用less或者是scss,必定尝试着“deep”或“>>>” 进行深度查找来修改样式,但是仅仅只会在h5端进行生效,编译到微信端,并未生效(原因:编译过后的dom节点与h5编译过后的节点不一致,节点上的class,子级节点数量都可能不一致)
下面以scroll-view 实例说明:
(1) H5编译的结果为:
从父级到最里边层级依次为(标签名/className):
uni-scroll-view =》uni-scroll-view =》uni-scroll-view =》uni-scroll-view-content =》uni-view 所以一共是5层;一个scroll-view编译成h5后 ,生成了uni-scroll-view =》uni-scroll-view =》uni-scroll-view =》uni-scroll-view-content 这样四层dom
(2)我们再看看微信小程序端编译的结果为:
好家伙:scroll 就是只有一层;近乎是没有编译(uniapp与微信过于类似【不清楚他们的关系】),所以问题来了,当现在在uni-scroll-view上面设置的css样式会在微信端生效吗?答案是肯定的:不会。 所以这时候:想要所有端样式一致怎么办?请使用“条件编译”;
条件编译官网链接:https://uniapp.dcloud.io/platform
3.
Scroll-view 组件使用踩坑(横向滚动)
当你使用:scroll-x属性的时候,发现并不能实现横向滚动,仔细查看官网api
也并没有发现任何问题,在网上并没有发现好的方法,也可能我这其他样式影响吧。
但是即使我不写任何样式,也不能换行,握草:完全蒙蔽。
仔细一想(原因): view默认是block元素,而他的父级也没有任何操作(flex布局),
那就肯定会换行呀! 那还滚动个啥!
解决方法:
将其scroll-view 样式添加:white-space: nowrap; view添加display: inline-block;
不得不吐槽:这个封装封装了个半成品。多两句代码要死吗?不然设置个scroll-x为true;有什么用呢。
注意:最好不要手动修改scroll-view的默认样式(所有的uniapp组件):你要跨端的话,h5端当我没说(但是养成好的习惯总是好的)。