elementUI樣式修改未生效問題詳解(掛載到了body標(biāo)簽上)
前言
在使用element-ui庫的時候,有時會需要修改它自帶的css樣式,組件模塊化化編程時一般會用到/deep/方法進(jìn)行樣式穿透修改,但有些情況/deep/方法也會失效,針對這些情況,下面就以修改elementUi中的DateTimePicker時間選擇器組件樣式來講一下自己的心得。
一、適用范圍
1、修改elementUI自帶樣式
2、/deep/深穿透樣式修改方法失效
3、不污染全局樣式
二、示例
1.目標(biāo)
假設(shè)業(yè)務(wù)需要一個只帶年、月、日、時的時間選擇器(如下圖)
2.實(shí)現(xiàn)思路
首先在element-ui庫中進(jìn)行匹配尋找,發(fā)現(xiàn)沒有與之完全一致的模型,為了省時,可以選擇一個比較接近的模型進(jìn)行ui改造,這里我選擇的是 el-date-picker時間選擇器
首先看下它本身的樣式:
代碼如下:
<div> <el-date-picker v-model="value1" type="datetime" placeholder="選擇日期時間"> </el-date-picker> </div>
修改自帶樣式方法
找到編譯后element-ui給本時間選擇器定義的div盒子類名(見下圖)
因?yàn)椴恍枰獔D中分和秒這兩列,所以我們可以在本組件的單獨(dú)的樣式文件中標(biāo)簽中修改為自己需要的樣式
先來個錯誤示范
利用 /deep/ 方法進(jìn)行樣式穿透修改本時間選擇器樣式
代碼如下(示例):
<style scoped lang="less"> /deep/.el-picker-panel { .el-time-spinner{ .el-time-spinner__wrapper { width: 100% !important; } } } </style>
這樣做后發(fā)現(xiàn)我們所修改的樣式并未生效,原因是因?yàn)镈ateTimePicker 下拉框 最終是直接掛載到body標(biāo)簽上,也就是說它與我們的子組件都是并列關(guān)系,所以我們在定義它的子組件中修改它的樣式會失敗。
接下來展示正確做法
可以在element-ui 中看到DateTimePicker的Attributes中存在一個popper-class屬性,官方介紹中可以利用它可以給DateTimePicker 下拉框的設(shè)置類名
<template> <div class="home"> <el-date-picker v-model="value1" format="yyyy-MM-dd H" value-format="yyyy-MM-dd H" type="datetime" placeholder="選擇日期時間" popper-class='myDatePicker'> </el-date-picker> </div> </template> <script> export default { name: "Home", data() { return { value1:'' } }, }; </script> <style scoped lang="less"> // 此處寫本組件樣式 </style> <style lang="less"> /* 注意此處沒有添加scoped屬性,所以全局生效,但是有類名限制,不會與其他類樣式?jīng)_突 */ .myDatePicker { .el-time-spinner__wrapper{ width: 100% !important; } } </style>
最后看效果
樣式生效,完結(jié)撒花。
總結(jié)
1、修改element-ui庫中直接掛載到body上的組件樣式時,需在全局樣式中進(jìn)行修改,不能在受scoped作用域限制的子組件樣式中修改
2、如果此組件會用到多次,且每次都需不同的樣式,那么務(wù)必給它設(shè)置一個獨(dú)立的類名
到此這篇關(guān)于elementUI樣式修改未生效問題的文章就介紹到這了,更多相關(guān)elementUI樣式修改未生效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue如何實(shí)時往數(shù)組里追加數(shù)據(jù)
這篇文章主要介紹了vue如何實(shí)時往數(shù)組里追加數(shù)據(jù),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04vue項(xiàng)目webpack中Npm傳遞參數(shù)配置不同域名接口
這篇文章主要介紹了vue項(xiàng)目webpack中Npm傳遞參數(shù)配置不同域名接口,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06vue.js中使用微信掃一掃解決invalid signature問題(完美解決)
這篇文章主要介紹了vue.js中使用微信掃一掃解決invalid signature問題(推薦),本文通過實(shí)例代碼給出解決方法,代碼簡單易懂非常不錯,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04解決betterScroll在vue中存在圖片時,出現(xiàn)拉不動的問題
今天小編就為大家分享一篇解決betterScroll在vue中存在圖片時,出現(xiàn)拉不動的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09vue+elementUI動態(tài)增加表單項(xiàng)并添加驗(yàn)證的代碼詳解
這篇文章主要介紹了vue+elementUI動態(tài)增加表單項(xiàng)并添加驗(yàn)證的代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12uniapp前端支付篇之微信、抖音、快手、h5四個平臺支付功能
支付功能在我們?nèi)粘i_發(fā)中經(jīng)常會遇到,下面這篇文章主要給大家介紹了關(guān)于uniapp前端支付篇之微信、抖音、快手、h5四個平臺支付功能的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03