問(wèn)題:
總是遇到用深度選擇器也修改不了elemenUi自帶樣式的問(wèn)題。
以為是原生的bug。然后我再一次遇到了,在使用el-select時(shí),修改el-select-dropdown的樣式不生效。
原因分析
后來(lái)審查元素時(shí)發(fā)現(xiàn)渲染后的dom元素壓根兒就不在#app元素內(nèi)部。原來(lái)是el-select里面的el-select-dropdown元素渲染后會(huì)脫離#app。所以使用深度選擇器也無(wú)法定位該元素。
解決
發(fā)現(xiàn)問(wèn)題根源后,換了一種搜索的方式,之前都是搜elementUi組件樣式不生效問(wèn)題,沒(méi)有找到合適的解決方法,現(xiàn)在搜el-select組件樣式修改。bingo,終于找到對(duì)癥下藥的博文,完美解決!方法如下:
在el-select 上增加一個(gè)屬性:popper-append-to-body="false",這個(gè)屬性用于將渲染后的元素放入#app元素。
再使用深度選擇器修改就可以了。
參考博文:https://blog.csdn.net/qq_44747461/article/details/106140453
總結(jié)
類(lèi)似不起作用都可看看是否是上述原因,再選擇合適的關(guān)鍵詞搜索解決方法。
后記1:以上為el-select的樣式的修改方式,有時(shí)遇到其他組件樣式不生效問(wèn)題,分析并解決如下,即可完美處理:
將<style lang="scss" scope>中的scope去掉,此時(shí)變?yōu)槿值臉邮剑瑸榱舜_保其他單頁(yè)面中相應(yīng)元素的樣式不會(huì)隨之改變,需要用當(dāng)前的父級(jí)定位該元素,即在其父級(jí)上添加一個(gè)class,在修改對(duì)應(yīng)的子元素樣式,并且再刷新瀏覽器(重要?。?,才能生效。(作為修改樣式的首選)
(不推薦使用/deep/深度選擇器,因?yàn)橹贿m用于chrome瀏覽器,存在瀏覽器兼容問(wèn)題)
后記2:修改el-dropdown樣式方法:
在el-dropdown-menu 上加類(lèi)名,再在<style lang="scss" >下添加樣式。因?yàn)榕cel-select的原因一樣,渲染后都不在app元素下,所以加一個(gè)父元素并不會(huì)定位到。注意此時(shí)為全局樣式,避免修改其他單頁(yè)面的樣式
后記3:修改el-date-picker樣式:
增加popper-class 設(shè)置新的樣式如:popper-class="date-style"