摘要:有時(shí)候基于的單文件組件開發(fā)項(xiàng)目時(shí)不得不使用全局樣式這時(shí)有一些需要注意的地方當(dāng)遇到需要使用全局樣式時(shí)下列幾種情況樣式在項(xiàng)目各處均有使用樣式只在當(dāng)前組件內(nèi)的上使用樣式需要應(yīng)用到當(dāng)前組件的外部下面詳細(xì)記錄一下需要注意的問(wèn)題樣式在項(xiàng)目各處均有使用如
有時(shí)候基于 Vue 的單文件組件開發(fā)項(xiàng)目時(shí), 不得不使用全局樣式, 這時(shí)有一些需要注意的地方.
當(dāng)遇到需要使用全局樣式時(shí), 下列幾種情況
樣式在項(xiàng)目各處均有使用;
樣式只在當(dāng)前組件內(nèi)的 DOM 上使用;
樣式需要應(yīng)用到當(dāng)前組件 DOM 的外部 DOM;
下面詳細(xì)記錄一下需要注意的問(wèn)題:
樣式在項(xiàng)目各處均有使用如果樣式需要在項(xiàng)目各處均有使用, 例如: reset.css, tiny-trim.css 等等.
這時(shí)推薦在項(xiàng)目入口文件中直接導(dǎo)入樣式文件:
// src/main.js import "tiny-trim.css" import "asset/reset.css" import "asset/global.css"
當(dāng)然, 也可以在頂層組件中沒有設(shè)置 scoped 屬性的 style 標(biāo)簽中導(dǎo)入:
@import url(asset/reset.css); @import url(asset/global.css);樣式只在當(dāng)前組件內(nèi)的 DOM 上使用
當(dāng)使用一些第三方 UI 庫(kù)時(shí), 有一些 UI 庫(kù)生成的 DOM 在 template 中并不能直接添加 class 或 style 來(lái)修改第三方 UI 庫(kù)的組件樣式, 這時(shí)我們可以通過(guò)當(dāng)前組件沒有 scoped 屬性的 style 標(biāo)簽來(lái)添加全局樣式.
但此時(shí)需要考慮一些問(wèn)題:
這個(gè)樣式應(yīng)該只影響當(dāng)前組件內(nèi)第三方 UI 庫(kù)渲染出來(lái)的 DOM
因?yàn)?DOM 不在 template 標(biāo)簽里 (DOM 由第三方 UI 庫(kù)的 JS 在瀏覽器加載時(shí)構(gòu)建或在編譯打包過(guò)程中生成), 不能直接設(shè)置 class 或 style 來(lái)修改樣式, 故只能使用沒有 scoped 屬性的 style 標(biāo)簽
可以看出兩點(diǎn)是有一定矛盾的. 不過(guò)可以采用如下方法解決或緩解:
為當(dāng)前組件根元素設(shè)置自定義 data 屬性
在沒有 scoped 屬性的 style 標(biāo)簽中使用自定義 data 屬性限定樣式作用域
.my-component[data-custom-mycomponent] { // ... }
這里推薦使用 Less 或 Sass, 嵌套語(yǔ)法能減少許多代碼冗余.樣式需要應(yīng)用到當(dāng)前組件 DOM 的外部 DOM
這種情況主要是針對(duì)上一種情況的補(bǔ)充, 有時(shí)候第三方 UI 庫(kù)生成的 DOM 節(jié)點(diǎn)并不在當(dāng)前組件的 DOM 內(nèi), 可能渲染到 body 中 (如 dialog, tooltip, message 等).
這些渲染到當(dāng)前組件 DOM 之外的組件, 需要在上一種情況的處理基礎(chǔ)上, 為它們的頂層元素再設(shè)置一個(gè)自定義的 data 屬性:
.my-component[data-custom-mycomponent] { // ... } .my-component-message[data-custom-mycomponent-message] { // ... }
-EOF
原文: [筆記] 當(dāng)在 Vue 中不得不用全局樣式時(shí)...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/115776.html
摘要:有時(shí)候基于的單文件組件開發(fā)項(xiàng)目時(shí)不得不使用全局樣式這時(shí)有一些需要注意的地方當(dāng)遇到需要使用全局樣式時(shí)下列幾種情況樣式在項(xiàng)目各處均有使用樣式只在當(dāng)前組件內(nèi)的上使用樣式需要應(yīng)用到當(dāng)前組件的外部下面詳細(xì)記錄一下需要注意的問(wèn)題樣式在項(xiàng)目各處均有使用如 有時(shí)候基于 Vue 的單文件組件開發(fā)項(xiàng)目時(shí), 不得不使用全局樣式, 這時(shí)有一些需要注意的地方. 當(dāng)遇到需要使用全局樣式時(shí), 下列幾種情況 樣式在...
摘要:由于公司的前端開始轉(zhuǎn)向,最近開始使用這個(gè)框架進(jìn)行開發(fā),遇到一些問(wèn)題記錄下來(lái),以備后用。查了一下,發(fā)現(xiàn)可能是打包或是資源引用問(wèn)題,目前該問(wèn)題還未被妥善處理,需要通過(guò)一些來(lái)解決這個(gè)問(wèn)題。為解決這個(gè)問(wèn)題,中提供了方法對(duì)象受現(xiàn) showImg(https://segmentfault.com/img/bVFgor?w=1280&h=720); 由于公司的前端開始轉(zhuǎn)向 VueJS,最近開始使用這...
摘要:作用域鏈的用途,是保證對(duì)執(zhí)行環(huán)境有權(quán)訪問(wèn)的所有變量和函數(shù)的有序訪問(wèn)。這樣,一直延續(xù)到全局執(zhí)行環(huán)境全局執(zhí)行環(huán)境的變量對(duì)象始終都是作用域鏈中的最后一個(gè)對(duì)象。如果在局部環(huán)境中沒有找到該變量名,則繼續(xù)沿作用域鏈向上搜索。 【JavaScript.ES5】執(zhí)行環(huán)境和作用域 參考文獻(xiàn): Nicholas C.Zakas 《JavaScript》高級(jí)程序設(shè)計(jì) 僅為個(gè)人學(xué)習(xí)參考文獻(xiàn)的內(nèi)容記錄的筆記。存...
摘要:組件的復(fù)用你可以將組件進(jìn)行任意次數(shù)的復(fù)用注意當(dāng)點(diǎn)擊按鈕時(shí),每個(gè)組件都會(huì)各自獨(dú)立維護(hù)它的。 1、基本示例 // 定義一個(gè)名為 button-counter 的新組件 Vue.component(button-counter, { data: function () { return { count: 0 } }, template: You cli...
摘要:各模塊各司其職,提高開發(fā)效率。使用生成的項(xiàng)目目錄里,我們主要關(guān)注目錄。這個(gè)是我們之前提到的單頁(yè)面組件。這是項(xiàng)目的路由文件,存放項(xiàng)目中所有的路由。這里和我們之前所學(xué)沒什么不同,不過(guò)是涉及了不少的知識(shí)。 一、vue模塊化開發(fā) 所謂的模塊化開發(fā)是指將不同的部分封裝到不同的模塊中,不再將所有的組件、路由等寫在一個(gè)頁(yè)面中。各模塊各司其職,提高開發(fā)效率。 使用vue-cli生成的項(xiàng)目目錄里,我們主...
閱讀 1809·2021-11-24 10:21
閱讀 1219·2021-09-22 15:25
閱讀 3179·2019-08-30 15:55
閱讀 719·2019-08-30 15:54
閱讀 3468·2019-08-30 14:20
閱讀 1668·2019-08-30 14:06
閱讀 646·2019-08-30 13:11
閱讀 3157·2019-08-29 16:43