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