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

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

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

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]刪除
最新教學 更多>
  • 為什麼 `std::atomic` 的儲存使用 XCHG 來實現 x86 上的順序一致性?
    為什麼 `std::atomic` 的儲存使用 XCHG 來實現 x86 上的順序一致性?
    為什麼std::atomic 的儲存採用XCHG 來實現順序一致性在x86 和x86_64 架構的std::atomic 上下文中,a具有​​順序一致性的儲存操作(std::memory_order_seq_cst) 使用XCHG而不是具有內存屏障的簡單存儲作為實現順序釋放語義的技術。 順序一致性和...
    程式設計 發佈於2024-11-18
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-18
  • 為什麼 C++ 不直接支援從函數傳回數組?
    為什麼 C++ 不直接支援從函數傳回數組?
    為什麼C 不贊成陣列返回函數C 景觀與Java 等語言相反,C 不支援陣列返回函數不為傳回數組的函數提供直接支援。雖然可以返回數組,但過程很麻煩。這引發了有關此設計決策背後的根本原因的問題。 C 中的陣列機制要理解這一點,我們必須深入研究 C 中陣列的基礎知識。 C,陣列名稱代表記憶體位址,而非陣列...
    程式設計 發佈於2024-11-18
  • 好的,以下是一些適合文章內容的標題:

* How to Fix the \"-lGL: not found\" Error in Qt
* Qt Compilation Error: \"-lGL: not found\" - What to Do
* Troubleshooting \"-lGL: not found\" Error in Qt Projects
* Resolving the
    好的,以下是一些適合文章內容的標題: * How to Fix the \"-lGL: not found\" Error in Qt * Qt Compilation Error: \"-lGL: not found\" - What to Do * Troubleshooting \"-lGL: not found\" Error in Qt Projects * Resolving the
    解決Qt 中的「-lGL:未找到」錯誤當嘗試在QtCreator 中編譯新建立的專案時,某些使用者可能會和遇到“-lGL:未找到”錯誤。出現此錯誤通常是因為未安裝必要的依賴項。 要解決此問題,請按照以下步驟操作: libgl1-mesa-dev: 該軟體包包含在 Qt 專案中支援 OpenGL 所需...
    程式設計 發佈於2024-11-18
  • PHP 的「eval」函數使用起來安全嗎?
    PHP 的「eval」函數使用起來安全嗎?
    什麼時候 eval 不是邪惡的? 雖然 PHP 的 eval 函數經常被勸阻,但它在 PHP 5.3 中的實用性值得商榷。儘管出現了LSB 和閉包,但以下是一些可以想像的用例,其中eval 可能仍然是首選:評估安全表達式:Eval 可用於評估數值或PHP 程式碼的其他特定子集,例如簡單的數學表達式,...
    程式設計 發佈於2024-11-18
  • 如何在 Go 中使用動態屬性解組 XML?
    如何在 Go 中使用動態屬性解組 XML?
    Golang:使用動態屬性解組XML簡介:在Go 中,encoding/xml提供了處理XML 資料的高效且通用的方法。然而,在處理具有動態屬性的 XML 元素時,由於存在未知數量和類型的屬性,解組變得具有挑戰性。 問題:如何使用以下方法解組 XML 標籤:當你沒有預料到會遇到的確切屬性時,如何在 ...
    程式設計 發佈於2024-11-18
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-18
  • C++中可以直接初始化類別資料成員嗎?
    C++中可以直接初始化類別資料成員嗎?
    類別資料成員可以直接初始化嗎? 在 C 中,類別資料成員不能使用直接初始化語法 () 來初始化,如下例所示:#include <iostream> class test { public: void fun() { int a(3); std::c...
    程式設計 發佈於2024-11-18
  • 為什麼 `std::cout
    為什麼 `std::cout
    f 的奇事;為什麼它總是在輸出中印出 1? 遇到一種特殊的行為,即調用不帶括號 (f;) 的函數並使用 std::cout 打印其結果始終產生數字 1 可能會引發問題。最初,人們可能會期望程式碼會列印一個函數指針,但觀察顯示並非如此。 深入研究下面的程式碼:#include <iostream...
    程式設計 發佈於2024-11-18
  • 為什麼我的 Font Awesome 圖示沒有顯示?
    為什麼我的 Font Awesome 圖示沒有顯示?
    Font Awesome 圖示顯示問題:解決方法Font Awesome 圖示顯示問題:解決方法如果您遇到Font Awesome 圖示未出現在您的網站上的問題,儘管包含必要的文件,請考慮以下故障排除提示:驗證CDN 連結:<link href="http://cdnjs.cl...
    程式設計 發佈於2024-11-18
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-11-18
  • 如何從 JavaScript 點選事件呼叫 ASP.NET 方法?
    如何從 JavaScript 點選事件呼叫 ASP.NET 方法?
    從JavaScript 存取ASP.NET 函數要從JavaScript 的點選事件呼叫ASP.NET 方法,可以使用非標準方法:受僱。這裡有詳細的指南:使用IPostBackEventHandler 介面增強Page 類別:在您的ASP.NET 程式碼檔案中,使用以下程式碼繼承Page 類別: I...
    程式設計 發佈於2024-11-18
  • 您可以在 JavaScript 中的條件語句內宣告函數嗎?
    您可以在 JavaScript 中的條件語句內宣告函數嗎?
    條件語句中的函數宣告在 JavaScript 中,函數宣告具有不同的行為,取決於流行的語言標準及其執行環境。 嚴格模式 (ES5)嚴格模式,在 ECMAScript 5 中引入(ES5),條件語句中不允許使用函數宣告。這是因為函數宣告建立了提升變量,這些變數的作用域為整個函數或全域作用域。將它們放...
    程式設計 發佈於2024-11-18
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-18
  • 複雜的查詢條件應該在資料映射器還是服務層處理?
    複雜的查詢條件應該在資料映射器還是服務層處理?
    如何處理複雜查詢條件:Data Mapper vs. Service Layer如何處理複雜查詢條件:Data Mapper vs. Service Layer在物件導向程式中處理複雜查詢條件時,主要有兩種方法:在資料映射器或服務層中處理它們。 資料映射器方法資料映射器模式用於將網域物件對應到和來自...
    程式設計 發佈於2024-11-18

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

Copyright© 2022 湘ICP备2022001581号-3