【CSS】fit-content, min-content, max-content, fill-available 詳解與異同

来源:https://www.cnblogs.com/Jasper0/archive/2022/05/17/16282912.html
-Advertisement-
Play Games

本文對 CSS 中有關大小的四種自適應大小表現進行瞭解釋與區別,它們分別是 fit-content, min-content, max-content, fill-available。相對而言,本文較為嚴謹,即儘量地無遺漏、無歧義。在嚴謹的同時,也做到儘可能通俗易懂。 ...


設定

  • 為了描述方面,我們將以 width 舉例
  • 設定三層元素,他們層層嵌套,分別稱作:inner, container, outer。如下所示:
    outer container inner
  • 三層元素都有幾種情況:
    • outer
      • 有限制 例如,設置了 width 或 max-width 為固定值
      • 無限制 例如,將 width 設置為根據內容變化的值,且長度可以無限增加
    • container
      fit-content, min-content, max-content, fill-available 四種。其中 fit-content, min-content, max-content 為 width, height 等 CSS 屬性的可選值,fill-available 是指 width, height 等為 auto 時的表現。
    • inner
      • 固定寬度 設置了固定的 width
      • 文本 該層為可換行的文本,其寬度可長可短。
      • 隨父元素變化 例如 width 為 100%
  • 文中會出現 inner + container < outer 這種類似表達式的表述方式。這裡 inner 指其包括 margin 在內的總寬度;container 指其 padding + border + margin 的寬度,不含 width;outer 在有限制時,指其達到限制時 width 的寬度,在無限制時,表示無限大。

fit-content, min-content, max-content

首先,當 container 設置為這三個值時,不管其他情況如何變化,其寬度始終貼合 inner,即使 inner + container 的寬度超出了 outer 的限制也是如此(超出時,網頁的表現由 overflow 屬性決定)。三者的不同體現在對 inner 寬度的影響上,下麵對此分類討論。

  • inner 為固定寬度 此時三個屬性表現完全相同,inner 為其設定寬度
  • inner 隨父元素變化 此時三個屬性表現完全相同。 inner 為其最小寬度,即:若 min-width 為固定值,則 inner 寬度為該值;否則,inner 寬度為 0
  • inner 為可換行文本
    • min-content inner 為文本最小寬度(儘可能換行)
    • max-content inner 為文本最大寬度(完全不換行)
    • fit-content 在不超出 outer 的情況下,inner 儘可能寬。而如果 inner 為文本最小寬度時也超出了 outer,那 inner 就是文本最小寬度。更明確的表述如下:
      if (文本最大寬度 + container < outer) {
        inner = 文本最大寬度
      } else if (文本最小寬度 + container > outer) {
        inner = 文本最小寬度
      } else {
        inner = outer - container
      }
      

fill-available

  • outer 為固定寬度 container 貼合 outer 內部,inner 可能超出 container
  • 否則,inner 和 container 的表現與 max-content 相同(此時 fit-content 的表現也與 max-content 相同)

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 查看PostgreSQL鎖表信息 一、查詢PG_STAT_ACTIVITY的信息 SELECT * FROM pg_stat_activity where datname='bms' and wait_event_type='Lock' 二、通過pid解鎖死鎖信息 select pg_cancel_ ...
  • 本文介紹什麼是 SQL INNER JOIN 聯結,為什麼使用聯結,如何編寫使用聯結的 SELECT 語句。並講述了一些關係資料庫設計的基本知識,包括等值聯結(也稱為內聯結)這種最常用的聯結。 一、聯結 SQL 最強大的功能之一就是能在數據查詢的執行中聯結(join)表。聯結是利用 SQL 的 SE ...
  • HMS Core 3D Engine是一款高性能、高畫質、高可靠的實時3D引擎,旨在幫助開發者製作高品質的3D應用。3D Engine將為您提供可編程渲染管線,多維粒子系統,3D角色與動畫,超大地形地貌,智能尋路導航等諸多實用功能,以及便捷高效的可視化開發工具。 3D Engine渲染效果 千萬級面 ...
  • 針對傳統記憶體方案及管理機制的不足,OpenHarmony 構建了一套完善的記憶體解決方案——ESWAP。 ...
  • 本期 OpenHarmony 開發者故事,我們採訪了 OpenHarmony 啟動子系統的負責人,OpenHarmony PMC 委員會推舉的“代碼貢獻月度之星”——熊磊。 ...
  • 5月17日,2022年搜狐科技峰會成功舉辦,峰會匯聚各界大咖,共同探討AI 技術的深入應用以及行業數字化的發展趨勢。華為終端雲服務應用生態BU總裁望岳發表題為《使能AI智慧體驗,共建創新應用生態》主題演講。 望岳表示,經過多年的發展迭代,華為移動服務HMS生態已成為全球第三大移動應用生態:截止今天, ...
  • 5月18日(周三)晚上19:00,第一期戰“碼”先鋒直播,我們邀請到了潤和資深軟體開發工程師趙海鵬老師,在直播間與大家分享《如何成為一名優秀的OpenHamrony 貢獻者?》 ...
  • HUAWEI Developer Day(簡稱HDD),是華為開發者聯盟與廣大開發者深度交流的平臺。圍繞移動終端的最新技術和產品形態,持續向廣大開發者傳遞華為終端的最新產品和開放服務能力,結合最新的行業發展趨勢,攜手開發者共同打造面向終端消費者的卓越用戶體驗。 5月24日18:50-21:05,HD ...
一周排行
    -Advertisement-
    Play Games
  • 什麼是工廠模式 工廠模式是最常用的設計模式之一,屬於創建型模式。 有點: 解耦,可以把對象的創建和過程分開 減少代碼量,易於維護 什麼時候用? 當一個抽象類有多個實現的時候,需要多次實例化的時候,就要考慮使用工廠模式。 比如:登錄的抽象類ILoginBusiness,它有2個實現,一個用用戶名密碼登 ...
  • 這次iNeuOS升級主要升級圖形渲染引擎和增加豐富的圖元信息,可以很快的方案應用。總共增加41個通用和行業領域的圖元應用,增加2154個圖元信息,現在iNeuOS視圖建模功能模塊總共包括5894個行業圖元信息。現在完全支持製作高保真的工藝流程和大屏展示效果。 ...
  • 效果圖先附上: 首先 這是我是參考 教程:使用 SignalR 2 和 MVC 5 實時聊天 | Microsoft Docs 先附上教程: 在“添加新項 - SignalRChat”中,選擇 InstalledVisual> C#>WebSignalR>,然後選擇 SignalR Hub 類 (v ...
  • 一、前言 項目中之前涉及到胎兒心率圖曲線的繪製,最近項目中還需要添加心電曲線和血樣曲線的繪製功能。今天就來分享一下心電曲線的繪製方式; 二、正文 1、胎兒心率曲線的繪製是通過DrawingVisual來實現的,這裡的心電曲線我也是採用差不多相同的方式來實現的,只是兩者曲線的數據有所區別。心電圖的數據 ...
  • 安裝 Redis # 首先安裝依賴gcc, 後面需要使用make編譯redis yum install gcc -y # 進入 /usr/local/src 目錄, 把源碼下載到這裡 cd /usr/local/src # 下載 redis 7.0.2 的源碼,github被牆,可以使用國內的地址 ...
  • Redis 的定義? 百度百科: Redis(Remote Dictionary Server ),即遠程字典服務,是一個開源的使用ANSI C語言編寫、支持網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。 中文官網: Redis是一個開源(BSD許可),記憶體存 ...
  • 事情的起因是收到了一位網友的請求,他的java課設需要設計實現迷宮相關的程式——如標題概括。 我這邊不方便透露相關信息,就只把任務要求寫出來。 演示視頻指路👉: 基於JavaFX圖形界面的迷宮程式演示_嗶哩嗶哩_bilibili 完整代碼鏈接🔎: 網盤:https://pan.baidu.com ...
  • Python中的字典 Python中的字典是另一種可變容器模型,且可存儲任意類型對象。鍵值使用冒號分割,你可以看成是一串json。 常用方法 獲取字典中的值 dict[key] 如果key不存在會報錯,建議使用dict.get(key),不存在返回None 修改和新建字典值 dict[key]=va ...
  • 迎面走來了你的面試官,身穿格子衫,挺著啤酒肚,髮際線嚴重後移的中年男子。 手拿泡著枸杞的保溫杯,胳膊夾著MacBook,MacBook上還貼著公司標語:“加班使我快樂”。 面試官: 看你簡歷上用過MySQL,問你幾個簡單的問題吧。什麼是聚簇索引和非聚簇索引? 這個問題難不住我啊。來之前我看一下一燈M ...
  • tunm二進位協議在python上的實現 tunm是一種對標JSON的二進位協議, 支持JSON的所有類型的動態組合 支持的數據類型 基本支持的類型 "u8", "i8", "u16", "i16", "u32", "i32", "u64", "i64", "varint", "float", "s ...