elementUI樣式修改未生效問題詳解(掛載到了body標簽上)
前言
在使用element-ui庫的時候,有時會需要修改它自帶的css樣式,組件模塊化化編程時一般會用到/deep/方法進行樣式穿透修改,但有些情況/deep/方法也會失效,針對這些情況,下面就以修改elementUi中的DateTimePicker時間選擇器組件樣式來講一下自己的心得。
一、適用范圍
1、修改elementUI自帶樣式
2、/deep/深穿透樣式修改方法失效
3、不污染全局樣式
二、示例
1.目標
假設(shè)業(yè)務需要一個只帶年、月、日、時的時間選擇器(如下圖)

2.實現(xiàn)思路
首先在element-ui庫中進行匹配尋找,發(fā)現(xiàn)沒有與之完全一致的模型,為了省時,可以選擇一個比較接近的模型進行ui改造,這里我選擇的是 el-date-picker時間選擇器
首先看下它本身的樣式:

代碼如下:
<div>
<el-date-picker
v-model="value1"
type="datetime"
placeholder="選擇日期時間">
</el-date-picker>
</div>
修改自帶樣式方法
找到編譯后element-ui給本時間選擇器定義的div盒子類名(見下圖)
因為不需要圖中分和秒這兩列,所以我們可以在本組件的單獨的樣式文件中標簽中修改為自己需要的樣式

先來個錯誤示范
利用 /deep/ 方法進行樣式穿透修改本時間選擇器樣式
代碼如下(示例):
<style scoped lang="less">
/deep/.el-picker-panel {
.el-time-spinner{
.el-time-spinner__wrapper {
width: 100% !important;
}
}
}
</style>
這樣做后發(fā)現(xiàn)我們所修改的樣式并未生效,原因是因為DateTimePicker 下拉框 最終是直接掛載到body標簽上,也就是說它與我們的子組件都是并列關(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上的組件樣式時,需在全局樣式中進行修改,不能在受scoped作用域限制的子組件樣式中修改
2、如果此組件會用到多次,且每次都需不同的樣式,那么務必給它設(shè)置一個獨立的類名
到此這篇關(guān)于elementUI樣式修改未生效問題的文章就介紹到這了,更多相關(guān)elementUI樣式修改未生效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于 Vue.js 2.0 酷炫自適應背景視頻登錄頁面實現(xiàn)方式
本文講述如何實現(xiàn)擁有酷炫背景視頻的登錄頁面,瀏覽器窗口隨意拉伸,背景視頻及前景登錄組件均能完美適配,背景視頻可始終鋪滿窗口,前景組件始終居中,視頻的內(nèi)容始終得到最大限度的保留,可以得到最好的視覺效果2018-01-01
vue中使用vue-seamless-scroll插件實現(xiàn)列表無縫滾動效果
這篇文章主要介紹了vue中使用vue-seamless-scroll插件無縫滾動,支持上下左右無縫滾動,單步滾動停留時間,以及水平方向的手動切換,需要的朋友可以參考下2022-06-06
unplugin-vue-components解決命名沖突問題
這篇文章主要介紹了unplugin-vue-components解決命名沖突問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
使用Vue-cli3.0創(chuàng)建的項目 如何發(fā)布npm包
這篇文章主要介紹了使用Vue-cli3.0創(chuàng)建的項目,如何發(fā)布npm包,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10

