国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

為什么你永遠不應該在CSS中使用px來設置字體大小

開發 前端
當我們為較大的斷點編寫CSS時,我們認為有足夠的屏幕空間讓元素擴展。如果用戶設置了非常大的字體大小,則可能不是這種情況,將媒體查詢設置為 rem? 而不是 px 可以幫助我們避免這種假設并響應用戶的偏好。

在Josh Collinsworth的博客文章“永遠不要用px作為字體大小”中,作者討論了為什么不應該使用像素(px)作為網頁字體大小的單位[1]。作者指出,相對于容器、瀏覽器或用戶的字體大小,px值是靜態的。無論用戶的字體偏好設置如何,當您以靜態像素設置值時,它將覆蓋用戶的選擇,以您指定的確切值替代。這意味著,如果您的樣式表使用像素單位,可能導致訪問您網站的用戶難以閱讀。

因此,作者建議使用相對單位,如em、rem或百分比,而不是像素。這些單位是基于用戶的字體大小偏好設置進行縮放的,從而提供了更好的可訪問性和可讀性。尤其是在設計響應式網站時,相對單位能夠提高跨設備的兼容性。通過使用相對單位,設計師可以確保網站在不同設備和瀏覽器中以合適的字體大小顯示[1]。

下面是正文:

在 Web 開發領域中,有很多誤解流傳,即使它們被反駁了很多次也仍然存在。"外部鏈接應該總是在新標簽頁中打開" 就是一個很好的例子。CSS Tricks 在將近十年前就對此進行了詳細的解釋(簡而言之:大多數情況下是錯誤的),但它似乎仍然在某些角落中存在。

案例證明:在CSS中, px? , em? 或 rem 單位之間沒有功能上的區別的想法是一個我一遍又一遍聽到的誤解,因此我想在這里發帖來解決這個問題。

我們要非常清楚:在CSS中使用的單位絕對很重要。并且在設置時 font-size? 應盡可能避免使用 px 。

我們在談論什么單位,它們是做什么的?

在我們討論為什么應該避免使用 px? 作為 font-size 之前,讓我們確保我們都清楚我們正在談論哪些單位,以及它們的一般行為。

px

px? 是像素的縮寫……雖然現在大多數情況下它不再是一個真正的像素。在顯示器通常是一個相對可預測的低分辨率像素比例,比如1024×768?的時代, 1px 通常等于屏幕上的一個實際像素。

屏幕使用稱為像素的彩色光點陣來顯示圖像。一個像素是顯示器上的一個彩色光點;硬件能夠呈現的最小可能的“點”。這就是我在本節中所說的“字面上的”、“實際的”或“設備”像素;物理世界中的一個像素。

然而,當高分辨率(有時稱為“視網膜”)屏幕出現時,設備開始將更多的像素壓縮到更小的空間中,這些物理設備像素變得非常微小。在高分辨率屏幕上瀏覽網頁,如果CSS中的 1px 仍然對應于一個字面設備像素,那么甚至閱讀任何內容都將非常困難,因為像素本身正在迅速縮小。畢竟,現代智能手機的分辨率甚至比高清電視還要高。

所以現在, 1px? 通常對應于放大的“縮放”像素的大小,而不是實際硬件上的字面像素。在我們的 CSS 中, 1px 的東西可能會占用多個物理硬件像素,而我們沒有任何純 CSS 的方法來指定一個字面設備像素。但這沒關系,因為它們通常太小了,我們不想去處理它們。

一個例子:iPhone 14 Pro 上的像素非常微小,16px 在字面上的設備像素大小大約相當于2pt字號的印刷字體大小。好在瀏覽器為我們縮放了它們!

大多數情況下,這些并不在本討論的語境中真正重要,但我認為了解這些還是很好的。重要的部分是:1px 等于瀏覽器視為單個像素的任何內容(即使在硬件屏幕上它不是真正的像素)。

em 和 rem

這就帶我們來到了 em? 和 rem? ,它們彼此相似。繼續講述不嚴格相關但仍然有趣的小知識:"em" 是一個排版術語,實際上比計算機早了幾十年。在排版上,一個 em 等于當前字體大小。

如果你將字體大小設置為 32pt?(“pt”是另一個仍然有時使用的舊排版術語),那么 1em? 就是32pt?。如果當前字體大小為 20px? ,那么 1em = 20px。

在網頁上,默認字體大小為 16px? 。一些用戶從不更改默認設置,但許多人會更改。但默認情況下, 1em? 和 1rem 都將等于 16px 。

“Em” 最初是指 “M” 字符的寬度,這也是名稱的由來。但現在它指的是當前字體大小,而不是特定字形的尺寸。

EM 和 REM 之間的區別

為了區分這兩者:1rem? 始終等于瀏覽器的字體大小,或者更準確地說是 html 元素的字體大小。rem? 代表“根em”,而網頁的根是<html>?標簽。因此, 1rem? = document?  字體大小。(默認情況下,這是 16px ,但可以被用戶覆蓋。)

另一方面,em是當前元素的字體大小。看下面的CSS:

.container {
font-size: 200%;
}

p {
font-size: 1em;
}

考慮到上述 CSS, .container? 元素內的段落將會變成原來的兩倍大小。這是因為 1em? 表示“當前字體大小”,在 .container? 內,它是200%。1em × 200% = 2em? (默認為 32px )。

然而, .container ?元素外的段落仍將是 1em? 的正常字體大小(默認為 16px )。

如果我們在上面的CSS中將 em? 更改為 rem ,那么所有段落標簽的字體大小將始終是瀏覽器的默認大小,無論它們在哪里。

font-size: 1em 等同于 font-size: 100% 。em 和 % 單位在其他情況下并不總是等價的;例如, width: 1em? 和 width: 100%? 很可能會非常不同,因為此時百分比是基于父容器的寬度而不是其字體大小。但是,就 font-size 屬性而言, %? 和 em 是相同的。

總結一下:

  • 1em 是當前元素的字體大小。
  • 1rem (根em)是文檔的字體大小(即瀏覽器的字體大小)。

好的,那就是單位的含義和來源。現在讓我們回答為什么使用哪個單位很重要。

為什么這一切都很重要

再次強調的誤解是:既然 1em? 和 16px? 相等,那么選擇哪個單位并不重要。這似乎是合理的;如果 16px = 1rem ,那么選擇哪種方式輸入似乎并不重要。

記住, em? 和 rem 是相對的;默認情況下,它們都(最終)基于瀏覽器的字體大小。

2rem? 是瀏覽器字體大小的兩倍;0.5rem? 是其一半,依此類推。因此,如果用戶更改其首選字體大小,如果使用 em? 和 rem? ,則網站上的所有文本都會相應更改,就像應該的那樣。2rem ?仍然是該字體大小的兩倍;0.5rem 仍然是其一半。

相比之下, px? 值是靜態的。無論容器、瀏覽器或用戶的字體大小如何, 20px? 只是 20px 。當設置靜態像素值時,無論用戶的字體偏好大小如何,它都會覆蓋該選擇并使用指定的確切值。

批判性地說,這意味著如果你的樣式表使用 px? 在任何地方設置 font-size ,那么基于該值的任何文本都將無法由用戶更改。

那是非常糟糕的事情。它是不可訪問的,甚至可能會阻止某人完全使用該網站。

因此,雖然可能存在一些有效的用例來解釋這種行為,但它絕對不是你想要的默認行為。

這也是避免使用視口單位(如 vw 或 vh )設置字體大小的非常好的理由。它們也是靜態的,用戶無法覆蓋。最多,像 calc(1rem + 1vw)? 這樣的值可能是可以接受的,因為它仍然包含 rem? 作為基礎。即便如此,我仍建議使用 clamp() 或媒體查詢來設置最小和最大值,因為屏幕尺寸往往遠遠超出我們所期望或測試的范圍。

超出字體大小的差異

好的,現在讓我們談談當我們不特別處理 font-size? 屬性時, px? 和 em / rem 如何變化。

開發人員通常通過縮放頁面來進行測試,我認為這就是本文中心誤解的來源。當你縮放時,所有內容都會被縮放(放大或縮小),在這種情況下,選擇 px? 或 em? / rem 作為你的CSS單位通常并不重要。就縮放而言,兩者的行為方式相同。而且,大多數視力良好的開發人員可能不會意識到其中還有更多內容。然而,棘手的問題是:

即使超出 font-size? , px? 的行為也與 em? 和 rem 不同。

px? 單位仍然與屏幕上像素的縮放值相關聯。em? 和 rem 與文檔的字體大小相關聯,而不是頁面的縮放或比例。

為了演示,請看這個 CodePen:

https://codepen.io/collinsworth/pen/WNyvvqY

HTML CSSResult Skip Results Iframe
EDIT ON
<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Nam eum aliquam eveniet.</p>
<p>Sapiente delectus in ab excepturi, commodi placeat quaerat saepe voluptas sunt numquam.</p>
<p>Rerum veniam, quidem voluptatibus deleniti nihil consequatur blanditiis explicabo eum quos. Nam.</p>
<p>Natus necessitatibus delectus neque tenetur sint illum obcaecati similique sequi doloribus eligendi?</p>
<p>Eos quidem iure debitis dolorum repellendus ab incidunt ipsam suscipit, autem consequuntur?</p>
p {
border-bottom: 2px solid black;
margin-top: 0;
margin-bottom: 20px;
}

我們有幾個段落,每個段落底部有 2px? 邊框,并且它們之間有 20px? 邊距。請注意,我們對兩者都使用 px 單位。

如果你放大或縮小,元素的大小和距離保持相對不變。也就是說:你放大得越多,那條線就越粗,段落之間的間距就越大。

為了方便起見,這里有一張截圖,顯示了同一支筆的400%縮放。文本、線條和間距都變大了4倍;它們相對于彼此的大小保持不變:

圖片

當涉及到縮放時, px? 、 em? 或 rem 之間沒有真正的區別。但縮放并不是用戶使網站更易用的唯一方法。

如前所述,用戶還可以指定默認和/或最小字體大小。當他們這樣做時,功能開始分歧。

在下面的截圖中,我已將Firefox的默認字體大小設置為 64px 。看一下:

圖片

將屏幕截圖中的文本與其上方的文本進行比較。請注意,這一次,行并沒有變粗,段落之間的邊距也沒有成比例增加。只有文本本身變大了。因為邊框寬度和邊距都是在 px 中設置的,它們保持不變,不會縮放。

但是請注意,如果將CSS中的 px? 更改為相應的 rem 值,會發現線條和間距確實變大了!(zh-Hans)

圖片

所以,這里的總結是:

  • 當用戶更改字體大小時, px 值不會縮放。
  • em 和 rem 的值會隨字體大小成比例調整。

如果你想要一個交互式演示,將所有這些內容聯系在一起,請查看最終的 CodePen;調整頂部的滑塊以查看修改文檔字體大小對各種元素的影響,基于它們使用的 CSS 單位。https://codepen.io/collinsworth/pen/KKepeMQ

選擇哪一個

因此,知道 em? 和 rem? 會隨字體大小縮放,但 px? 值不會,那么我們該怎么辦?我們應該永遠不使用 px 嗎?

雖然我認為如果你選擇這條路,你可能會沒事,但我仍然認為 px 有其存在的意義。

我們知道當用戶調整字體大小時 px 值不會改變,這意味著像素單位實際上是某些美學元素的不錯選擇。也許我們有一定的間距,我們不希望在字體大小變大時變得更大。(如果默認情況下是一個大塊的負空間,也許允許它縮放到更大的尺寸是沒有意義的。)

也許有一些邊框大小我們不想改變,或者頁面上有用 CSS 創建的裝飾元素,在更大的字體大小下看起來效果不佳。也許我們不希望填充隨著字體大小的增加而膨脹。在所有這些情況下, px 仍然是一個不錯的選擇。

我個人建議使用 rem? 來設置所有的大小。我只在想要與當前字體大小成比例的東西(例如,與一些文本旁邊的圖標應該與字符的高度完全相同,并且在一側有半個字符的情況)中添加em 。我不會在任何地方使用 px ,除非是明確不想隨字體大小縮放的設計元素。

永遠不要用 ?px 單位中設置 font-size ,除非你非常確定你在做什么,它會如何行動,以及在你這樣做時它是否仍然可訪問。

關于媒體查詢的重要說明

出于與上述所有原因相同的原因,重要的是要避免在 @media? 查詢中使用 px? ;當用戶縮放時,它將正常工作,但是使用 px 的媒體查詢將在用戶自己設置更大的字體大小時失敗。

@media (min-width: 800px) {
/* Changing font size does NOT affect this breakpoint */
}

@media (min-width: 50rem) {
/* Changing font size DOES affect this breakpoint */
}

這是因為隨著字體大小的增加, 50rem? 會根據用戶的偏好變成不同的值,而 800px 則不會。

很可能,當我們為較大的斷點編寫CSS時,我們認為有足夠的屏幕空間讓元素擴展。如果用戶設置了非常大的字體大小,則可能不是這種情況,將媒體查詢設置為 rem? 而不是 px 可以幫助我們避免這種假設并響應用戶的偏好。

我在這個網站上遇到了這個問題;我把所有的斷點都設置在 px 上。然而,當我將默認字體大小設置得更大時,我的媒體查詢沒有響應,因為它們仍然只查看屏幕的像素寬度。因此,我仍然有一個微小的側邊欄,里面塞滿了難以辨認的巨大文本,因為我沒有考慮用戶的偏好。在那之后,我立即改為 rem ,問題得到了解決。

簡而言之:在媒體查詢中,除非您確定自己知道在瀏覽器中設置自己的字體大小會對用戶產生什么影響,否則一定要避免使用 px 。

原文:https://joshcollinsworth.com/blog/never-use-px-for-font-size

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2020-09-18 07:01:38

分頁offsetlimit

2020-06-05 14:09:42

Kubernetes容器應用程序

2021-01-08 10:48:48

碼農編程編碼測試

2021-04-16 09:31:07

Rosetta 2安全軟件攻擊

2018-10-07 23:00:37

2015-09-28 08:57:06

Ruby APPNeo4j

2023-08-01 08:18:09

CSSUnset

2020-03-09 13:58:19

機器人機器人流程自動化RPA

2013-09-30 09:49:06

存儲網絡FCoE存儲

2020-06-21 21:25:14

物聯網WiFiIOT

2018-02-06 08:49:07

LinuxUnix命名管道

2023-09-20 14:01:14

2024-04-22 08:23:15

px面試開發

2020-06-09 09:19:14

數據庫

2019-04-04 14:33:19

云計算云端企業

2018-11-12 10:14:56

網絡安全網絡安全技術周刊

2022-12-16 09:47:29

2022-03-09 08:14:24

CSS容器container

2018-11-20 14:03:17

數據科學數據分析數據科學家

2020-06-23 14:52:04

Python無用分號語言
點贊
收藏

51CTO技術棧公眾號

欧美精品国产一区| 91麻豆精品国产91久久久更新时间| 你真棒插曲来救救我在线观看| 国产精品自拍毛片| 91n.com在线观看| 午夜国产不卡在线观看视频| 国产欧美黑人| 麻豆精品一区二区综合av| 丁香综合av| 精品一区二区三区免费毛片| 国产成人在线视频免费观看| 亚洲天堂男人天堂| 亚洲小说图片| 久久aⅴ国产欧美74aaa| 99久久香蕉| 高清在线视频日韩欧美| av在线导航| www在线观看播放免费视频日本| 欧美午夜电影一区二区三区| 国产传媒在线播放| 九色视频在线观看免费播放| 亚洲欧美激情网| 国产精品久久精品| 精品视频在线视频| 免费一区二区视频| jizz18欧美18| 日韩欧美精品电影| 孩娇小videos精品| 你懂的好爽在线观看| 精品日韩在线播放| 亚洲第一区视频| 青春草视频在线| 亚洲成人天堂网| 欧美激情第六页| 日韩精品免费观看| 在线免费视频一区二区| 成人中文字幕在线| 88国产精品视频一区二区三区| wwwwww.色| 国产一区二区三区免费不卡| 精品一区二区三区国产| 欧美激情网友自拍| 欧美日韩性视频| 亚洲一线二线三线视频| 中文字幕免费精品一区| 国产精品入口尤物| 7777在线视频| 欧美猛男同性videos| 欧美久久婷婷综合色| 最新日韩在线视频| 久久精品播放| 日韩福利视频一区| 成年女人在线看片| 精品美女视频在线观看免费软件 | **性色生活片久久毛片| 一区二区三区精品视频在线| 91片黄在线观看| 日韩高清不卡在线| 综合久久成人| 激情福利在线| 久久久一二三四| 亚洲综合视频1区| 亚洲欧美成人网| 精品一区二区三区四区在线| 国模视频一区二区| 精品国产鲁一鲁一区二区张丽| 国产在线精品一区二区夜色| 免费欧美电影| 青青草综合在线| 精品久久国产97色综合| 蜜臀a∨国产成人精品| 国产www视频在线观看| 蜜桃在线一区二区三区精品| 亚洲最新av网址| 久久久www免费人成精品| 欧美系列电影免费观看 | 亚洲91网站| 婷婷婷国产在线视频| 亚洲v日韩v欧美v综合| 欧美大片免费观看在线观看网站推荐| 亚洲图片欧美视频| 九色|91porny| 欧美a级片视频| 国产毛片精品久久| 日本在线视频站| mm131国产精品| 日本公妇乱淫免费视频一区三区| 欧美系列亚洲系列| 免费日韩视频| 国产freexxxx性播放麻豆| 蜜桃导航-精品导航| 香蕉加勒比综合久久| 黄色精品一二区| 日韩在线观看| 国产精品一品视频| 同心难改在线观看| 91九色丨porny丨国产jk| 国产女人水真多18毛片18精品| 久久精品99久久久香蕉| 亚洲乱码国产乱码精品精98午夜 | 欧美一级夜夜爽| 尤物网站在线| 日韩精品福利视频| 亚洲图片在线| 日韩中文在线字幕| 国产一区二区香蕉| 不卡视频一区二区| 成人在线免费视频观看| 91黑丝在线| 欧美激情手机在线视频 | 欧美国产日本韩| 久久免费精品视频在这里| 我爱我色成人网| 免费在线看电影| 影音先锋日韩资源| 在线观看免费版| 日韩av电影免费在线| 亚洲欧美在线一区| 久久综合国产精品| 久久99国内| 免费的黄网站在线观看| 麻豆视频传媒入口| 97成人精品区在线播放| 午夜精品福利在线| 久久国产高清| 日本黄色成人| 国产超碰精品在线观看| 麻豆精品视频| 色偷偷av一区二区三区| 亚洲欧美日本在线| 国产欧美激情| 人人视频精品| 男人在线视频资源| 欧美精品一区在线发布| www.欧美三级电影.com| 亚洲国产精品久久人人爱蜜臀| 日韩亚洲国产欧美| 欧美成人福利| 日韩在线免费看| av动漫在线免费观看| 欧美在线激情网| 日韩精品中文字幕一区二区三区 | 精品精品久久| 久久国产精品第一页| 成人免费的视频| 国产精品国产三级国产| 天天综合网天天综合色| 亚洲精品999| 国产日韩在线亚洲字幕中文| 欧美少妇一区| 亚洲一区亚洲二区| 影音先锋日韩资源| а√中文在线天堂精品| 日韩成人综合| 国产欧美一区在线| 国产精品人成电影| 最新日韩一区| 国产精品久久看| 日韩在线视频导航| 亚洲视频香蕉人妖| 欧美激情中文字幕一区二区| 99riav久久精品riav| 亚洲码国产岛国毛片在线| 911精品产国品一二三产区| 亚洲成人三级在线| 九色精品免费永久在线| av一本久道久久波多野结衣| 成人在线观看你懂的| 欧美色老女人| √天堂8资源中文在线| 亚洲视频狠狠| 亚洲视频1区2区| 日韩电影大全免费观看2023年上| 日韩欧美国产麻豆| 成人免费大片黄在线播放| 波多野结衣一区二区| 精品国产亚洲一区二区三区大结局 | 亚洲国产清纯| 国产欧美一区二区在线观看| 日韩欧美二区三区| 国产富婆一区二区三区| 波多一区二区| 自拍偷拍视频在线| 天天操天天爱天天爽| 国产精品自拍区| 亚洲色图视频免费播放| 2020最新国产精品| 91黄页在线观看| 国产黄色免费网| av免费看网址| 欧美大香线蕉线伊人久久| 国产精品美乳一区二区免费| 色妞欧美日韩在线| 日韩欧美成人一区| 在线精品亚洲一区二区不卡| 亚洲精品一二三| 国产精品免费人成网站| 99re热这里只有精品免费视频| 精品www久久久久奶水| 欧洲一级精品|