柚子快報邀請碼778899分享:如何使 CSS 沖突可預(yù)測
柚子快報邀請碼778899分享:如何使 CSS 沖突可預(yù)測
CSS 在大規(guī)模上可能具有挑戰(zhàn)性。這一事實是顯而易見的,因為 人們想出的解決方案使其更容易處理。最大的 CSS的挑戰(zhàn)是這樣的:
你怎么能確定你的CSS變化不會產(chǎn)生意想不到的影響?
這是由于 CSS 的“C”部分:“級聯(lián)樣式表”。我一直在做 這個 Web 開發(fā)的事情始于 2013 年左右。我?guī)缀踅?jīng)歷過每一個 你能想到的這個CSS挑戰(zhàn)的解決方案。從常規(guī)CSS到好的 命名約定,通過預(yù)處理器、css-modules、css-in-js 和實用程序 CSS 類。
在我的帖子中,我如何在 2021 年建立了一個現(xiàn)代網(wǎng)站, 我解釋說,這個網(wǎng)站使用?Tailwind CSS?造型。我對此感到非常高興,因為它讓我很容易 在大約 12kbs 的 CSS 中擁有可維護且一致的樣式解決方案 對于整個網(wǎng)站。
所以我的網(wǎng)站并沒有真正利用我將要向您展示的功能, 但無論如何,我都想告訴你這一切,因為它非常簡單 Remix 獨有的功能,對開發(fā)人員的生產(chǎn)力和 性能。
好的,假設(shè)在我的“關(guān)于我”頁面上,我想自定義 某物的樣式。例如,如果我想把所有的 s 都變成藍色怎么辦? 如果你想自己做關(guān)于頁面,你會怎么做?如果你是 使用 CSS-in-JS,讓我們想象一下你不是。所以你可能會 想做這樣的事情:h1
.about-page h1 {
color: blue;
}
然后,請確保在某處應(yīng)用了類名 在 DOM 樹中排名靠前。about-page
為什么是班級名稱?命名它,對嗎?你不會想的 在其他頁面上有 s 突然全部變成藍色。但是,讓我們考慮一下 問題在這里。我們只需要當(dāng)用戶在頁面上時,這個CSS就會出現(xiàn)在頁面上,對吧?那么,為什么我們甚至在其他頁面上都有CSS?不會 如果我們只是......喜歡。。。除了頁面之外,其他任何頁面上都沒有 CSS?about-pageh1/about/about
而且我不是在談?wù)撝皇茄舆t加載 CSS 或任何東西。那不是 足夠。我們需要CSS不僅在用戶到達瀏覽器時到達瀏覽器 頁面,但也要確保在用戶?離開頁面。/about/about
請允許我描述一下這個 gif 中發(fā)生的事情。我們從頁面開始 并且有一個文件的標(biāo)簽。該文件正在制作 我們的標(biāo)題是藍色的。然后,當(dāng)我們導(dǎo)航到主頁時,該標(biāo)簽 從頁面中刪除,并恢復(fù)為常規(guī)白色。/aboutabout-[hash].cssh1h1
很簡單,對吧?當(dāng)我第一次看到這個時,我只是坐在那里處理我的東西 正在看。這幾乎太簡單了,我?guī)缀跻鷼饬?,我從來沒有想過。 我希望 Remix 不是第一個有這個想法的人,但它肯定不是 流行的想法。我不知道有任何其他框架或工具可以實現(xiàn)這一點。
不過,讓我更進一步。以防萬一不清楚有多深 這是。從代碼的角度來看,這是如何工作的:
import type { LinksFunction } from 'remix'
import aboutStyles from '~/styles/routes/about.css'
export const links: LinksFunction = () => {
return [{ rel: 'stylesheet', href: aboutStyles }]
}
export default function AboutScreen() {
return
}
在混音中,當(dāng)您導(dǎo)入文件時,它會返回一個 URL。.css
此路由模塊的作用是告訴 Remix:“當(dāng)此路由 在 頁面上,這是我在頁面上需要的鏈接標(biāo)簽。而 Remix 確保了這些 鏈接標(biāo)簽在頁面上,并且在以下情況下它們會從頁面中刪除 該路由未處于活動狀態(tài)。
那么這在實踐中意味著什么呢?這意味著當(dāng)你在CSS中工作時 文件,您可以準(zhǔn)確找到使用它的位置(使用它的路由) in),您確切地知道您的更改將產(chǎn)生什么影響。
在實踐中,您通常會在單個路由上使用 CSS 文件,因此 通常只需要擔(dān)心一個頁面。所以你可以自由地 開發(fā)您的 CSS,而不必?fù)?dān)心您的更改會影響任何其他頁面 比你要找的那個。您甚至不需要遵循命名空間 如果你不想的話,約定。你不需要一個工具來自動命名你的 適合您的CSS樣式。而且 Remix 也不會對你的 CSS 做任何事情。只是 為您加載和卸載?CSS。
可重復(fù)使用的組件?
但是可重用組件的CSS呢?對于這些,您需要制作 確保他們的 CSS 文件出現(xiàn)在您使用該組件的每個頁面上。在實踐中,它是 最有可能的是,你只想在每個頁面上都顯示它,這樣你就可以把它放在你的根目錄中 路由,所以它出現(xiàn)在每個頁面上。一旦你這樣做了,你必須承認(rèn)什么時候 您對該文件(或您在根目錄上加載的任何其他 CSS 文件)進行更改 route)將在每個頁面上處于活動狀態(tài)(同樣,這是您想要?的)。
在這種情況下,它實際上不是關(guān)于可重用的組件,而是關(guān)于 記住要考慮出現(xiàn) CSS 文件的頁面并確保 您正確地命名了相對于將位于 CSS 文件處于活動狀態(tài)的頁面。
這篇文章的重點更多的是指出這個事實:
使用 Remix,可以明確 CSS 所在的頁面 文件處于活動狀態(tài),可以靜態(tài)地確定這些頁面的 給定的CSS文件。
具有可預(yù)測的結(jié)果 您所做的更改是可維護性的巨大勝利。
柚子快報邀請碼778899分享:如何使 CSS 沖突可預(yù)測
精彩內(nèi)容
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。