我們使用scoped實現組件的私有化,不對全局造成樣式污染,表示當前style屬性只屬于當前模塊.但我們難免會用到一些框架如element vant等,我們想要修改其中樣式時,如果使用了scoped,則需要深度選擇器來進行樣式的更改.
鳳慶網站建設公司成都創新互聯公司,鳳慶網站設計制作,有大型網站制作公司豐富經驗。已為鳳慶千余家提供企業網站建設服務。企業網站搭建\外貿營銷網站建設要多少錢,請找那個售后服務好的鳳慶做網站的公司定做!
使用場景:
當我們需要覆蓋element-ui中的樣式時只能通過深度作用選擇器
style為css時的寫法如下
有些像 Sass 之類的預處理器無法正確解析 。這種情況下你可以使用 /deep/ 或 ::v-deep 操作符取而代之——兩者都是 的別名,同樣可以正常工作。
style使用css的預處理器(less, sass, scss)的寫法如下
第一種/deep/
第二種::v-deep
建議使用第二種方式,/deep/在某些時候會報錯,::v-deep更保險并且編譯速度更快.
1、
語義化。
2、
class 跟 id 最大的不同就是一個元素可以有多個 class,但只能有一個 id。所以 class 應該是分散的、抽象的。比如要定義“紅色按鈕”和“藍色復選框”,應該定義成“.red.button”、“.blue.checkbox”,而非“.red-button”、“.blue-checkbox”。這樣一來不利于日后擴展(藍色按鈕和紅色復選框);二來這相當于為每個元素單獨定義了class,class 未復用。
3、
利用好 CSS 的后代選擇器、兄弟選擇器等等,即使同為一個 .header,在 .nav 和 .cell 下也會是不同的(當然如果你非要定義成 .nav-header 和 .cell-header 也不是不可以)
4、
如果引入了第三方樣式庫,為了避免和它的命名沖突,通常做法是在你自己的CSS前加前綴,比如為每一個 class 加前綴“ui-”之類的。
5、
如果引入了兩個第三方樣式庫本身就沖突,那……
6、
多看看主流的開源樣式庫是如何定義的,比如 Bootstrap、jQuery UI、WeUI 等等等等,不一一列舉了。但要記得“盡信書不如無書”,這些框架未必做的就是百分百對的,其實存在很多設計不合理的地方,原因是在最開始未規劃好給后來挖了坑,后來發現時想改已經來不及了(因為畢竟得盡可能兼容之前的版本,大多數時加法好做減法不好做)。
1、樣式文件必須以[name].module.css或[name].module.scss的形式命名
2、以變量的形式導入樣式文件,比如 import styles from './style.module.css';
3、className以變量引用的方式添加,比如 className={ styles.title }
前兩天在項目中遇到一個問題,需要手動去修改引入的第三方組件的CSS樣式,我第一想法就是直接在組件上新增一個自定義的class去覆蓋原有的樣式,結果當然是行不通的(不然我現在也不會在這里寫這篇)。
于是我查了一下,是因為我在vue組件里面將設置成了局部樣式,局部樣式只在當前組件生效,對引入的其他組件是無法起作用的。然后我試了一下,把 scoped 去掉就行了。
或者在組件里面寫多一份全局樣式
但是如果不在style里面寫 scoped ,直接寫成全局樣式,最后可能會面臨多個組件之間樣式污染的問題。如何使得局部樣式可以覆蓋到引入的第三方組件呢,我想到以前涉及過的一個名詞 樣式穿透 ,立刻實踐了一下,果然就成了。
樣式穿透 需要定義一個外層的style,通過 可以使得socped屬性下的的樣式穿透到全局, 外層 第三方組件 或者 外層 /deep/ 第三方組件 。 是 /deep/ 的別名,但是在sass之類的樣式預處理器之中無法正確解析。
網頁名稱:樣式污染css,樣式污染是什么意思
轉載源于:http://m.2m8n56k.cn/article30/phpepo.html
成都網站建設公司_創新互聯,為您提供外貿網站建設、全網營銷推廣、移動網站建設、網頁設計公司、營銷型網站建設、網站導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯