關于elementUI中Cascader 級聯選擇器高度問題的解決方案
在使用elementUi級聯選擇器時,如果里面的option太多,導致它撐滿整個屏幕,網上找了挺久的解決方案,都是說在全局設置它的高度,這個方法有效,但是這種方式我忍不了,因為它會影響到全局Cascader 樣式,以下設置意味著整個項目中的所有級聯選擇器都是300px,那如果我在別的頁面沒那么多option,豈不意味著也顯示300的高度。
.el-cascader-panel { height: 300px; }
我實在忍不了,于是乎,先給出解決方案:
看了一下elementui的介紹,它有個屬性:proper-class,時自定義浮層類名,想必這里大家知道怎么解決了,就是單獨給這個頁面的Cascader 設置獨立的樣式
![]()
<el-cascader popper-class="my_cascader"></el-cascader> <style>//這里不要scoped,因為要作為全局樣式拋出去 .my_cascader .el-cascader-panel{ height: 400px !important; } </style>
首先,為什么寫個全局樣式就可以呢,因為級聯選擇器是動態生成的,它不受vue控制,看了生成的html才發現,它生成的位置已經是在vue控制范圍之外了,看下面這個圖,

所以我們寫在<style lang="less" scoped> scoped的樣式就沒辦法生效,所以要寫一個全局的樣式,然后因為它提供了proper-class屬性,我們就可以通過類選擇器,選擇到我們當前頁面生成的Cascader ,這樣就不會影響到其他頁面的Cascader 了。
這個方案,會比直接設置全局樣式好一些。當然也有缺點,就是你每用一個Cascader就要設置一次高度,如果你這個項目有幾十個Cascader(應該不會這么多吧),那就在頁面就會全局生成幾十個style,當然,各有各的好處,我自己覺得還是不要影響別的頁面的樣式和能單獨控制當前頁面樣式,會比較重要,也比較靈活
只能說element-ui在這個上面,對于使用者來說,還是比較不友好的。

浙公網安備 33010602011771號