px? pt? dp? em?rem?vw?vh?ch?ex?這些單位你了解嗎?

目錄

前言

一、常見單位

?1、px單位

2、dp單位?

3、pt單位

4、百分比%

5、em單位

6、rem單位

7、vw和vh單位

8、ch、ex單位

二、如何換算

1、?pt和px換算

2、px和dp換算

3、em和px換算

4、rem和px換算

三、總結


前言

前端開發在日常設計中除了最常用的 px 以外,還會經常看到 dp、pt、em、rem 等單位,那么這些單位都有什么區別呢?今天我給大家歸納總結一下,大家記得收藏以備之后工作需要哦~。???????

一、常見單位

?1、px單位

px像素,是網頁設計和移動應用設計中最常用的單位。表示屏幕上的一個點,根據顯示設備具有固定的大小,不受其他因素影響。常用于確定文本、圖像和元素的大小和位置。

2、dp單位?

dp(也稱為?dip):設備獨立像素,是一個相對的尺寸單位,表示屏幕上的一個點。與?px?不同,dp?能夠根據設備的像素密度進行自適應縮放,從而在不同設備上保持一致的大小。

3、pt單位

pt是磅值,常用于印刷品設計中。表示打印出來的一個點,和像素不同,它不是固定的,而是基于印刷設備的分辨率和輸出質量來計算的。因此,使用磅值可以確保在不同設備上輸出的印刷品大小一致。?

4、百分比%

百分比在前端開發中是一個動態單位,永遠以當前元素的父元素作為參考進行計算。

元素尺寸百分比

我們可以創建一個容器,在容器中包含網頁的主要內容。我們使用百分比來設置容器的寬度和高度,使其能夠根據用戶的屏幕尺寸自動調整大小。例如:

.container {width: 80%;height: 50%;
}

在這個例子中,容器的寬度和高度都設置為百分比,分別為80%和50%。這意味著無論用戶的屏幕尺寸如何,容器都會自動調整大小,并且在任何設備上都能夠很好地顯示。

?元素位置百分比

通過使用百分比,我們還可以設置元素相對于其容器的位置。這對于設計一個具有居中或者自適應特點的網站非常有用。例如:

.box {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);
}

在這個例子中,我們使用百分比來設置元素的位置,使其在其容器中居中顯示。我們首先使用position:absolute將元素定位為絕對定位,然后使用top:50%left:50%將其位置相對于其容器居中定位。最后,我們使用transform:translate(-50%,-50%)將元素的位置進行微調,使其居中。

?顏色和背景百分比

h1 {color: rgba(100%,0%,0%,0.5);background: linear-gradient(90deg, rgba(100%,0%,0%,0.6) 0%, rgba(100%,0%,0%,0) 100%);
}

在這個例子中,我們使用百分比來設置文本和背景的透明度。具體來說,我們將文本的顏色設置為紅色,并將其透明度設置為50%。而背景則使用linear-gradient來設置一個紅色漸變背景,同時將透明度從60%到0%進行漸變。這樣,我們就可以創建出一個半透明的文本和背景效果。?

5、em單位

em是相對于當前元素的字體大小。通常用于網頁設計中設置文本的大小,具有相對的特性,可以根據父元素的字體大小進行縮放。?

<style>div {font-size: 18px;  /* 設置父元素的字體大小 */}span:nth-child(1) {font-size: 1em;   /* 1em相當于1*18px=18px */}span:nth-child(2) {font-size: 18px;}
</style>
<body><div><span>em單位驗證</span><br><span>px像素單位驗證</span></div>
</body>

上面的代碼兩個span標簽里面的文字是一樣的,雖然第一個span標簽設置的字體為1em,第二個span標簽設置的字體大小為18px,但是最后得到的效果是一模一樣的。這是因為span的父元素div設置的字體大小為18px,所以1em=18px。接驗證了em單位是相對于父元素而言的。

em特點:

  1. em的值并不是固定的;
  2. em會繼承父級元素的字體大小。

6、rem單位

rem是相對于根元素的字體大小。也是用于網頁設計中設置文本的大小,但相對于?em,它是相對于根元素的字體大小進行縮放,因此更加穩定和一致。比如我定義:

html{ font-size:14px}

那么設為2rem的話就相當于 2*14px。也就是?

.box{font-size:2rem;/*font-size:28px;*//*2*14px/
}

使用rem為元素設定字體大小時,是相對大小,但相對的只是HTML根元素。因此我們一般使用rem作為移動端的主流單位,可以很好的來控制整個頁面的元素大小比例。

優點:

這個單位可謂集相對大小和絕對大小的優點于一身,通過它既可以做到只修改根元素就成比例地調整所有字體大小,又可以避免字體大小逐層復合的連鎖反應。

缺點:

目前,除了IE8及更早版本外,所有瀏覽器均已支持rem。對于不支持它的瀏覽器,應對方法也很簡單,就是多寫一個絕對單位的聲明。這些瀏覽器會忽略用rem設定的字體大小。

7、vw和vh單位

vw?相對于視口的寬度。視口被均分為100單位。

h1 {font-size: 8vw;
}

再舉個例子:瀏覽器寬度1200px, 1 vw = 1200px/100 = 12 px

vh?相對于視口的寬度。視口被均分為100單位

h1 {font-size: 8vh;
}

再舉個例子:瀏覽器高度900px, 1 vh = 900px/100 = 9 px

總結:

  • ?vw:1vw等于視口寬度的1%。
  • ?vh:1vh等于視口高度的1%。

?缺點:兼容性很差,不推薦使用,目前用的很舒服的還是px和rem。

8、ch、ex單位

ch單位

ch 單位通常被定義為數字0的寬度。你可以在Eric Meyers的博客里找到關于它的一些有意思的討論,例如將一個等寬字體的字母”N”的寬度設置為40ch,那么在另一種類型的字體里它卻可以包含40個字母。常用于設置固定寬度的元素,如表格、代碼塊等,可以保證每個字符的寬度一致。

使用場景:

用途主要是盲文的排版,但是除此之外,肯定還有可以應用他的地方。

ex單位

ex 定義為當前字體的小寫x字母的高度或者 1/2 的 1em。很多時候,它是字體的中間標志。

使用場景:

有很多用途,大部分用于版式的微調。比方說,sup 元素(上角文字標),可以通過position:relative;bottom: 1ex;實現 。

不同點:

這兩是基于字體的度量單位,依賴于設定的字體。

二、如何換算

1、?pt和px換算

公式一: 1pt= (DPI / 72) px

當photoshop中新建畫布的分辨率為72ppi( 即 72dpi時 ), 1pt=1px; 當新建畫布分辨率為72*2=144ppi時,1pt=2px

2、px和dp換算

dp為安卓開發時的長度單位,根據不同的屏幕分辨率,與px有不同的對應關系。

安卓端屏幕大小各不相同,根據其像素密度,分為以下幾種規格:

1dp定義為屏幕密度值為160ppi時的1px,即,在mdpi時,1dp = 1px。 以mdpi為標準,這些屏幕的密度值比為:ldpi : mdpi : hdpi : xhdpi : xxhdpi = 0.75 : 1 : 1.5 : 2 : 3;即,在xhdpi的密度下,1dp=2px;在hdpi情況下,1dp=1.5px。其他類推。

1dp=(屏幕ppi/ 160)px

以WVGA屏為例,該屏幕為480px*800px,按3.8寸屏算,點密度 √ (480^2 + 800^2) / 3.8 = 245,約等于240,對應于hdpi屏幕,所以該屏幕1dp=1.5px

3、em和px換算

任意瀏覽器的默認字體高都是16px。所有未經調整的瀏覽器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。為了簡化font-size的換算,需要在css中的body選擇器中聲明Font-size=62.5%,這就使em值變為 16px*62.5%=10px, 這樣12px=1.2em, 10px=1em, 也就是說只需要將你的原來的px數值除以10,然后換上em作為單位就行了。

4、rem和px換算

1rem等于html根元素設定的font-size的px值?如果css里面沒有設定html的font-size,則默認瀏覽器以1rem=?16px來換算。

假如我們在css里面設定下面的css。那么后面的CSS里面的rem值則是以這個14來換算。

?html{font-?size:14px}?

例如設定一個div寬度為3rem,高度為2.5rem.?則它換算成px為width:42px.height:35px?同理,假如一個設計稿為寬度42px,高度為35px?則換成rem,則是42/14=3rem,?35/14=2.5rem。?(14就是html的font-size)。

三、總結

總的來說,選擇合適的設計計量單位要根據具體的設計場景和需求來決定。例如,在網頁設計中,使用?em?和?rem?可以實現響應式設計,而使用?vw?和?vh?可以實現流體布局。在印刷品設計中,則需要使用?pt?來保證輸。

如果文章對你有所幫助,??關注+點贊??鼓勵一下博主會持續更新。。。。

我的線上博客:富朝陽的博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213897.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213897.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213897.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第二十八章 控制到 XML 模式的映射 - 流類到 XML 類型的映射

文章目錄 第二十八章 控制到 XML 模式的映射 - 流類到 XML 類型的映射將集合屬性映射到 XML 模式 第二十八章 控制到 XML 模式的映射 - 流類到 XML 類型的映射 如果類或屬性基于流&#xff0c;則它將投影為 XML 類型&#xff0c;如下表所示&#xff1a; IRIS 流的 XML 類型 …

使用BeautifulSoup 4和Pillow合并網頁圖片到一個PDF:一種高效的方式來處理網頁圖像

背景 ? 網頁上的培訓材料&#xff0c;內容全是PPT頁面圖片。直接通過瀏覽器打印&#xff0c;會存在只打印第一頁&#xff0c;并且把瀏覽器上無效信息也打印出來情況。但目標是希望將頁面圖片全部打印為pdf形式。 實現方案 利用網頁“另存為”&#xff0c;將頁面內所有圖片資…

官宣!「灣區之光群星演唱會」拉開2024新年音樂華麗序幕!

萬眾期待&#xff0c;群星薈萃&#xff01;青春寶安時尚灣區——灣區之光群星演唱會即將在2024年1月5日閃耀亮相深圳寶安。 華語歌壇巨星天后齊聚一堂&#xff0c;攜手多位實力唱將&#xff0c;共同呈現一場無與倫比的演唱會盛宴&#xff01;在深情而又充滿力量的歌聲之中&…

Linux修復磁盤壞道,重新掛載硬盤

修復磁盤 掛載報錯&#xff1a; [rootlocalhost ~]$ mount /dev/sdb /mnt/mydevmount: /dev/sdb is write-protected, mounting read-only mount: wrong fs type, bad option, bad superblock on /dev/sdb,missing codepage or helper program, or other errorIn some cases …

15、lambda表達式、右值引用、移動語義

前言 返回值后置 auto 函數名 (形參表) ->decltype(表達式) lambda表達式 lambda表達式的名稱是一個表達式 (外觀類似函數)&#xff0c;但本質絕非如此 語法規則 [捕獲表] (參數表) 選項 -> 返回類型 { 函數體; }lambda表達式的本質 lambda表達式本質其實是一個類…

textarea文本框回車enter的時候自動提交表單,根據內容自動高度

切圖網近期一個bootstrap5仿chatgpt頁面的項目遇到的&#xff0c;textarea文本框回車enter的時候自動提交表單&#xff0c;根據內容自動高度&#xff0c;代碼如下&#xff0c;親測可用。 <textarea placeholder"Message ChatGPT…" name"" rows"&q…

TypeScript 第五節:條件語句

一、TypeScript 中常用的條件語句 TypeScript 的條件語句與 JavaScript 的條件語句類似&#xff0c;包括 if 語句、if...else 語句、switch 語句等。 1、if 語句 if 語句用于判斷指定條件是否為 true&#xff0c;如果是 true&#xff0c;則執行一段代碼塊。 示例&#xff1a;…

命名空間this_thread

命名空間 - this_thread 在C11中不僅添加了線程類&#xff0c;還添加了一個關于線程的命名空間std::this_thread&#xff0c;在這個命名空間中提供了四個公共的成員函數&#xff0c;通過這些成員函數就可以對當前線程進行相關的操作了。 1.get_id() 調用命名空間std::this_t…

java腳本引擎Groovy動態執行

1.java腳本引擎Groovy實戰_groovy腳本-CSDN博客 2.java可用的動態腳本引擎和動態代碼執行_java動態執行代碼片段-CSDN博客 3.Groovy動態加載Java代碼的使用方法和工具類_groovy調用java類方法-CSDN博客 4.springboot應用動態運行groovy腳本-附源碼 - 簡書 (jianshu.com) 5.…

是不是學了低代碼就自動放棄了高薪?內部資深解答來了!

目錄 前言低代碼開發&#xff1a;點餐還是自助烹飪&#xff1f;低代碼的“菜單”低代碼的局限性 市場影響的分析&#xff1a;一場關于低代碼的對話低代碼開發與程序員職業&#xff1a;名人視角解析總結 前言 近年來&#xff0c;低代碼開發因其低門檻、高效率和易集成的特點受到…

conda 計算當前包的個數

Conda是一個強大的包管理器和環境管理器&#xff0c;它用于安裝和管理來自不同源的軟件包。若要計算當前conda環境中安裝的包的數量&#xff0c;你可以使用以下命令&#xff1a; 首先&#xff0c;激活你想要檢查的conda環境&#xff08;如果不是默認的base環境&#xff09;&am…

虹科新聞丨廣州市“強企增效”項目助力虹科高質量發展!

來源&#xff1a;虹科電子科技有限公司 虹科新聞丨廣州市“強企增效”項目助力虹科高質量發展&#xff01; 原文鏈接&#xff1a;https://mp.weixin.qq.com/s/9pUXx5ZZpIi5S4s4o90GJA 歡迎關注虹科&#xff0c;為您提供最新資訊&#xff01; 2023年12月6日至7日&#xff0c;工…

hive/spark用法記錄

1. cast()更改數據類型 cast(column_name as type) 2. get_dt_date()自定義日期操作函數&#xff08;返回不帶橫線的日期&#xff09; select get_dt_date();–獲取當前日期&#xff0c;返回 20170209 select get_dt_date(get_date(-2));–獲取當前日期偏移&#xff0c;轉為…

如果將視頻轉化為gif格式圖

1.選擇視頻轉換GIF&#xff1a; 2.添加視頻文件&#xff1a; 3.點擊“開始”&#xff1a; 4.選擇設置&#xff0c;將格式選擇為1080P更加清晰&#xff1a; 5.輸出后的效果圖&#xff1a;

postgresql設置免密登錄

您提供的步驟描述了在 PostgreSQL 數據庫環境中配置服務器間的 SSH 無密碼登錄和數據庫用戶認證的過程。這些步驟主要用于設置一個高可用性、負載平衡的數據庫集群環境。讓我們逐一解釋這些步驟的目的和應用場景&#xff1a; 1. 啟動 PostgreSQL 服務 systemctl start postgr…

ReetrantReadWriteLock底層原理

文章目錄 一、讀寫鎖介紹二、ReentrantReadWriteLock底層原理1. 讀寫鎖的設計 一、讀寫鎖介紹 現實中有這樣一種場景:對共享資源有讀和寫的操作&#xff0c;且寫操作沒有讀操作那么頻繁(讀多寫少)。在沒有寫操作的時候&#xff0c;多個線程同時讀一個資源沒有任何問題&#xf…

jQuery-操作DOM

使用jQuery操作DOM dom : 文檔對象模型 就是HTML元素 $() 函數的2個用法: 用法1:放入一個字符串(選擇器)表示獲取元素 例如 $("p") $("#abc") $(".del") 用法2:放入一個函數&#xff0c;表示文檔就緒函數 例如 $(function(){代…

TikTok挑戰榜單:全球用戶如何共襄盛舉

TikTok作為全球最受歡迎的短視頻應用之一&#xff0c;在這個平臺上&#xff0c;用戶們通過參與各種挑戰&#xff0c;創造了無數令人驚嘆的短視頻。 本文將深入探討TikTok挑戰榜單的現象&#xff0c;探究全球用戶如何共襄盛舉&#xff0c;以及這種創意激發和社交互動如何成為Ti…

go-zero開發入門-API網關鑒權開發示例

本文是go-zero開發入門-API網關開發示例一文的延伸&#xff0c;繼續之前請先閱讀此文。 在項目根目錄下創建子目錄 middleware&#xff0c;在此目錄下創建文件 auth.go&#xff0c;內容如下&#xff1a; // 鑒權中間件 package middlewareimport ("context""e…

前端開發常用的Vscode插件整理(持續更新)

本文記錄用vscode進行前端開發時&#xff0c;常用到的有用的vscode插件&#xff0c;將不定時更新&#xff5e; 1、Chinese (Simplified) 將編輯器變成簡體中文 2、vscode-icon 讓 vscode 資源樹目錄加上圖標&#xff0c;官方出品的圖標庫 3、Import Cost 引入包大小計算,對于…