国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 css教程 Web組件庫上的一點

Web組件庫上的一點

Apr 03, 2025 am 09:42 AM

A Bit on Web Component Libraries

近期涌現(xiàn)了不少關(guān)于Web Components的新聞,我將它們整理在此。

我認(rèn)為Web Components最棒的應(yīng)用場景之一是模式庫。與其像Bootstrap那樣使用<div>,或像Bulma那樣使用<code><div>,不如使用自定義元素,例如<code><designsystem-tabs></designsystem-tabs>。新的Shoelace庫使用sl命名空間來定義其組件。它是一個完全基于Web Components的模式庫,其中的標(biāo)簽是<sl-tab-group></sl-tab-group>元素。

這樣做有什么好處呢?首先,它引入了組件模型。這意味著,如果您正在處理一個組件,它將擁有一個模板和一個與其位置相關(guān)的樣式表。查看Shoelace的內(nèi)部實現(xiàn),您可以看到這一切都基于Stencil。

另一個好處是,組件可以使用(并且確實使用了)Shadow DOM。這提供了一種直接來自Web平臺的隔離機(jī)制。對于我們這些CSS開發(fā)者來說,這意味著標(biāo)簽組件中標(biāo)簽的樣式是使用.tab類完成的(哇,太酷了?。谠摻M件中是隔離的。即使使用這么通用的名稱,我也不會意外地影響頁面上使用該通用類的其他組件,也不會有一些外部CSS來干擾這里的內(nèi)部結(jié)構(gòu)。Shadow DOM就像一道安全墻,防止樣式泄漏或滲入。

我還看到了FAST框架1,它也是一組組件。它的標(biāo)簽被定義為<fast-tabs></fast-tabs>。這讓我想到Web Components作為模式庫方法的另一個優(yōu)點:它感覺像是API驅(qū)動的,甚至從組件本身的名稱開始,這實際上就是你在HTML中使用的。該元素上的屬性可以完全自定義。新興的標(biāo)準(zhǔn)似乎是,您甚至不必為自定義的屬性添加data-前綴。因此,如果我要制作一個標(biāo)簽組件,它可能是<chris-tabs active-tab="lunch" variation="rounded"></chris-tabs>。

也許使用Web Components作為模式庫的最大參與者是Ionic。它們的標(biāo)簽是<ion-tabs></ion-tabs>,您可以使用它們而無需涉及任何其他框架(盡管它們除了自己的Stencil之外,還支持Angular、React和Vue)。Ionic在Web Components方面取得了很大的進(jìn)步,最近支持了Shadow Parts。以下是Brandy Carney再次解釋封裝的說明:

Shadow DOM有助于防止樣式從組件中泄漏并意外應(yīng)用于其他元素。例如,我們將.buttonclass分配給我們的<ion-button></ion-button>組件。如果Ionic Framework用戶在其自己的元素之一上設(shè)置.button類,則在框架的早期版本中,它將繼承Ionic按鈕樣式。由于<ion-button></ion-button>現(xiàn)在是一個Shadow Web Component,所以這個問題不再存在。

但是,由于這種封裝,樣式也無法滲透到Shadow組件的內(nèi)部元素中。這意味著,如果Shadow組件在其shadow tree中呈現(xiàn)元素,用戶就無法使用他們的CSS來定位內(nèi)部元素。

封裝是一件好事,但它確實使樣式變得“更難”(故意如此)。有一個重要的CSS概念需要了解:CSS自定義屬性可以穿透Shadow DOM。但是,人們決定——我認(rèn)為這是正確的——在一個設(shè)計系統(tǒng)中將每一件事都“變量化”并不是一個明智的做法。相反,他們?yōu)镾hadow DOM內(nèi)的每個HTML片段賦予一個部分,例如<div part="icon">,這使我們能夠使用CSS“從外部訪問”,例如<code>custom-component::part(icon) { }。我認(rèn)為基于部分的樣式鉤子大部分是不錯的,并且對于這樣的模式庫來說是一種明智的方案,但我承認(rèn)它的一部分讓我感到困擾。選擇器的工作方式與您預(yù)期的不一樣。例如,您無法有條件地選擇內(nèi)容。您也不能選擇子元素或使用級聯(lián)。換句話說,它只是一個一次性的,或者就像您用手直接穿過薄膜一樣。您可以向前伸出手抓住東西或不抓住,但您什么也做不了。

說到讓人生氣的事情,Andrea Giammarchi對Web Components的現(xiàn)狀有一個很好的觀點:

每個開始使用的庫,包括我的庫,都建議我們應(yīng)該導(dǎo)入該庫來定義所謂的“可移植的自定義元素”。

Google總是建議使用LitElement。Microsoft希望您使用FASTElement。Stencil有自己的組件。hyperHTML有自己的組件。沒有人只使用“原始”的Web Components。這很奇怪!我認(rèn)為最糟糕的部分是,Web Components應(yīng)該是一個“原生平臺”的東西,這意味著我們不應(yīng)該需要依賴某種特定技術(shù)才能使用它們。當(dāng)我們這樣做時,我們就像使用React或其他任何東西一樣被鎖定到它上面。

Andrea在文章中提出了一些想法,包括使用一些新的更小的庫。我認(rèn)為我想看到的是一個根本不使用任何庫的模式庫。

  1. FAST在首頁的連續(xù)句子中將自己稱為“界面系統(tǒng)”,然后是“UI框架”。Shoelaces稱自己為“庫”,但我稱之為“模式庫”。我認(rèn)為“設(shè)計系統(tǒng)”是描述這個概念最常用的術(shù)語,但通常比特定技術(shù)更廣泛。FAST在代碼本身中使用該術(shù)語來表示控制主題的包裝器元素。我認(rèn)為圍繞所有這些東西的術(shù)語遠(yuǎn)未確定。

以上是Web組件庫上的一點的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

如何僅在某些頁面上包括CSS? 如何僅在某些頁面上包括CSS? Jun 11, 2025 am 12:01 AM

選擇性包含CSS在特定頁面上的方法有三種:1.內(nèi)聯(lián)CSS,適用于不常訪問或需要獨特樣式的頁面;2.使用JavaScript條件加載外部CSS文件,適合需要靈活性的情況;3.服務(wù)器端包含,適用于使用服務(wù)器端語言的場景。這種方法可以優(yōu)化網(wǎng)站性能和可維護(hù)性,但需平衡模塊化與性能。

什么是'渲染障礙CSS”? 什么是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

CSS會阻塞頁面渲染是因為瀏覽器默認(rèn)將內(nèi)聯(lián)和外部CSS視為關(guān)鍵資源,尤其是使用引入的樣式表、頭部大量內(nèi)聯(lián)CSS以及未優(yōu)化的媒體查詢樣式。1.提取關(guān)鍵CSS并內(nèi)嵌至HTML;2.延遲加載非關(guān)鍵CSS通過JavaScript;3.使用media屬性優(yōu)化加載如打印樣式;4.壓縮合并CSS減少請求。建議使用工具提取關(guān)鍵CSS,結(jié)合rel="preload"異步加載,合理使用media延遲加載,避免過度拆分與復(fù)雜腳本控制。

如何在無花果中使用Lotties 如何在無花果中使用Lotties Jun 14, 2025 am 10:17 AM

在接下來的教程中,我將向您展示如何在無花果中創(chuàng)建Lottie動畫。我們將使用兩種彩色設(shè)計來超越如何在無花果上進(jìn)行動畫,然后向您展示如何從Figma到Lottie動畫。您只需要免費無花果

打破邊界:用(s)CSS構(gòu)建湯姆拼圖 打破邊界:用(s)CSS構(gòu)建湯姆拼圖 Jun 13, 2025 am 11:33 AM

我們對其進(jìn)行了測試,事實證明,至少在低級邏輯和拼圖行為時,Sass可以替換JavaScript。除了地圖,混音,功能和大量數(shù)學(xué)外,我們都設(shè)法使我們的Tangram難題栩栩如生,沒有J

外部與內(nèi)部CSS:最好的方法是什么? 外部與內(nèi)部CSS:最好的方法是什么? Jun 20, 2025 am 12:45 AM

thebestapphachforcssdepprodsontheproject'sspefificneeds.forlargerprojects,externalcsSissBetterDuoSmaintoMaintainability andReusability; forsMallerProjectsorsingle-pageApplications,InternaltCsmightBemoresobleable.InternalCsmightBemorese.it.it'sclucialtobalancepopryseceneceenceprodrenceprodrenceNeed

我的CSS必須在較低的情況下嗎? 我的CSS必須在較低的情況下嗎? Jun 19, 2025 am 12:29 AM

否,CSSDOESNOTHAVETOBEINLOWERCASE.CHOMENDENS,使用flowercaseisrecommondendendending:1)一致性和可讀性,2)避免使用促進(jìn)性技術(shù),3)潛在的Performent FormanceBenefits,以及4)RightCollaboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraborationWithInteams。

CSS計數(shù)器:一個逐步教程,示例 CSS計數(shù)器:一個逐步教程,示例 Jun 12, 2025 am 10:31 AM

CSSCounters是一種用于創(chuàng)建自動編號的工具。1.基本用法:通過counter-reset和counter-increment定義和操作計數(shù)器,如在h2前顯示"SectionX."。2.高級用法:使用嵌套計數(shù)器創(chuàng)建復(fù)雜編號,如章節(jié)和小節(jié)編號。3.注意事項:確保正確重置計數(shù)器,優(yōu)化性能,簡化計數(shù)器邏輯。4.最佳實踐:命名清晰,在CSS中定義計數(shù)器,合理使用counter-increment和counter-reset。

CSS案例靈敏度:了解重要的 CSS案例靈敏度:了解重要的 Jun 20, 2025 am 12:09 AM

cssismostlycaseminemintiment,buturlsandfontfamilynamesarecase敏感。1)屬性和valueslikeColor:紅色; prenotcase-sensive.2)urlsmustmustmatchtheserver'server'scase,例如

See all articles