Vue2 Vue3 Scoped 樣式穿透問題
概念
主要是用于修改很多 Vue 常用的組件庫(Element, Vant, AntDesigin),雖然配好了樣式但是還是需要更改其他的樣式, 因為添加了 scoped 實現(xiàn) css 模塊化
就需要用到 樣式穿透 ,更改組件的樣式
scoped 的原理
Vue 中的 scoped 通過在 DOM結構以及 css 樣式上加唯一不重復的標記: data-v-hash 的方式,以保證唯一(而這個工作是由過 PostCSS 轉譯實現(xiàn)的),達到 樣式私有化模塊化的目的。
簡單示例代碼如下
<template>
<div>
<el-input placeholder="Please input" class="ipt" />
</div>
</template>
<script setup lang="ts">
</script>
<style scoped>
.ipt {
width: 300px;
margin: 100px 400px;
}
</style>總結一下 scoped 三條渲染規(guī)則
1.給 HTML 的 DOM 節(jié)點加一個不重復 data 屬性(形如:data-v-123)來表示他的唯一性

2. 在每個 CSS 選擇器的末尾(編譯后的生成的 CSS 語句)加一個當前組件的 data 屬性選擇器(如 [data-v-123])來私有化樣式

3. 如果組件內(nèi)部包含有其他組件,只會給其他組件的最外層標簽加上當前組件的 data 屬性

注意:
<template>
<div>
<el-input placeholder="Please input" class="ipt" />
</div>
</template>
<script setup lang="ts">
</script>
<style scoped lang="less">
.ipt {
width: 300px;
margin: 100px 400px;
.el-input__inner {
background-color: red;
}
}
</style>總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
利用vue-router實現(xiàn)二級菜單內(nèi)容轉換
這篇文章主要介紹了如何利用vue-router實現(xiàn)二級菜單內(nèi)容轉換,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11
Element的el-tree控件后臺數(shù)據(jù)結構的生成以及方法的抽取
這篇文章主要介紹了Element的el-tree控件后臺數(shù)據(jù)結構的生成以及方法的抽取,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
vue源碼學習之Object.defineProperty 對數(shù)組監(jiān)聽
這篇文章主要介紹了vue源碼學習之Object.defineProperty 對數(shù)組監(jiān)聽,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
一文了解vue-router之hash模式和history模式
這篇文章主要介紹了一文了解vue-router之hash模式和history模式,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05

