」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > CSS 中的絕對單位與相對單位

CSS 中的絕對單位與相對單位

發佈於2024-11-18
瀏覽:161

Absolute vs. Relative Units in CSS

在 CSS 中設定元素樣式時,您有兩類單位可供選擇:絕對單位相對單位。以下是它們的詳細說明以及它們的差異:


1.絕對單位

絕對單位是固定測量單位。它們不受其他元素或螢幕尺寸的影響,這意味著無論使用它們的上下文如何,它們的尺寸都是恆定的。

常用絕對單位:

  • px(像素):像素是螢幕上的一個小方塊。它是固定佈局最常用的單位。

    • 例子:
    h1 {
      font-size: 24px;
    }
    
  • pt(點):通常用於列印介質,1pt 等於 1/72 英吋。

  • cm(公分)in(吋):在網頁設計中很少使用,這些單位是基於實體尺寸。

絕對單位的優點:

  • 一致性:無論設備或螢幕尺寸如何,尺寸始終相同。
  • 可預測:非常適合建立固定佈局,您希望設計在所有平台上看起來完全相同。

缺點:

  • 缺乏彈性:絕對單位無法很好地適應不同的螢幕尺寸或縮放設置,導致反應速度較差。

2.相對單位

相對單位是靈活並根據它們使用的上下文進行縮放。它們的大小取決於其他元素,例如父容器、視窗或基本字體大小。

常用相對單位:

  • em:相對於其所使用的元素的字體大小。如果父元素的 font-size 為 16px,則 1em 等於 16px。如果父元素的大小發生變化,em.

    中的大小也會發生變化
    • 例子:
    p {
      font-size: 1.5em; /* 1.5 times the font size of the parent */
    }
    
  • rem (root em):相對於根元素(通常是元素)的字體大小。與 em 相比,這使其更具可預測性。

預設情況下,除非另有說明,瀏覽器通常會將根字體大小設為 16px。如果您為元素定義了自訂字體大小,則所有 rem 值都會根據該新大小進行計算。

  • 例子:

    p {
      font-size: 2rem; /* 2 times the root font size */
    }
    
    • %(百分比):相對於父元素的大小。例如,width: 50% 使元素為其父容器寬度的 50%。
  • 例子:

    div {
      width: 75%; /* 75% of the parent's width */
    }
    
    • vw(視口寬度)vh(視口高度):這些單位相對於瀏覽器的視口。 1vw 是視口寬度的 1%,1vh 是視口高度的 1%。
  • 例子:

    div {
      width: 50vw; /* 50% of the viewport's width */
    }
    

相對單位的優點:

  • 響應式設計:相對單位會根據螢幕尺寸、字體大小或容器尺寸自動縮放,讓您的設計更加靈活。
  • 更容易維護:更改根元素的字體大小(使用 rem)可以縮放整個設計。

缺點:

  • 可能更難控制:如果沒有很好地理解繼承以及大小如何通過元素級聯,相對單位有時會產生意想不到的結果。

何時使用絕對單位與相對單位

  • 當您需要精確、固定的測量時,絕對單位(如 px)是最好的選擇。當您希望某些東西在任何地方都具有相同的尺寸(例如,小徽標或圖標)時,請使用這些。
  • 相對單位(如 em、rem、vw 和 %)非常適合響應式設計。它們允許元素根據螢幕尺寸或父元素進行縮放和調整,使您的設計更加靈活。

範例:實務中的絕對單位與相對單位



This is 24px text

This is 1.5rem text (24px based on root size)

在此範例中:

  • 絕對字體大小(24px)將始終保持不變。
  • 相對字體大小(1.5rem)將根據根字體大小(16px)進行調整,最終為24px。

結論:

  • 當需要跨裝置一致性時使用絕對單位,但請注意它們不會回應。
  • 使用相對單位進行更靈活和響應更靈敏的設計,特別是在針對多種螢幕尺寸和設備進行開發時。
版本聲明 本文轉載於:https://dev.to/buchilazarus4/absolute-vs-relative-units-in-css-10dl?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何使用Python理解有效地創建字典?
    如何使用Python理解有效地創建字典?
    在python中,詞典綜合提供了一種生成新詞典的簡潔方法。儘管它們與列表綜合相似,但存在一些顯著差異。 與問題所暗示的不同,您無法為鑰匙創建字典理解。您必須明確指定鍵和值。 For example:d = {n: n**2 for n in range(5)}This creates a dict...
    程式設計 發佈於2025-07-02
  • MySQL中如何高效地根據兩個條件INSERT或UPDATE行?
    MySQL中如何高效地根據兩個條件INSERT或UPDATE行?
    在兩個條件下插入或更新或更新 solution:的答案在於mysql的插入中...在重複鍵更新語法上。如果不存在匹配行或更新現有行,則此功能強大的功能可以通過插入新行來進行有效的數據操作。如果違反了唯一的密鑰約束。 實現所需的行為,該表必須具有唯一的鍵定義(在這種情況下為'名稱'...
    程式設計 發佈於2025-07-02
  • 如何在Java的全屏獨家模式下處理用戶輸入?
    如何在Java的全屏獨家模式下處理用戶輸入?
    Handling User Input in Full Screen Exclusive Mode in JavaIntroductionWhen running a Java application in full screen exclusive mode, the usual event ha...
    程式設計 發佈於2025-07-02
  • 如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    將pandas dataframe列轉換為dateTime格式示例:使用column(mycol)包含以下格式的以下dataframe,以自定義格式:})指定的格式參數匹配給定的字符串格式。轉換後,MyCol列現在將包含DateTime對象。 date oped filtering > = ...
    程式設計 發佈於2025-07-02
  • 為什麼在我的Linux服務器上安裝Archive_Zip後,我找不到“ class \” class \'ziparchive \'錯誤?
    為什麼在我的Linux服務器上安裝Archive_Zip後,我找不到“ class \” class \'ziparchive \'錯誤?
    class'ziparchive'在Linux Server上安裝Archive_zip時找不到錯誤 commant in lin ins in cland ins in lin.11 on a lin.1 in a lin.11錯誤:致命錯誤:在... cass中找不到類z...
    程式設計 發佈於2025-07-02
  • 在JavaScript中如何並發運行異步操作並正確處理錯誤?
    在JavaScript中如何並發運行異步操作並正確處理錯誤?
    同意操作execution 在執行asynchronous操作時,相關的代碼段落會遇到一個問題,當執行asynchronous操作:此實現在啟動下一個操作之前依次等待每個操作的完成。要啟用並發執行,需要進行修改的方法。 第一個解決方案試圖通過獲得每個操作的承諾來解決此問題,然後單獨等待它們: c...
    程式設計 發佈於2025-07-02
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中3個Party Package將另一個PAXPANCE帶有導入式套件之間的另一個軟件包,並在導入式套件之間導入另一個軟件包。如迴聲消息所證明的那樣: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    程式設計 發佈於2025-07-02
  • Java為何無法創建泛型數組?
    Java為何無法創建泛型數組?
    通用陣列創建錯誤 arrayList [2]; JAVA報告了“通用數組創建”錯誤。為什麼不允許這樣做? 答案:Create an Auxiliary Class:public static ArrayList<myObject>[] a = new ArrayList<my...
    程式設計 發佈於2025-07-02
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-07-02
  • 同實例無需轉儲複製MySQL數據庫方法
    同實例無需轉儲複製MySQL數據庫方法
    在同一實例上複製一個MySQL數據庫而無需轉儲在同一mySQL實例上複製數據庫,而無需創建InterMediate sqql script。以下方法為傳統的轉儲和IMPORT過程提供了更簡單的替代方法。 直接管道數據 MySQL手動概述了一種允許將mysqldump直接輸出到MySQL cli...
    程式設計 發佈於2025-07-02
  • C++20 Consteval函數中模板參數能否依賴於函數參數?
    C++20 Consteval函數中模板參數能否依賴於函數參數?
    [ consteval函數和模板參數依賴於函數參數在C 17中,模板參數不能依賴一個函數參數,因為編譯器仍然需要對非contexexpr futcoriations contim at contexpr function進行評估。 compile time。 C 20引入恆定函數,必須在編譯時進...
    程式設計 發佈於2025-07-02
  • 人臉檢測失敗原因及解決方案:Error -215
    人臉檢測失敗原因及解決方案:Error -215
    錯誤處理:解決“ error:((-215)!empty()in Function Multultiscale中的“ openCV 要解決此問題,必須確保提供給HAAR CASCADE XML文件的路徑有效。在提供的代碼片段中,級聯分類器裝有硬編碼路徑,這可能對您的系統不准確。相反,OPENCV提...
    程式設計 發佈於2025-07-02
  • 如何使用Depimal.parse()中的指數表示法中的數字?
    如何使用Depimal.parse()中的指數表示法中的數字?
    在嘗試使用Decimal.parse(“ 1.2345e-02”中的指數符號表示法表示的字符串時,您可能會遇到錯誤。這是因為默認解析方法無法識別指數符號。 成功解析這樣的字符串,您需要明確指定它代表浮點數。您可以使用numbersTyles.Float樣式進行此操作,如下所示:[&& && && ...
    程式設計 發佈於2025-07-02
  • 將圖片浮動到底部右側並環繞文字的技巧
    將圖片浮動到底部右側並環繞文字的技巧
    在Web設計中圍繞在Web設計中,有時可以將圖像浮動到頁面右下角,從而使文本圍繞它纏繞。這可以在有效地展示圖像的同時創建一個吸引人的視覺效果。 css位置在右下角,使用css float and clear properties: img { 浮點:對; ...
    程式設計 發佈於2025-07-02
  • Python中嵌套函數與閉包的區別是什麼
    Python中嵌套函數與閉包的區別是什麼
    嵌套函數與python 在python中的嵌套函數不被考慮閉合,因為它們不符合以下要求:不訪問局部範圍scliables to incling scliables在封裝範圍外執行範圍的局部範圍。 make_printer(msg): DEF打印機(): 打印(味精) ...
    程式設計 發佈於2025-07-02

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3