問題:
總是遇到用深度選擇器也修改不了elemenUi自帶樣式的問題。
以為是原生的bug绪妹。然后我再一次遇到了乞巧,在使用el-select時,修改el-select-dropdown的樣式不生效镣陕。
原因分析
后來審查元素時發(fā)現(xiàn)渲染后的dom元素壓根兒就不在#app元素內(nèi)部。原來是el-select里面的el-select-dropdown元素渲染后會脫離#app姻政。所以使用深度選擇器也無法定位該元素呆抑。
解決
發(fā)現(xiàn)問題根源后,換了一種搜索的方式汁展,之前都是搜elementUi組件樣式不生效問題鹊碍,沒有找到合適的解決方法,現(xiàn)在搜el-select組件樣式修改食绿。bingo侈咕,終于找到對癥下藥的博文,完美解決器紧!方法如下:
在el-select 上增加一個屬性:popper-append-to-body="false"耀销,這個屬性用于將渲染后的元素放入#app元素。
再使用深度選擇器修改就可以了铲汪。
參考博文:https://blog.csdn.net/qq_44747461/article/details/106140453
總結(jié)
類似不起作用都可看看是否是上述原因熊尉,再選擇合適的關(guān)鍵詞搜索解決方法。
后記1:以上為el-select的樣式的修改方式掌腰,有時遇到其他組件樣式不生效問題狰住,分析并解決如下,即可完美處理:
將<style lang="scss" scope>中的scope去掉齿梁,此時變?yōu)槿值臉邮酱咧玻瑸榱舜_保其他單頁面中相應(yīng)元素的樣式不會隨之改變,需要用當前的父級定位該元素勺择,即在其父級上添加一個class创南,在修改對應(yīng)的子元素樣式,并且再刷新瀏覽器(重要=湍弧)扰藕,才能生效。(作為修改樣式的首選)
(不推薦使用/deep/深度選擇器芳撒,因為只適用于chrome瀏覽器邓深,存在瀏覽器兼容問題)
后記2:修改el-dropdown樣式方法:
在el-dropdown-menu 上加類名,再在<style lang="scss" >下添加樣式笔刹。因為與el-select的原因一樣芥备,渲染后都不在app元素下,所以加一個父元素并不會定位到舌菜。注意此時為全局樣式萌壳,避免修改其他單頁面的樣式
后記3:修改el-date-picker樣式:
增加popper-class 設(shè)置新的樣式如:popper-class="date-style"