最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

快速修改antd?vue單個組件的默認(rèn)樣式

 更新時間:2022年08月11日 11:25:26   作者:Unique·Blue  
這篇文章主要介紹了快速修改antd?vue單個組件的默認(rèn)樣式方式,具有很好的參考價值,希望對大家有所幫助。

Ant Design Vue地址:https://www.antdv.com/docs/vue/introduce-cn/

剛接觸Ant Design Vue的童鞋們可能會有這樣的問題,不就是修改默認(rèn)的組件樣式嗎,為什么一會生效,一會又不生效。希望看完這個文章,會給你一些收獲~

一、想要修改組件的默認(rèn)樣式

首先你需要知道組件是渲染在哪里的 這個組件是渲染在當(dāng)前頁面內(nèi)部,還是脫離vue根節(jié)點單獨渲染?(根節(jié)點默認(rèn)id=“app”)

這個問題的答案很容易得到,打開文章頂部的antdv官方文檔,任意選中組件,F(xiàn)12打開調(diào)試,觀察Elements,例如:

1、不難看出,button是渲染在當(dāng)前頁面內(nèi)部的,包裹在"#app"的容器里。這樣的組件還有很多,比如input、radio等等。再看下面這張圖:

2、dropdown組件則是一部分渲染在#app內(nèi),一部分渲染在"#app"的外面且與"#app"同級。這樣的組件也有很多,比如select、drawer等等

3、dropdown等,我們發(fā)現(xiàn)它們的共同點:這些組件都是“觸發(fā)型”組件,都是由用戶hover、click等手動激活后,進(jìn)行了動態(tài)渲染的

確定了這一點之后有什么用呢?

第二類組件,class類名設(shè)置的僅僅是#app內(nèi)部元素,而渲染在#app之外的那部分節(jié)點,需要單獨設(shè)置類名,比如 tooltip,我們設(shè)置overlayClassName="overlay-class"來測試:

我們發(fā)現(xiàn)類名已經(jīng)設(shè)置好了。這一條解決了 沒有對應(yīng)到自己的父級類會造成的樣式不生效 的問題

不同組件設(shè)置的屬性名稱不完全相同,使用時去查閱文檔就可以了

二、類名scoped的限制 你是否會有這樣的疑惑

為什么有的需要設(shè)置 >>> 或者 /deep/ 來重寫深層樣式,有的卻不需要?

開發(fā)時,我們會根據(jù)需要設(shè)置每個頁面、組件css 的 scoped屬性,眾所周知,這個屬性是為了限制css只被當(dāng)前vue文件所使用,那它是如何實現(xiàn)這個限制的呢?

我們?nèi)我獯蜷_一個scoped的頁面,打開調(diào)試

我們可以發(fā)現(xiàn),這個頁面的幾乎所有節(jié)點,都有了一個共同的“標(biāo)識”

我們在elements中打開對應(yīng)scoped的css文件,看下實際書寫和渲染出來的對應(yīng)關(guān)系:

.override {
  padding: 100px 100px 200px 100px;
}
/* 按鈕 */
.test-button {
  background: pink;
  border: 0;
}
.ant-btn-primary {
  background: #ccc;
  border: 0;
}
/* 面包屑 */
.container >>> .ant-breadcrumb-separator {
  margin: 10px;
}
.container /deep/ .ant-breadcrumb-separator {
  margin: 30px;
}

發(fā)現(xiàn)css也被編譯成了具有標(biāo)識的! 重要的是,設(shè)置在/deep/ 和 >>> 后面的類,在編譯之后,是沒有這個標(biāo)識的!

發(fā)現(xiàn)了這一點之后,我們不需要去管是什么頁面,用的什么組件,只需要打開Elements面板,觀察你要寫的節(jié)點class,有沒有這個“標(biāo)識”。

  • 如果有的話,正常寫css,類名就會被編譯成有“標(biāo)識”的;
  • 如果沒有的話,需要設(shè)置在/deep/、>>>之后,編譯后就會拿掉這個標(biāo)識

三、使用/deep/、 >>>時

parentClass所在的節(jié)點是不帶“標(biāo)識”的怎么辦?

根據(jù)前面的總結(jié),設(shè)置scoped后,此時的 parentClass 是被編譯成帶“標(biāo)識”的, sonClass是不帶“標(biāo)識”的。

.parentClass >>> .sonClass
.parentClass /deep/ .sonClass

那實際使用時,如果parentClass所在的節(jié)點本身是不帶 “標(biāo)識” 的怎么辦?

例如:

antd vue的組件,渲染在#app外部,已經(jīng)按照第一條給了自定義的類名wrapClassName,但是這個wrapClassName我們?nèi)匀粺o法使用,因為它所在的div并沒有這個“標(biāo)識”(極少數(shù)情況會出現(xiàn))

這時我們拿出了終極武器,

<div ref="wrap"> 
  <a-modal 
    v-model="visible" 
    title="Basic Modal" 
    @ok="handleOk" 
    class="test" 
    :getContainer="() => this.$refs.wrap"
   >
    <p>Some contents...</p>
    <p>Some contents...</p>
    <p>Some contents...</p>
  </a-modal>
</div>

通過設(shè)置組件的 getContainer屬性(有的組件是 getPopupContainer ),我們將原本渲染在#app外部的節(jié)點,手動掛載到了#app內(nèi)部,之后再通過第二條的規(guī)則去設(shè)置就可以啦~

也可以不指定ref,直接設(shè)置 :getContainer="triggerNode => triggerNode.parentNode"默認(rèn)找到#app內(nèi)部的父節(jié)點

以上三點:

  • 第一點解決了沒有父級類的問題(單獨通過屬性設(shè)置)
  • 第二點解決了scoped造成的沒有對應(yīng)到父級類的問題(根據(jù)節(jié)點“標(biāo)識”情況使用 >>> 或 /deep/)
  • 第三點解決了沒有父級類可以設(shè)置的問題(手動更改渲染規(guī)則)

前兩條操作的是類名樣式,第三條操作的是節(jié)點,小編覺得能通過前兩條解決的,盡量就不用第三條了(盲猜會影響性能吧)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于vue-video-player自定義播放器的方法

    基于vue-video-player自定義播放器的方法

    這篇文章主要介紹了基于vue-video-player自定義播放器的方法,主要是基于video.js開發(fā)的vue-video-player的使用,以及如何操作video.js中的api。需要的朋友可以參考下
    2018-03-03
  • 詳解vue3.0 的 Composition API 的一種使用方法

    詳解vue3.0 的 Composition API 的一種使用方法

    這篇文章主要介紹了vue3.0 的 Composition API 的一種使用方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • vue中的stylus及stylus-loader版本問題

    vue中的stylus及stylus-loader版本問題

    這篇文章主要介紹了vue中的stylus及stylus-loader版本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue組件系列之TagsInput詳解

    vue組件系列之TagsInput詳解

    TagsInput 是一種可編輯的輸入框,通過回車或者分號來分割每個標(biāo)簽,用回退鍵刪除上一個標(biāo)簽。這篇文章主要介紹了vue組件TagsInput的相關(guān)知識,需要的朋友可以參考下
    2020-05-05
  • vue模態(tài)框?qū)崿F(xiàn)動態(tài)錨點

    vue模態(tài)框?qū)崿F(xiàn)動態(tài)錨點

    這篇文章主要為大家詳細(xì)介紹了vue模態(tài)框?qū)崿F(xiàn)動態(tài)錨點,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue實現(xiàn)頂部導(dǎo)航欄以及跳轉(zhuǎn)

    vue實現(xiàn)頂部導(dǎo)航欄以及跳轉(zhuǎn)

    這篇文章主要介紹了vue實現(xiàn)頂部導(dǎo)航欄以及跳轉(zhuǎn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • vant?toast?關(guān)閉棧溢出問題及解決

    vant?toast?關(guān)閉棧溢出問題及解決

    這篇文章主要介紹了vant?toast?關(guān)閉棧溢出問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 在vue中封裝方法以及多處引用該方法詳解

    在vue中封裝方法以及多處引用該方法詳解

    這篇文章主要介紹了在vue中封裝方法以及多處引用該方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Vue+iview+webpack ie瀏覽器兼容簡單處理

    Vue+iview+webpack ie瀏覽器兼容簡單處理

    這篇文章主要介紹了Vue+iview+webpack ie瀏覽器兼容簡單處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Vue+Element ui實現(xiàn)樹形控件右鍵菜單

    Vue+Element ui實現(xiàn)樹形控件右鍵菜單

    這篇文章主要為大家詳細(xì)介紹了Vue+Element ui實現(xiàn)樹形控件右鍵菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07

最新評論

什邡市| 隆德县| 新乡县| 祁东县| 贵溪市| 临颍县| 阜平县| 娱乐| 兴业县| 巧家县| 惠来县| 汾阳市| 乌拉特前旗| 全南县| 乌拉特前旗| 平罗县| 六安市| 台南市| 吉隆县| 靖安县| 苏尼特左旗| 镇巴县| 南乐县| 资兴市| 白朗县| 望江县| 莲花县| 于田县| 宁远县| 晋州市| 五常市| 浦江县| 锡林郭勒盟| 招远市| 泌阳县| 申扎县| 白水县| 曲周县| 安义县| 大名县| 亳州市|