記CSS格式化上下文

来源:http://www.cnblogs.com/xueyoucd/archive/2017/11/25/7894801.html
-Advertisement-
Play Games

fomatting context 引言 主要講解的是BFC上下文 本文是查看 "史上最全面、最透徹的BFC原理剖析" 的筆記 所以不會詳解BFC, 只是記錄學習心得, 以及重要規則避免原文失效 簡介 Formatting context是W3C CSS2.1規範中的一個概念。它是頁面中的一塊渲染區 ...


fomatting context

引言

主要講解的是BFC上下文

本文是查看 史上最全面、最透徹的BFC原理剖析 的筆記
所以不會詳解BFC, 只是記錄學習心得, 以及重要規則避免原文失效

簡介

Formatting context是W3C CSS2.1規範中的一個概念。它是頁面中的一塊渲染區域,並且有一套渲染規則,它決定了其子元素將如何定位,以及和其他元素的關係、相互作用

  • Formatting context
  • Block fomatting context (BFC)
  • Inline formatting context (IFC)
  • grid formatting context (GFC) css3新增
  • flex formatting context (FFC) css3新增

BFC生成

  • 根元素
  • float的值不為none
  • overflow的值不為visible
  • display的值為inline-block、table-cell、table-caption table也認為可以生成BFC,其實這裡的主要原因在於Table會預設生成一個匿名的table-cell,正是這個匿名的table-cell生成了BFC
  • position的值為absolute或fixed

BFC佈局規則

  • 內部的Box會在垂直方向上一個接一個的放置
  • 垂直方向上的距離由margin決定。(完整的說法是:屬於同一個BFC的兩個相鄰Box的margin會發生重疊(塌陷),與方向無關。)
  • 每個元素的左外邊距與包含塊的左邊界相接觸(從左向右),即使浮動元素也是如此。(這說明BFC中子元素不會超出他的包含塊,而position為absolute的元素可以超出他的包含塊邊界)
  • BFC的區域不會與float的元素區域重疊
  • 計算BFC的高度時,浮動子元素也參與計算
  • BFC就是頁面上的一個隔離的獨立容器,容器裡面的子元素不會影響到外面元素,反之亦然

防止上下margin重疊

Box垂直方向的距離由margin決定。屬於同一個BFC(上例中是body根元素的BFC)的兩個相鄰Box的margin會發生重疊

只要2個邊距元素不屬於同一個BFC邊距就不會重疊

清除浮動

計算BFC的高度時,浮動元素也參與計算

只要浮動的父元素創建BFC就行了, 比如 display: table-cell;

自適應多列佈局

BFC佈局規則第3條

每個元素的margin box的左邊, 與包含塊border box的左邊相接觸(對於從左往右的格式化,否則相反)。即使存在浮動也是如此

BFC佈局規則第4條

BFC的區域不會與float box重疊

通過將每個元素創建BFC實現自適應多欄佈局


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

-Advertisement-
Play Games
更多相關文章
  • 其實在平常的一些佈局中也經常有要實現元素的垂直居中和水平居中的的需要,下麵來寫幾種css/css3實現的未知寬高元素的水平和垂直居中的寫法 ps:不考慮相容問題(下次會寫js實現元素的水平and垂直居中 ) 第一種 css3的transform 第二種 flex盒子佈局 第三種 display的ta ...
  • 我們經常會看到這樣的寫法: 這就是一個簡單的IIFE(立即執行函數表達式,immediately invoked function expression)了。 這樣的寫法有什麼好處呢?來簡單分析一下。 1. 開頭的分號 我們都知道,js是可以加分號或者不加分號的,在某些情況下,不加分號會讓解析器解析 ...
  • jQuery EasyUI 是一個基於 jQuery 的框架,集成了各種用戶界面插件。jQuery EasyUI 框架提供了創建網頁所需的一切,幫助您輕鬆建立站點。對於我這種不適合前端UI的人來說是一種福音,現在就開始記錄一下easyUI的第一天學習內容。首先需要在網站http://www.jeas ...
  • 查看原文 ...
  • $(window).scroll(function(event){ //JQ監聽滾動條 $('DIV').css("top", $(window).scrollTop()-300);//設置DIV的top}); ...
  • 1.基礎的原型認識:我們創建的每個函數都有一個prototyoe屬性,這個屬性是一個對象,它的用途是包含可以由特定類型的所有實例共用的屬性和方法。邏輯上可以這麼理解:prototype通過調用構造函數而創建的那個對象的原型對象。另外要說的_proto_是指向原型屬性constructor的。 2.原 ...
  • 說真的,學習JavaScript時,面向對象與原型這章特別考驗你的編程基礎能力,邏輯性很強,初學時,整個人都是懵逼的狀態,現在依然有點,每個函數的封裝方式都是從缺點最多的寫法進入,再一步一步深入,不斷優化函數,最終,使得自己寫出的函數能夠代碼精簡,並且相容性好,下麵我就分享下最基礎的工廠模式吧!(創 ...
  • 安裝 1. 確定電腦已裝node和npm 出現版本號則說明電腦已經安裝好node和npm2. 創建一個基於webpack的項目 3. 在項目里安裝依賴 4. 運行 配置路由為了動態渲染各個頁面的組件,這個是必須的,這些都在router文件夾里的index.js配置好,在components文件夾在下 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...