debug按钮样式异常「完整版」

大家看这个按钮

他仿照官方 color-ui 的例子写

官方的例子是这样的

然后呢他的样式是这样的

然后他就在群里问这是什么原因

然后在他整理demo的过程中

因为他要删除一些跟这个

问题不相关的一些文件

所以他发现只要删掉这个文件(的引入)

就没有问题了

我们来看一下

就这个文件我们把它先注掉

不引入这个文件

我们再来看一下

好这就可以了

那到底是哪个样式引起的呢

我们先把它放回来

我们打开这个文件哈

大家看这么多

这种情况下我们怎么去定位呢

我们用删代码的方法

现在是520行

我们删到250行(左右)

我们删到这

看一下

刷新

还是不行

我们再删

我们这回再删到这吧

大家看还是不行

一共是97哈我们这回删掉

删到这吧

刷新

还是不行

再删

删到这吧

刷新

还是不行

把这个样式再删掉

嘿可以了

也就是说就这个样式引起的

那这个样式里边都有啥呀

display: flex

box-sizing: boarder-box

然后 flex-direction

我们把这个注释掉

好这回就可以了

也就是说影响这个问题的原因

其实就这个样式

我们把这再恢复回来

520行

去到第一个

把它注掉

刷新

好这就可以了

那这是为什么呢

我们来详细看一下他的样式

大家看这是一个 flex 布局

然后呢他也写了 flex direction

大家看啊

在这里

flex direction

他在

原生的 color-ui 里边是有声明的

大家看他是要用 column 布局的

我们来看官方的例子

flex direction

大家看他也是column布局

但是呢在这里边

如果我们把这句话再放回来

好我们再检查一下元素

大家看

他是 flex direction 等于row布局

也就是说

官方的例子这么写的话

他是

flex direction 等于 column 布局

但是在他的项目里

同样的写法就变成了row布局

也就是说被这个样式所覆盖掉了

那为什么同样是这个写法

这个样式却没有生效呢

那我们就要去看

引用这个两个 css(文件)的地方

这里

他是先引用的color-ui

然后后引用的这个样式文件

那我们试一下把color-ui 放后面引用

还是不可以

那为什么呢

正常的话

我们放到后边都是可以的了

我们先去找一下他最终生成的样式

我们点这里

然后按 option + command + F

或者点这选 search

然后呢我们随便搜一个这里边的样式

比如说随便找一个这样的

大家看在这

那这个样式太多了

我们先把它拷贝出来

到这结束

到这(开始)

直接拷贝他是有很多 \n 的

那这样我们去到 Console

然后用 console.log

把它打印出来

大家看!然后把它复制一下

这直接有 copy

(我把它放大一点)

粘贴

好然后我们再搜一下

这个吧

(flex不行太多了)

我们搜这个吧

在这,大家看!这是6,000多行

也就是说这个(错误的)样式文件被渲染到了

第6,000多行

我们再来看这个(正确的)样式文件

我们再搜一个比较具有特征性的

比如说self-center

这个(正确的)是在4,000多行,也就说:

虽然我们把这个 main.css (正确的)放在了

他下面去引入

但是在最终生成的样式文件中

这个 main.css 还是在它(错误的) 前面

那为什么呢

唯一的区别就是这个(错误的)用了 sass

他用的是 .scss

那在渲染过程中

这种文件一定会经过编译

也就是说:

引擎一定会优先处理原生 css 文件

然后再去编译这种sass文件

所以我们要想让 color-ui 的 css

在最终生成的时候跑到它(qui_weex.scss)的下面

我们有一个办法

我们可以直接把这个文件改成

.scss 文件

我们试试

然后呢我们在这改

引用的时候也改成 scss

好我保存一下

大家看问题就解决了

好今天就到这里

谢谢大家

最后更新于