【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
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...