端開發(fā)中長度單位有很多,最為常用和熟知的肯定就是px了,隨著前端的不斷發(fā)展,em和rem也越來越普及,只用px一把梭的時代早已成為過去。是px過時了嗎?如果對這些單位的使用場景不夠了解,可能就會拿著一個rem從頭梭到尾了。本篇我們來好好梳理一下css中的長度單位以及它們的使用場景,我們要在合適的場景使用合適的單位。
px是像素點單位,與之線性相關(guān)的單位有mm(毫米)、cm(厘米)、in(英寸)、pt(點,印刷術(shù)語,1/72英寸)、pc(派卡,印刷術(shù)語,12點)。
1in = 25.4mm = 2.54cm = 6pc = 72pt = 96px
em是相對長度單位,適合基于特定的字號進行排版。1em=當前元素的字號,其準確值取決于作用的元素。
.padded {
font-size: 16px;
padding: 1rem;
}
上面的代碼設(shè)置了元素的內(nèi)邊距為16px。最終瀏覽器會根據(jù)相對單位計算出絕對值。
使用em來設(shè)置padding、height、width、border-radius很合適,當前元素如果繼承了不同的字號,響應(yīng)的內(nèi)邊距、寬高也會自動隨之縮放。
需要注意的是,如果使用em定義元素的字號,em的表現(xiàn)會稍有不同。上面提到,當前元素的字號決定了1em的值,但是,如果聲明font-size:1.2em,該元素的字號肯定不能等于自己的1.2倍。實際上,此時font-size是根據(jù)當前元素繼承的字號來計算的。
em示例
上圖可以看到,p標簽中的字號是1.2*16=19.2px,font-size是根據(jù)繼承的字號計算的。
em需要注意的就在于此,同時用它指定一個元素的字號和其他屬性時,瀏覽器必須先計算字號,然后使用這個計算值算出其余的屬性值。
另外,當用em來指定多重嵌套的元素的字號時,就會產(chǎn)生意外的結(jié)果,內(nèi)嵌的元素會一直繼承上級的字號,導(dǎo)致要么嵌套字號越來越大,要么越來越小。
rem和em很像,其實和em的理念很像,都是相對單位,rem中的r是root,顧名思義,rem是相對一個root元素(一般以html標簽作為根元素)計算值的,不管在文檔的什么位置。
rem結(jié)合了px和em的優(yōu)先,既保留了相對單位的優(yōu)勢,又簡單易用可控。那只用rem行嗎?行,也不行。如果你只了解習(xí)慣這一個單位,就要充分發(fā)揮rem的優(yōu)勢,全站梭到底也沒什么不行的。但是如果你想寫出簡單好看的css代碼,在不同的場景下使用適當?shù)膯挝粫屇愫湍愕年犛焉偬嗽S多的坑。
一般情況下,我會使用rem設(shè)置字號,用px設(shè)置邊框、用em來設(shè)置其他大部分的屬性,尤其是內(nèi)邊距、外邊距、圓角等。這樣字號是可預(yù)測的,同時還能在其他因素改變元素字號時,借助em縮放內(nèi)外邊距。你覺得呢?
我們先介紹一下概念:
視口:瀏覽器窗口里網(wǎng)頁可見部分的邊框區(qū)域,不包括瀏覽器的地址欄、工具欄、狀態(tài)欄。
vh:視口高度的1/100
vw:視口寬度的1/100
vmin:視口寬、高中較小的一方的1/100
vmax:視口寬、高中較大的一方的1/100
從定義上,相信小伙伴們已經(jīng)明白了視口單位的用法。我來介紹相對視口單位的一個比較特別的用途:設(shè)置字號。誒?之前不是說設(shè)置字號用rem嗎?用視口單位能有什么特別的呢?
用rem設(shè)置字號的時候,為了適配不同的屏幕大小,免不了要使用@media根據(jù)不同的屏幕設(shè)置根元素的字號大小,有一個小小的問題是,如果動態(tài)去調(diào)整瀏覽器的寬度,達到設(shè)置的斷點時,一定程度會導(dǎo)致頁面的字體突然變大或縮小。但是,如果是使用vw來設(shè)置字號呢?頁面的字號是不是就不會突然的變化?會很平滑?
當然了,這種用法在實際應(yīng)用中推廣的程度不是特別高,有些是因為瀏覽器支持的問題,有些是因為沒必要因為這么一點點的優(yōu)化,而放棄心愛的rem。
今天所寫的內(nèi)容主要是幫大家回顧一下css單位的用途及場景,還有一些單位(如fr)還沒有提及,將會在后面的文章中結(jié)合別的屬性寫。各種單位的存在一定都有各自的特長和適合的場景,偶爾打開一下思路,也許能有更好的解決方案。大家有想和我分享的內(nèi)容嗎?感謝評論關(guān)注哦!
誰能想到,早在 2022 年 6 月 15 日正式退役的 IE 瀏覽器,近日還能因漏洞被推上風(fēng)口浪尖?
全球網(wǎng)絡(luò)安全解決方案提供商 Check Point Research(簡稱為 CPR)最近發(fā)現(xiàn):有攻擊者在過去 18 個月里,通過構(gòu)建特殊的 Windows Internet 快捷方式文件(即 .url),引誘用戶點擊并調(diào)用 IE 瀏覽器來訪問攻擊者控制的 URL,以此進行惡意攻擊。
據(jù)了解,這種漏洞甚至可以繞過 Windows 10、Windows 11 系統(tǒng)的安全防護。
強制調(diào)用 IE 瀏覽器打開 URL
據(jù)悉,該漏洞由 CPR 研究人員發(fā)現(xiàn),追蹤編號為 CVE-2024-38112,微軟方面將其描述為 Windows MSHTML 平臺欺騙漏洞,自 2023 年 1 月以來就一直在被黑客利用:“我們發(fā)現(xiàn)的惡意 .url 樣本最早可以追溯到 2023 年 1 月(一年多前),最晚可以追溯到 2024 年 5 月 13 日。這表明,網(wǎng)絡(luò)罪犯使用這種攻擊技術(shù)已經(jīng)有一段時間了。”
通過對攻擊過程的詳細分析,CPR 研究人員將該漏洞的實現(xiàn)分解為兩個步驟:
第一步是利用“mhtml”技巧,使得攻擊者可調(diào)用已退役的 IE 而非更安全的 Chrome/Edge。
第二步是通過某種 IE 技巧隱藏 .hta 這個擴展名,讓受害者以為他們只是打開了一個 PDF 文件——但實際上,他們正在下載并啟動一個惡意的 .hta 應(yīng)用程序。
那么接下來,我們就先了解一下這個能在 Windows 中調(diào)用 IE 瀏覽器的“mhtml”技巧。
一般情況下,Internet 快捷方式文件(即 .url)是一個文本文件,里面包含各種配置信息,如顯示什么圖標、雙擊時打開什么鏈接等。將其保存為 .url 文件并雙擊后,Windows 會在默認瀏覽器中打開這個 URL。
然而,攻擊者發(fā)現(xiàn)可以在 URL 指令中使用 mhtml: URI 處理程序,以此強制用 IE 瀏覽器打開指定的 URL。以下面這個惡意 .url 樣本為例:
可以看到,.url 文件的最后幾行字符串指向 Microsoft Edge 應(yīng)用程序文件中的一個自定義圖標。乍一看,它似乎指向一個 PDF 文件,但實際上并非如此。CPR 研究人員發(fā)現(xiàn)這個關(guān)鍵字的值與通常的關(guān)鍵字有很大不同:普通 .url 文件的參數(shù)類似于 URL=https://www.google.com;但這個惡意樣本的值是 URL=mhtml:http://cbmelipilla.cl/te/test1.html!x-usc:http://cbmelipilla.cl/te/test1.html。
它使用了一個特殊的前綴“mhtml:”。簡單說明一下 MHTML,這是一種“聚合 HTML 文檔的 MIME 封裝”文件,是 IE 瀏覽器中引入的一種存儲文件技術(shù),可將包括圖像在內(nèi)的整個網(wǎng)頁封裝成一個單一檔案。
CPR 研究人員指出,這樣的惡意 .url 文件在 Windows 11 中會顯示為一個指向 PDF 文件的鏈接:
如果受害者想打開 PDF,雙擊這個 .url 文件,然后便會彈出下面這個來自 IE 瀏覽器的窗口:
沒錯,攻擊者使用 mhtml: URI 啟動 URL 后,Windows 會自動在 IE 瀏覽器中啟動 URL,而不是默認瀏覽器。如文章開頭所說,IE 瀏覽器早在 2022 年就退出歷史舞臺了,在典型的 Windows 10/11 操作系統(tǒng)上,因其安全性不足,用戶一般無法直接用 IE 去訪問網(wǎng)站。
不過有一點需要明確:盡管 IE 已被微軟宣布“退役”,但從技術(shù)上講,IE 仍是 Windows 系統(tǒng)的一部分,IE 使用的專有瀏覽器引擎 MSHTML (Trident)也仍包含在操作系統(tǒng)中,微軟計劃至少支持該引擎到 2029 年。
因此,攻擊者使用“mhtml”技巧,讓本意想打開 PDF 的用戶,實際上正在用不安全且過時的 IE 訪問攻擊者控制的網(wǎng)站,尤其在 IE 下載惡意文件時安全警告也相對較少。
打開一個偽裝成 PDF 的惡意 .hta 文件
既然打開的不是 PDF,那受害者通過 IE 打開的到底是什么呢?
根據(jù) IE 瀏覽器的彈出窗口顯示,它要求用戶打開一個名為 .Books_A0UJKO.pdf 的 PDF 文件:
可一旦點擊了這個“Open”(默認選項),緊接著又會跳出另一個窗口:IE 保護模式下的警告提示。
到了這一步,如果用戶一直以為自己打開的不過是個 PDF,大概率會忽略這個警告,那么打開的就會是一個偽裝成 PDF 的惡意 .hta 文件。這是一個從 HTML 文檔中調(diào)用的可執(zhí)行程序,通過一個名為 Microsoft HTML Application Host(mshta.exe)的工具在 Windows 上運行。
CPR 研究人員解釋道:“如果我們仔細觀察 HTTP 流量,就會發(fā)現(xiàn)在字符串末尾有許多不可打印的字符——最后是 .hta 字符串,這才是真正的(危險的)擴展名。”
但這個 .hta 字符串被隱藏了:用戶看不到真實的擴展名,所以無防備地繼續(xù)點擊文件,根本不知道自己其實正在下載并啟動一個危險的 .hta 應(yīng)用程序。
一定要警惕從不可信來源發(fā)送的 .url 文件
據(jù) CPR 研究人員證實,這個漏洞所用的技巧在 Windows 10/11 操作系統(tǒng)上均可實現(xiàn)。
于是,CPR 方面在 2024 年 5 月 16 日向微軟安全響應(yīng)中心(MSRC)報告了該漏洞。此后,雙方一直就此事密切合作,終于在 7 月 9 日發(fā)布了微軟官方補丁(CVE-2024-38112)。
從通用漏洞評分系統(tǒng)(CVSS)來看,CVE-2024-38112 的評分為 7.5(滿分 10 分),屬于重要漏洞,攻擊者需采取額外行動才能確保成功利用該漏洞。而不論是微軟還是 CPR,都強烈建議 Windows 用戶盡快更新該補丁,因為根據(jù)調(diào)查顯示該漏洞已被黑客利用一年多了。
最后,CPR 也給出了重要提醒:“對于相關(guān)的 Windows 用戶,我們建議一定要警惕從不可信來源發(fā)送的 .url 文件,畢竟這種類型的攻擊需要一些用戶交互(如忽略警告彈窗)才能成功。”
參考鏈接:
https://research.checkpoint.com/2024/resurrecting-internet-explorer-threat-actors-using-zero-day-tricks-in-internet-shortcut-file-to-lure-victims-cve-2024-38112/
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-38112
大模型刷新一切,讓我們有著諸多的迷茫,AI 這股熱潮究竟會推著我們走向何方?面對時不時一夜變天,焦慮感油然而生,開發(fā)者怎么能夠更快、更系統(tǒng)地擁抱大模型?《新程序員 007》以「大模型時代,開發(fā)者的成長指南」為核心,希望撥開層層迷霧,讓開發(fā)者定下心地看到及擁抱未來。
讀過本書的開發(fā)者這樣感慨道:“讓我驚喜的是,中國還有這種高質(zhì)量、貼近開發(fā)者的雜志,我感到非常激動。最吸引我的是里面有很多人對 AI 的看法和經(jīng)驗和一些采訪的內(nèi)容,這些內(nèi)容既真實又有價值。”
<html>
<head>
<title>這是網(wǎng)頁標題</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<meta name="keywords" content="這是關(guān)鍵字"/>
<link href="css文件路徑" rel="stylesheet"/>
<link rel="shortcut icon" href="favicon.ico"/>
</head>
<body>
</body>
</html>
標簽 | 含義 | 常用屬性 |
a | 超鏈接 | href / target / title |
img | 圖片 | src / alt / title / width / heiht |
h1-h6 | ||
p | ||
br | ||
hr | ||
em | ||
strong | ||
i | ||
span | ||
div |
ID | CLASS | 標簽 |
100 | 10 | 1 |
樣式 | 含義 | 屬性值 |
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。