element-ui相关的注意事项(一)

2,233 阅读3分钟

平时element-ui用的比较多, 所以难免就会遇到一些坑。第一次在掘金写文章,各位多多包涵。

在工作中,作为前端开发,和UI合作是很正常的事,因此即使用的是UI框架,UI设计师也会把它改的面目全非,当然这样说有点夸张,总来的说就是肯定会在原来的基础上进行改动,那么前端就必须得去重新写样式,将element-ui本身的样式给覆盖掉。

所以这里提两个组件,一个select组件,一个是table组件中的show-overflow-tooltip属性。

1.对于select组件,不知道大家平时是否有注意到select组件的下拉框的dom节点的位置在哪里,可以在element-ui的官网中查询select,之后打开控制台,可以看到右边蓝色的地方对应的就是select的下拉框。 当然更重要的是我们注意到,两个红框的位置,我们知道平时写的样式不能随便写全局样式,否则很容易影响到别的页面的样式,但是在这里,却不得不写全局样式,并且不能被嵌套在任何一个class里面(一种情况除外), 否则该样式只会存在于id为app的这个dom树下,而select的下拉框本身又是跟app是同一级的,因此在app下改变select-dropdown的样式并不会生效。

下面给一个例子来证明我们修改的样式没有生效

我个人觉得一般情况下很容易因为select在class为container的div下,因此在写样式的时候, 也会将其进行包裹。然后就发现样式并没有改变。
原因刚刚我也说了,这是因为select组件的下拉框的dom节点是与app同一级的,因此我们不能够像平时那样去覆盖原有的样式, 而是应该独立出来。比如下面这样

然后我们就会发现样式生效了。

说到这里其实也没啥可说了,第二个注意事项就是el-table组件里面的show-overflow-tooltip属性了,长下面这样

实际上这个tooltip跟select的下拉框一样,都是跟app同一级的, 所以如果要修改tooltip的样式, 也必须全局修改。

不过也有可能出现一种情况,比如说A这个select的下拉框的某个选项被选中的时候显示红色,B的select的下拉框显示绿色的话怎么办呢,上面还说不能够将下拉框的class嵌套在某个class下,否则不会生效。 不过element为我们提供了一个属性,就是popper-class。

我们可以通过给popper-class设置一个class,然后将要覆盖的样式嵌套在这个class下,从而实现不同的select下被选中的颜色也不同。 例子如下,注意红框的内容
然后给对应的popper-class写下不同的样式,一个是被选中的时候是红色,一个是绿色
最终我们看一下效果

综上,如果有类似的需求的话,我觉得这不失为一种还算不错的方法。谢谢