使用CSS提高網(wǎng)站性能的30種方法
時間:2023-05-24 04:33:01 | 來源:網(wǎng)站運(yùn)營
時間:2023-05-24 04:33:01 來源:網(wǎng)站運(yùn)營
使用CSS提高網(wǎng)站性能的30種方法:根據(jù)
http://httparchive.org的頁面重量報告,CSS在平均70個請求和2MB的網(wǎng)頁上占7個HTTP請求和70Kb的代碼。這并不是網(wǎng)站性能糟糕的最壞原因(我正看著你呢,JavaScript),但CSS面臨著特定的挑戰(zhàn):
- CSS會阻止渲染:每個 <link> and @import halts other downloads while the browser downloads and parses the required CSS file.
- CSS可以請求其他資產(chǎn):CSS可以引用圖像、視頻、字體和其他CSS文件,這會導(dǎo)致附加下載的級聯(lián)。
- CSS代碼隨時間增長:識別未使用的樣式可能很有挑戰(zhàn)性,刪除錯誤的樣式會導(dǎo)致混亂。開發(fā)人員采取簡單的方法,向不斷增長的樣式表添加更多屬性。文件越大,下載和處理時間就越長。
- CSS影響渲染:瀏覽器分三個階段呈現(xiàn)頁面:布局(元素尺寸)、繪畫(文本、顏色、邊框、陰影等)、和復(fù)合(定位)。某些CSS屬性會觸發(fā)所有三個階段,這可能會降低性能。
下面的30個技巧將幫助您優(yōu)化CSS,以改善實(shí)際和感知的響應(yīng)時間。
1.使用CSS性能分析工具
衡量是確定業(yè)績機(jī)會和評估收益的唯一途徑。所有瀏覽器都提供DevTools面板,通常通過“更多工具”菜單或鍵盤快捷鍵Ctrl打開|按下Cmd + Shift +i或F12組合鍵。
“網(wǎng)絡(luò)”面板是一個很好的起點(diǎn),刷新后,它會顯示資源下載的瀑布圖:
較長的條突出顯示加載緩慢或渲染受阻的資源(如上圖中的白色塊所示)。
該燈塔Chrome、Edge、Brave、Opera和Vivaldi中提供的面板可以評估核心Web重要指標(biāo)并提出績效建議:
相同的瀏覽器還提供了一個覆蓋面板來幫助定位未使用的CSS屬性,如紅色邊框所示:
請注意,未使用的樣式指示符:
- 刷新或?qū)Ш降叫马撁鏁r重置,以及
- 計算一段時間內(nèi)的樣式使用情況。所需樣式可能看起來未使用,因?yàn)槲匆蕴囟ǚ绞讲榭椿蚴褂脴?gòu)件。
大多數(shù)DevTools還提供性能面板。它們最常用于JavaScript評估,但也可以在應(yīng)用CSS時識別CPU和布局峰值。
在線性能工具還可以報告一系列CSS改進(jìn)因素:
- 打開重放:https://www.openreplay.com/
- 谷歌PageSpeed洞察:https://pagespeed.web.dev/
- 網(wǎng)頁測試
- [Pingdom網(wǎng)站速度測試:https://tools.pingdom.com/
2.快速間接改進(jìn)CSS
您可以在不接觸任何代碼的情況下進(jìn)行性能改進(jìn):
- 遷移到更好、更快的Web主機(jī)或考慮使用內(nèi)容交付網(wǎng)絡(luò)(CDN)
- 啟用GZIP或更好的壓縮
- 活動HTTP/2或更高版本
- 確保瀏覽器可以通過設(shè)置適當(dāng)?shù)腍TTP頭緩存CSS,例如 Expires, Last-Modified, and ETag.
3.預(yù)加載樣式表
該<鏈接rel ="預(yù)加載">標(biāo)記允許您在引用CSS之前啟動下載。當(dāng)樣式表引用出現(xiàn)在其它資源之后,或者您已經(jīng)嵌套了@導(dǎo)入指令:
!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title><!-- preload CSS file --><link rel="preload" href="styles.css" as="style" /><!-- more code --><!-- use preloaded styles --><link rel="stylesheet" href="styles.css" />
4.刪除未使用的樣式和文件
刪除所有不使用的樣式表。您可能能夠識別不再使用的頁面、小部件或框架代碼。如果您將樣式表拆分為具有明確責(zé)任級別和適當(dāng)文檔的單獨(dú)文件,則此任務(wù)會更容易。
以下工具可以通過分析HTML和CSS來識別冗余代碼:
- 聯(lián)合國中央支助系統(tǒng):https://github.com/uncss/uncss
- 清除CSS:https://purgecss.com/
- 未使用CSS:https://unused-css.com/
單獨(dú)的HTML分析通常是不夠的,但是您可以配置白名單樣式,比如那些由JavaScript激活的樣式。
5.刪除CSS攻擊和回退
舊的代碼庫可能有一系列笨拙的IE黑客和后備,試圖修復(fù)布局問題或啟用現(xiàn)代CSS屬性。該應(yīng)用程序的最后一個版本是在十年前發(fā)布的,現(xiàn)在已不再受支持。是時候刪除代碼了。
即使你很不幸有很大比例的IE用戶,許多CSS黑客使瀏覽器變慢。
6.使用fonts
使用OS字體可以保存數(shù)百KB,并避免出現(xiàn)諸如無樣式文本閃爍(FOUT)或不可見文本閃爍(FOIT)等問題。您的用戶可能根本不會注意到。當(dāng)然,你的設(shè)計師
會...7.刪除不必要的字體
標(biāo)準(zhǔn)字體需要為每種粗細(xì)和樣式創(chuàng)建單獨(dú)的文件。您可以刪除那些不常用的。
同樣,您不太可能需要字體中的所有字符和字形??梢允褂靡韵鹿ぞ呱勺煮w子集字體松鼠或指定所需的字符谷歌字體例如,加載"OpenReplay"的Oswald字體字符:
<link href="https://fonts.googleapis.com/css2?family=Oswald&text=OpenReplay" rel="stylesheet">
您還可以考慮可變字體。它們使用矢量插值定義了各種樣式、權(quán)重和斜體。該文件稍大,但只需要一種字體而不是多種字體。
8. Host font files locally
引用Google字體很容易,但額外的DNS查找、生成子集和跟蹤使用情況會帶來性能成本。本地托管字體的下載和呈現(xiàn)速度明顯更快。
Web開放字體格式2.0(WOFF2)是您唯一需要的文件版本。所有現(xiàn)代瀏覽器都支持這種字體,IE用戶可以回到OS字體。
您還應(yīng)該在CSS中定義適當(dāng)?shù)淖煮w顯示加載選項(xiàng)。以下選項(xiàng)可提供明顯的性能提升:
- 互換:使用第一個備用OS字體,直到Web字體可用。文本始終可讀,但無樣式文本的閃爍如果兩個字符集具有不同的尺寸,則(FOUT)可能不一致。
- fallback:FOIT和FOUT之間的折衷方案。文本在100ms內(nèi)不可見。然后使用Web字體(如果可用)。否則,它將恢復(fù)為交換。
- 可選:與回退相同,只是在下載Web字體后不進(jìn)行字體交換。它應(yīng)該出現(xiàn)在下一個頁面加載。
9.使用HTML<鏈接>而不是CSS @導(dǎo)入
@ import at-rule允許您在CSS中加載樣式表:
/* main.css */@import url("reset.css");@import url("base.css");@import url("grid.css");
這允許您將樣式表拆分為更小、更易于管理的樣式表,但是每個@import都會阻塞渲染。瀏覽器必須依次下載和解析每個文件。
使用HTML<鏈接>標(biāo)記效率更高,因?yàn)槊總€樣式表都是并行加載的:
<link rel="stylesheet" href="reset.css"><link rel="stylesheet" href="base.css"><link rel="stylesheet" href="grid.css">
或者...10.捆綁和縮小樣式表
HTTP/2可以比HTTP/1.1更好地服務(wù)于多個樣式表,但是單個文件需要一個頭,并且可以更有效地進(jìn)行g(shù)zip壓縮和緩存。您可以在開發(fā)過程中使用任意數(shù)量的文件,但是要使用構(gòu)建步驟來捆綁和縮小到單個樣式表中。包括Sass預(yù)處理器或PostCSS導(dǎo)入插件在內(nèi)的工具可以在一個命令中完成這項(xiàng)艱巨的工作。
11.使用現(xiàn)代CSS布局
較早的布局技術(shù),如浮動和,我敢說,HTML<表>是笨重的,難以管理,并需要大量的代碼來管理間距和媒體查詢。如果您的代碼庫中仍然有它們,那么是時候切換到:
- CSS列:https://developer.mozilla.org/docs/Learn/CSS/CSS_layout/Multiple-column_Layout。用于類似報紙的文本欄。
- CSS Flexbox:https://developer.mozilla.org/docs/Learn/CSS/CSS_layout/Flexbox.對于一維布局,可以選擇換行到下一行。適用于菜單、圖片庫、卡片等。
- CSS網(wǎng)格:https://developer.mozilla.org/docs/Learn/CSS/CSS_layout/Grids。對于具有顯式行和列的二維布局。非常適合頁面布局。
所有這些都更易于開發(fā),使用更少的代碼,渲染更快,并且可以適應(yīng)不同的屏幕大小,而無需媒體查詢。
非常舊的瀏覽器不支持這些屬性,它們將每個元素顯示為一個標(biāo)準(zhǔn)塊。這導(dǎo)致了一個更簡單、更快的類似移動設(shè)備的線性布局,而且?guī)缀鯖]有理由添加后備。
12.用CSS效果替換圖像
盡可能使用CSS代碼生成圖形,而不是引用圖像?,F(xiàn)代的瀏覽器為復(fù)雜的形狀提供了漸變、帶圖案的邊框、圓角、陰影、濾鏡、疊加、混合模式、蒙版、剪切和偽元素。
CSS效果使用的帶寬要少得多,可重復(fù)使用,易于修改,并且通常可以制作動畫。
13.從不嵌入base64編碼的位圖
您可以使用base64編碼將圖像嵌入到CSS中,base64編碼將像素轉(zhuǎn)換為文本字符:
.imgbackground { background-image: url('data:image/jpg;base64,0123456...');}
該技術(shù)減少了HTTP請求,但可能會損害CSS性能:
- base64字符串通常比二進(jìn)制數(shù)據(jù)大30
- 瀏覽器需要額外的步驟來解碼字符串,并且
- 修改一個像素會使整個CSS文件無效,因此必須重新下載。
只有當(dāng)圖像很小,生成的字符串不比URL長多少時,才考慮base64編碼。
14.盡可能使用SVG
“可縮放矢量圖形”包含繪圖指令,例如“在此點(diǎn)繪制一個半徑為50個單位、紅色填充和藍(lán)色3個單位邊框的圓”:
<svg xmlns="https://www.w3.org/2000/svg" viewBox="0 0 120 120"> <circle cx="60" cy="60" r="50" stroke-width="3" stroke="#00f" fill="#ff0" /><svg>
它們是徽標(biāo)和圖表的理想選擇,在任何分辨率下都很好看,并且文件大小應(yīng)該比位圖小。
在可行的情況下,您可以將SVG直接內(nèi)聯(lián)到CSS代碼中:
.svgbackground { background: url('data:image/svg+xml;utf8,<svg xmlns="https://www.w3.org/2000/svg" viewBox="0 0 120 120"><circle cx="60" cy="60" r="50" stroke-width="3" stroke="#00f" fill="#f0" /></svg>') center no-repeat;}
這將增加樣式表的大小,但對于必須立即顯示的較小的可重用圖標(biāo)來說,這很有用。
15.使用CSS設(shè)置SVG樣式
直接將SVG代碼嵌入到HTML中通常更有用和有效,例如。
<main> <svg xmlns="https://www.w3.org/2000/svg" viewBox="0 0 120 120"> <circle cx="60" cy="60" r="50" stroke-width="3" stroke="#00f" fill="#ff0" /> <svg></main>
這將SVG放入DOM中。SVG的屬性具有低特異性,并且可以在CSS中覆蓋:
/* change to green and black */circle { stroke-width: 10px; stroke: #000; fill: #0f0;}
您可以:
- 從HTML中刪除SVG樣式屬性
- 對不同的節(jié)或頁使用具有不同樣式的相同圖像,以及
- 動畫任何CSS屬性。
開源會話重放
OpenReplay是一個開源會話回放套件,可讓您查看用戶在Web應(yīng)用上執(zhí)行的操作,從而幫助您更快地解決問題。OpenReplay是自托管的,可以完全控制您的數(shù)據(jù)。開始享受調(diào)試體驗(yàn)-開始免費(fèi)使用OpenReplay。16.成為CSS框架的犧牲品
CSS框架在你開始web開發(fā)時是很有幫助的。他們提供了一套有吸引力的風(fēng)格,所以你可以迅速成為生產(chǎn)力。缺點(diǎn)?......
- 框架可以包含大量代碼,但您可能只使用了可用樣式中的一小部分。在可能的情況下,檢查您是否包含所需的功能,而不是更多。
- 當(dāng)框架樣式不完全符合您的需要時,覆蓋框架樣式可能會很有挑戰(zhàn)性。結(jié)果是兩組樣式,而實(shí)際上只需要一組樣式。
17.預(yù)處理代碼生成
CSS預(yù)處理器(如Sass)通過提供變量、循環(huán)、函數(shù)和mixin等語言構(gòu)造,使CSS開發(fā)受益匪淺。也就是說,一定要檢查生成的代碼,以確保它與您自己編寫的代碼一樣簡潔。特別是,深度嵌套的結(jié)構(gòu)可能會導(dǎo)致過于復(fù)雜的選擇器,從而使樣式表變得龐大。
18.簡化您的選擇器
現(xiàn)代瀏覽器解析長選擇器沒有問題,但是降低復(fù)雜性將減小文件大小,提高性能,并使代碼更易于維護(hù)。
您還應(yīng)該考慮新的:is、:where和:has選擇器,它們可以像這樣轉(zhuǎn)換CSS選擇器:
article section.primary:not(:first-child) h1,article section.primary:not(:first-child) h2,article section.primary:not(:first-child) p,article section.secondary:not(:first-child) h1,article section.secondary:not(:first-child) h2,article section.secondary:not(:first-child) p { color: red;}
變成一句簡潔的話:
article section:not(:first-child):where(.primary, .secondary) :where(h1, h2, p) { color: red;}
19.避免昂貴的屬性
某些CSS屬性比其他屬性需要更多的處理。將這段代碼添加到樣式表中,看看滾動是如何變得不穩(wěn)定的!
*, ::before, ::after { box-shadow: 3px 5px 5px rgba(0,0,0,0.3);}
以下特性觸發(fā)CPU密集型繪制計算:
- position: fixed
- border-radius
- box-shadow
- text-shadow
- opacity
- transform
- filter
- backdrop-filter
- background-blend-mode
這并不是說您不應(yīng)該使用它們,但是在將這些屬性應(yīng)用于許多元素時要謹(jǐn)慎。
20.使用CSS轉(zhuǎn)換和動畫
CSS過渡和動畫將比JavaScript支持的效果更平滑,后者改變了相同的屬性。但是,最好避免對觸發(fā)重新布局的屬性進(jìn)行動畫處理,例如尺寸(寬度、高度、填充、邊框)或位置(頂部、底部、左側(cè)、右側(cè)、邊距)。這會導(dǎo)致整個頁面在每個動畫幀上重新布局。
有效的動畫特性包括:
- opacity
- filter模糊、對比度、陰影等。
- transform:平移(移動)、縮放、旋轉(zhuǎn)等。
瀏覽器可以使用硬件加速的GPU在自己的圖層中渲染這些效果,這只會影響最終的合成渲染階段。
通過使用將元素從頁面流中取出,可以提高其他動畫屬性的性能位置:絕對。
21.用途意志改變必要時
該意志改變性質(zhì)警告瀏覽器某個元素將以特定方式進(jìn)行動畫處理,以便瀏覽器可以提前進(jìn)行優(yōu)化:
.animatedelement { will-change: transform, opacity;}
可以設(shè)置任意數(shù)量的逗號分隔值。
改變意愿應(yīng)該作為解決特定性能問題的最后手段。不應(yīng)將其應(yīng)用于太多的元素或在頁面加載時立即啟動動畫。給予瀏覽器一點(diǎn)時間進(jìn)行優(yōu)化。
22. @transkey_groupall~trans
HTTP協(xié)議保存-數(shù)據(jù)標(biāo)題指示用戶已請求縮減的數(shù)據(jù)。瀏覽器可能會將此選項(xiàng)標(biāo)記為"lite"或"turbo"模式,當(dāng)啟用此選項(xiàng)時,會顯示保存-數(shù)據(jù)標(biāo)頭隨每個瀏覽器請求一起發(fā)送:
GET /main.css HTTP/2.0Host: mysite.comSave-Data: on
服務(wù)器可以檢測報頭并相應(yīng)地作出響應(yīng)。例如,它可以提供更簡單的CSS文件,該文件具有使用OS字體、塊顏色和更少圖像的線性布局。
服務(wù)器必須在修改請求時返回以下標(biāo)頭,以確保輕量級CSS文件在用戶停用時不會被重用保存-數(shù)據(jù):
Vary: Accept-Encoding, Save-Data
客戶端JavaScript還可以檢測保存-數(shù)據(jù)選項(xiàng)卡頁面上創(chuàng)建或編輯條目.下面的代碼添加全用戶體驗(yàn)類添加到<超文本標(biāo)記語言>元素時保存-數(shù)據(jù)是
不啟用:
if ('connection' in navigator && !navigator.connection.saveData) { document.documentElement.classList.add('fullUX');}
然后,樣式表可以應(yīng)用適當(dāng)?shù)臉邮?,而無需任何服務(wù)器交互:
/* no hero image by default */header { background-color: #ceb; background-image: none;}/* hero image when Save-Data is not enabled */.fullUX header { background-image: url('bigimg.jpg');}
prefers-reduced-data media查詢提供了一個僅CSS的替代方案,盡管目前還沒有任何瀏覽器支持它:
/* no hero image by default */header { background-color: #ceb; background-image: none;}/* hero image when no Save-Data */@media (prefers-reduced-data: no-preference) { header { background-image: url('bigimg.jpg');}}
23.考慮關(guān)鍵內(nèi)聯(lián)CSS
Tools such as Lighthouse may recommend you
"inline critical CSS" or
"reduce render-blocking style sheets. " by:
- 標(biāo)識頁面加載時可見的折疊上方元素所使用的基本樣式。
- 將關(guān)鍵CSS內(nèi)聯(lián)到 <style> tag in your <head>.
- 異步加載剩余的CSS以避免阻塞頁面的呈現(xiàn)。
下面的示例將剩余的CSS作為"打印"樣式表,瀏覽器以較低的優(yōu)先級異步加載。該加載代碼在下載后將其切換回所有媒體的標(biāo)準(zhǔn)樣式表。該<諾斯克文>確保在未啟用JavaScript的情況下仍然加載:
<head><!-- critical styles --><style> body { font-family: sans-serif; color: #111; }</style><!-- load remaining styles --><link rel="stylesheet" href="main.css" media="print" onload="this.media='all'"><noscript> <link rel="stylesheet" href="main.css"></noscript><head>
該技術(shù)顯著提高了性能,并可能有利于具有一致界面的網(wǎng)站或單頁面應(yīng)用程序。較大的站點(diǎn)可能更具挑戰(zhàn)性:
- 要識別折疊是不可能的--每個設(shè)備都不一樣。
- 具有不同頁面布局的站點(diǎn)需要不同的關(guān)鍵CSS。
- 該技術(shù)只對用戶的第一頁加載有益。后續(xù)頁面加載可以使用緩存的樣式表,因此內(nèi)聯(lián)CSS是不必要的,并且會降低性能。
如果您有一個小型站點(diǎn),可以可靠地自動化構(gòu)建過程,或者有一個單頁應(yīng)用程序,請考慮關(guān)鍵的CSS。
24.創(chuàng)建針對設(shè)備的樣式表
包含所有設(shè)備代碼的單個(構(gòu)建)樣式表對于大多數(shù)站點(diǎn)都是實(shí)用的。然而,如果你的代碼庫很大,或者移動的和桌面設(shè)計有很大的不同,你可以創(chuàng)建特定于設(shè)備的樣式表,例如。
<!-- core styles for all devices --><link rel="stylesheet" href="core.css"><!-- served to screens less than 400px wide --><link rel="stylesheet" media="(max-width: 399px)" href="mobile.css"><!-- served to screens 400px or wider --><link rel="stylesheet" media="(min-width: 400px)" href="desktop.css">
25.考慮CSS遏制
CSS包含通過允許您標(biāo)識頁的獨(dú)立子樹來提高性能。然后瀏覽器可以優(yōu)化特定DOM內(nèi)容塊的呈現(xiàn)過程。
該集裝箱屬性支持以空格分隔的列表形式顯示以下一個或多個值:
- none:無包含(默認(rèn))
- layout:將元素與頁面的其余部分隔離:其內(nèi)容不會影響其他元素的布局
- paint:將元素裁剪為特定大小而不出現(xiàn)任何可見溢出
- size:元素的行內(nèi)和塊尺寸與內(nèi)容無關(guān)-無需計算子元素的大小
- inline-size:類似于 size but applies to inline dimensions only.
還提供了兩個特定值:
- strict:應(yīng)用所有包含規(guī)則,除了 none
- content:應(yīng)用 layout and paint
考慮一個具有長<烏爾>列表設(shè)置為包含:嚴(yán)格;。更改任何子項(xiàng)的內(nèi)容時<里>,瀏覽器將不會重新計算該項(xiàng)目、列表中的其他項(xiàng)目或頁面上的任何其他元素的大小或位置。渲染速度更快。
26.嘗試漸進(jìn)式渲染
漸進(jìn)式呈現(xiàn)是一種為每個頁面和組件定義單獨(dú)樣式表的技術(shù)。這將有利于具有大量CSS的大型站點(diǎn),這些站點(diǎn)的頁面具有不同的設(shè)計或由一系列組件構(gòu)成。
- 不需要在第一個頁面加載時為不使用的組件下載一個包含CSS的大型樣式表。
- 對一個組件的樣式所做的更改不會影響其他緩存文件。
你可以領(lǐng)養(yǎng)原生Web組件或在組件出現(xiàn)在HTML中之前立即引用較小的CSS文件:
<body><!-- core styles --><link rel="stylesheet" href="core.css" /><!-- header --><link rel="stylesheet" href="header.css" /><header>header content</header><!-- article --><link rel="stylesheet" href="article.css" /><main> <h1>title</h1> <!-- widget --> <link rel="stylesheet" href="widget.css" /> <div class="widget">widget content</div></main><!-- footer --><link rel="stylesheet" href="footer.css" /><footer>footer content</footer></body>
大多數(shù)瀏覽器在HTML下載時呈現(xiàn)HTML。每個樣式表<鏈接>都是呈現(xiàn)阻止的,但每個文件不應(yīng)超過幾千字節(jié)。
較舊的瀏覽器可能會顯示一個空白頁面,直到所有CSS都加載完畢,但總體影響應(yīng)該不會比一個大的呈現(xiàn)阻塞樣式表更糟。
27.采用web組件
本機(jī)瀏覽器Web組件提供了一種創(chuàng)建封裝的、單一責(zé)任的自定義功能的方法。換句話說,您可以創(chuàng)建自己的HTML標(biāo)記,例如<hello-world>,它與每個框架都兼容。
JavaScript框架引入了這些概念,但它們的組件從未真正與其他CSS或JavaScript分離。原生組件提供了一個
Shadow DOM,它隔離了元素,因此樣式和功能不會泄漏。優(yōu)點(diǎn):
- 默認(rèn)情況下,組件的CSS負(fù)責(zé)其樣式。只有在使用該組件時才會下載和緩存它。
- 組件CSS可以比頁面CSS更簡潔,因?yàn)樗恍枰獜?fù)雜的或特定于位置的選擇器。
組件仍然可以顯示shadow:part元素,因此可以進(jìn)行有限的外部樣式設(shè)置。
28.使用良好實(shí)踐開發(fā)技術(shù)
良好實(shí)踐技術(shù)會不斷發(fā)展、過期,并且因開發(fā)人員而異,但可靠的方法包括:
- 將您的CSS組織成具有個人職責(zé)的較小文件,例如:頁眉、頁腳、表單元素、表格、菜單等。
- 使用linting工具和瀏覽器DevTools確保設(shè)置有效的屬性和值。
- 使用以下工具自動化構(gòu)建過程以構(gòu)造單個樣式表和自動刷新 瀏覽器同步.
- 采用移動優(yōu)先的方法。默認(rèn)樣式創(chuàng)建更簡單、線性、類似移動設(shè)備的布局。當(dāng)空間允許時,媒體查詢和固有的網(wǎng)格布局可以應(yīng)用更復(fù)雜的桌面設(shè)計。
- 在移動的和桌面瀏覽器中徹底測試您的樣式。至少,使用以下內(nèi)容:
- 桌面:Firefox、Chrome(Chrome、Edge、Brave、Opera或Vivaldi)和Safari瀏覽器
- 移動的:Android上的Chrome和iOS上的Safari。
- 記錄您的代碼。您不會記得自己在一個月內(nèi)做了什么--其他開發(fā)人員將如何科普!帶有示例組件的樣式指南是理想的選擇。
29.擁抱瀑布
CSS新手通常會嘗試?yán)@過全局名稱空間,并分別設(shè)置每個組件的樣式。CSS-in-JS框架通常在構(gòu)建時創(chuàng)建隨機(jī)類名,因此組件樣式不會沖突。
最后,使用CSS級聯(lián)比使用CSS級聯(lián)更好。例如,你可以設(shè)置默認(rèn)字體、顏色、大小、邊框等。它們是普遍應(yīng)用的,然后在必要時覆蓋它們。這樣可以減少重復(fù),縮短樣式表的長度,提高樣式表的性能。
30.學(xué)會愛上CSS
一知半解大有幫助?,F(xiàn)代CSS的幾行代碼可以取代和改進(jìn)十年前需要復(fù)雜JavaScript的效果。您對CSS了解得越多,需要編寫的代碼就越少。
誠然,CSS很容易學(xué)習(xí),但掌握起來很有挑戰(zhàn)性。沒有人期望您理解數(shù)百個屬性,但是當(dāng)您下次在Stack Overflow或ChatGPT上找到解決方案時,逐步瀏覽代碼是值得的。扎實(shí)掌握CSS基礎(chǔ)知識可以徹底改變您的工作流程、增強(qiáng)您的應(yīng)用程序并顯著提高性能。
如果你正在學(xué)習(xí)css,為你整理了一套30天的課程體系,可以進(jìn)入一起學(xué)習(xí)!
為幫助到一部分同學(xué)不走彎路,真正達(dá)到一線互聯(lián)網(wǎng)大廠前端項(xiàng)目研發(fā)要求,首次實(shí)力寵粉,打造了《30天挑戰(zhàn)學(xué)習(xí)計劃》,內(nèi)容如下:HTML/HTML5,CSS/CSS3,JavaScript,真實(shí)企業(yè)項(xiàng)目開發(fā),云服務(wù)器部署上線,從入門到精通
- PC端項(xiàng)目開發(fā)(1個)
- 移動WebApp開發(fā)(2個)
- 多端響應(yīng)式開發(fā)(1個)
共4大完整的項(xiàng)目開發(fā) !一行一行代碼帶領(lǐng)實(shí)踐開發(fā),實(shí)際企業(yè)開發(fā)怎么做我們就是怎么做。從學(xué)習(xí)一開始就進(jìn)入工作狀態(tài),省得浪費(fèi)時間。
從學(xué)習(xí)一開始就同步使用 Git 進(jìn)行項(xiàng)目代碼的版本的管理,Markdown 記錄學(xué)習(xí)筆記,包括真實(shí)大廠項(xiàng)目的開發(fā)標(biāo)準(zhǔn)和設(shè)計規(guī)范,命名規(guī)范,項(xiàng)目代碼規(guī)范,SEO優(yōu)化規(guī)范
從藍(lán)湖UI設(shè)計稿 到 PC端,移動端,多端響應(yīng)式開發(fā)項(xiàng)目開發(fā)
- 真機(jī)調(diào)試,云服務(wù)部署上線;
- Linux環(huán)境下 的 Nginx 部署,Nginx 性能優(yōu)化;
- Gzip 壓縮,HTTPS 加密協(xié)議,域名服務(wù)器備案,解析;
- 企業(yè)項(xiàng)目域名跳轉(zhuǎn)的終極解決方案,多網(wǎng)站、多系統(tǒng)部署;
- 使用 使用 Git 在線項(xiàng)目部署;
這些內(nèi)容在《30天挑戰(zhàn)學(xué)習(xí)計劃》中每一個細(xì)節(jié)都有講到,包含視頻+圖文教程+項(xiàng)目資料素材等。只為實(shí)力寵粉,真正一次掌握企業(yè)項(xiàng)目開發(fā)必備技能,不走彎路 !
過程中【不涉及】任何費(fèi)用和利益,非誠勿擾 。如果你沒有添加助理老師微信,可以添加下方微信,說明要參加30天挑戰(zhàn)學(xué)習(xí)計劃,來自本站!老師會邀請你進(jìn)入學(xué)習(xí),并給你發(fā)放相關(guān)資料。30 天挑戰(zhàn)學(xué)習(xí)計劃 Web 前端從入門到實(shí)戰(zhàn) | arry老師的博客-艾編程