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