這篇文章主要介紹“怎么在Shadow DOM/Web組件中覆蓋CSS”,在日常操作中,相信很多人在怎么在Shadow DOM/Web組件中覆蓋CSS問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么在Shadow DOM/Web組件中覆蓋CSS”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比臺(tái)江網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式臺(tái)江網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋臺(tái)江地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。
創(chuàng)建一個(gè)HTML元素
我們將使用擴(kuò)展基本HTML Element的JavaScript類創(chuàng)建自定義HTML元素。然后,我們將使用要?jiǎng)?chuàng)建的標(biāo)簽名稱和剛剛創(chuàng)建的類調(diào)用 customElements.define()。
class AppCard extends HTMLElement {...} window.customElements.define('app-card', AppCard);
在此示例中,我們將創(chuàng)建此簡(jiǎn)單的Material Design卡片,當(dāng)我們?cè)贖TML上添加此元素時(shí)將顯示該元素:
首先,我們創(chuàng)建Shadow DOM root,然后將HTML和CSS字符串分配給Shadow DOM root 的 innerHTML,如下所示。
class AppCard extends HTMLElement { constructor() { super(); const shadowRoot = this.attachShadow({mode: 'open'}); shadowRoot.innerHTML = ``; }}window.customElements.define('app-card', AppCard);Card title
覆蓋嘗試
在此示例中,我們要修改卡的背景顏色。如果它是HTML中的簡(jiǎn)單 div 元素,則可以覆蓋 card 類或通過(guò)CSS選擇器訪問(wèn) div 元素。但是,以下嘗試將無(wú)效:
// access the div app-card > div { background-color: #2196F3; } // override card class app-card > .card { background-color: #2196F3; }
使用CSS自定義屬性
為了解決這個(gè)問(wèn)題,我們可以使用CSS自定義屬性(CSS變量)??梢允褂肅SS中定義的CSS自定義屬性來(lái)更改自定義元素中的某些CSS屬性。
按照我們的例子,我們將使用屬性 background-color 上的變量 card-bg 來(lái)獲取誰(shuí)在使用自定義元素所定義的顏色。
class AppCard extends HTMLElement { constructor() { super(); const shadowRoot = this.attachShadow({mode: 'open'}); shadowRoot.innerHTML = ``; }}window.customElements.define('app-card', AppCard);Card title
現(xiàn)在,我們將使用 app-card 自定義元素,并在Body元素的CSS中創(chuàng)建 card-bg 變量,我們將十六進(jìn)制顏色 #2196F3 分配給變量。
到此,關(guān)于“怎么在Shadow DOM/Web組件中覆蓋CSS”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!