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

首頁(yè) web前端 css教學(xué) Web組件庫(kù)上的一點(diǎn)

Web組件庫(kù)上的一點(diǎn)

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)用場(chǎng)景之一是模式庫(kù)。與其像Bootstrap那樣使用<div>,或像Bulma那樣使用<code><div>,不如使用自定義元素,例如<code><designsystem-tabs></designsystem-tabs>。新的Shoelace庫(kù)使用sl命名空間來(lái)定義其組件。它是一個(gè)完全基於Web Components的模式庫(kù),其中的標(biāo)籤是<sl-tab-group></sl-tab-group>元素。

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

另一個(gè)好處是,組件可以使用(並且確實(shí)使用了)Shadow DOM。這提供了一種直接來(lái)自Web平臺(tái)的隔離機(jī)制。對(duì)於我們這些CSS開(kāi)發(fā)者來(lái)說(shuō),這意味著標(biāo)籤組件中標(biāo)籤的樣式是使用.tab類(lèi)完成的(哇,太酷了!),但它在該組件中是隔離的。即使使用這麼通用的名稱(chēng),我也不會(huì)意外地影響頁(yè)面上使用該通用類(lèi)的其他組件,也不會(huì)有一些外部CSS來(lái)干擾這裡的內(nèi)部結(jié)構(gòu)。 Shadow DOM就像一道安全牆,防止樣式?jīng)┗驖B入。

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

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

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

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

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

說(shuō)到讓人生氣的事情,Andrea Giammarchi對(duì)Web Components的現(xiàn)狀有一個(gè)很好的觀點(diǎn):

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

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

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

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

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

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

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

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

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

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

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

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

我們對(duì)其進(jìn)行了測(cè)試,事實(shí)證明,至少在低級(jí)邏輯和拼圖行為時(shí),Sass可以替換JavaScript。除了地圖,混音,功能和大量數(shù)學(xué)外,我們都設(shè)法使我們的Tangram難題栩栩如生,沒(méi)有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計(jì)數(shù)器:一個(gè)逐步教程,示例 CSS計(jì)數(shù)器:一個(gè)逐步教程,示例 Jun 12, 2025 am 10:31 AM

CSSCounters是一種用於創(chuàng)建自動(dòng)編號(hào)的工具。 1.基本用法:通過(guò)counter-reset和counter-increment定義和操作計(jì)數(shù)器,如在h2前顯示"SectionX."。 2.高級(jí)用法:使用嵌套計(jì)數(shù)器創(chuàng)建複雜編號(hào),如章節(jié)和小節(jié)編號(hào)。 3.注意事項(xiàng):確保正確重置計(jì)數(shù)器,優(yōu)化性能,簡(jiǎn)化計(jì)數(shù)器邏輯。 4.最佳實(shí)踐:命名清晰,在CSS中定義計(jì)數(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