Vue2 Vue3 Scoped 樣式穿透問題
概念
主要是用于修改很多 Vue 常用的組件庫(Element, Vant, AntDesigin),雖然配好了樣式但是還是需要更改其他的樣式, 因為添加了 scoped 實現(xiàn) css 模塊化
就需要用到 樣式穿透 ,更改組件的樣式
scoped 的原理
Vue 中的 scoped 通過在 DOM結(jié)構(gòu)以及 css 樣式上加唯一不重復(fù)的標(biāo)記: data-v-hash 的方式,以保證唯一(而這個工作是由過 PostCSS 轉(zhuǎn)譯實現(xiàn)的),達(dá)到 樣式私有化模塊化的目的。
簡單示例代碼如下
<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>
總結(jié)一下 scoped 三條渲染規(guī)則
1.給 HTML 的 DOM 節(jié)點加一個不重復(fù) data 屬性(形如:data-v-123)來表示他的唯一性
2. 在每個 CSS 選擇器的末尾(編譯后的生成的 CSS 語句)加一個當(dāng)前組件的 data 屬性選擇器(如 [data-v-123])來私有化樣式
3. 如果組件內(nèi)部包含有其他組件,只會給其他組件的最外層標(biāo)簽加上當(dāng)前組件的 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>
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
利用vue-router實現(xiàn)二級菜單內(nèi)容轉(zhuǎn)換
這篇文章主要介紹了如何利用vue-router實現(xiàn)二級菜單內(nèi)容轉(zhuǎn)換,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11Element的el-tree控件后臺數(shù)據(jù)結(jié)構(gòu)的生成以及方法的抽取
這篇文章主要介紹了Element的el-tree控件后臺數(shù)據(jù)結(jié)構(gòu)的生成以及方法的抽取,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03vue源碼學(xué)習(xí)之Object.defineProperty 對數(shù)組監(jiān)聽
這篇文章主要介紹了vue源碼學(xué)習(xí)之Object.defineProperty 對數(shù)組監(jiān)聽,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05一文了解vue-router之hash模式和history模式
這篇文章主要介紹了一文了解vue-router之hash模式和history模式,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05