CSS 布局實例系列(四)如何實現容器中每一行的子容器數量隨著瀏覽器寬度的變化而變化?...

Hello,小朋友們,還記得我是誰嗎?對了,我就是~超威~好啦,言歸正傳,今天的布局實例是:

實現一個浮動布局,紅色容器中每一行的藍色容器數量隨著瀏覽器寬度的變化而變化,就如下圖:

肯定有人心里犯嘀咕了,哈~這么簡單,不就是全部左浮動嘛,這也好意思拿出來講?別急啊,其實里面的坑還是挺多的,且待我一個個填上。

1. 通過左浮動實現

  1. 要實現這樣一個布局,我們首先需要如下的 HTML:
    <div id="float-container"><div class="float-element"></div><div class="float-element"></div><div class="float-element"></div><div class="float-element"></div><div class="float-element"></div><div class="float-element"></div><div class="float-element"></div><div class="float-element"></div><div class="float-element"></div>
    </div>
  2. 然后開始寫 CSS 吧,就像這樣:
    #float-container {background-color: red;
    }
    .float-element {float: left;width: 50px;height: 30px;background-color: blue;margin: 10px;
    }

    使每個小容器向左浮動,再設定一個邊距,一個根據瀏覽器寬度自適應變化位置的浮動布局就搞定收工了?當然不會,效果會像這樣:

  3. 咦,說好的紅色背景大容器呢,怎么躲起來啦?檢查一番,原來是忘了給大容器 div 設定寬高度了,那就設定一下寬高度。既然要求了大容器自適應,那么我們就分別設定為 100% 吧:
    #float-container {background-color: red;height: 100%;width: 100%;
    }
    .float-element {float: left;width: 50px;height: 30px;background-color: blue;margin: 10px;
    }

    好啦,刷新一下。大容器咋還是沒出來?

  4. 現在讓我們分析一下吧,為何看不見大容器?因為 div 如果沒有包裹元素的話,百分比寬高度是不會產生效果的。

    那么為什么大容器明明包裹著九個 div,百分比寬高度卻沒有產生效果呢?因為小容器都設定為左浮動,已經脫離文檔流,大容器并沒有包圍小容器,表現出高度為0(高度塌陷)。接下來我們想要大容器自適應,又不想使小容器失去浮動的特性,能夠隨著寬度變化自動調整每一行的個數,應該怎么辦?我們需要閉合浮動元素,使其包含框表現出正常的高度。是時候請出我們的 BFC 大神啦,對,我已經連續三篇實例博文提到 BFC 原理了,因為這個原理就是這么有用啊(該處原理的詳細介紹請參考一絲大神的《那些年我們一起清除過的浮動》)。現在我們在大容器加上 overflow: hidden; 就可以自動清理其包含的任何浮動元素,接下來看看最終的 DEMO,試著調整一下寬度,是不是已經實現了想要的效果?

    See the Pen float-container by xal821792703 (@honoka) on CodePen.

2. 通過 inline-block 實現

只能通過左浮動完成這個實例?并不是,我們還有 inline-block。inline-block 可以像行內元素一樣水平地依次排列,但框的內容仍然符合塊級框的行為。通過這一特性,我們可以利用 inline-block 像浮動一樣創建很多網格鋪滿容器,并且不需要清除浮動。當然整個布局過程也比左浮動簡便了一些,如下面的 DEMO:

See the Pen inline-block-container by xal821792703 (@honoka) on CodePen.


?最后感謝大家的閱讀,歡迎前往我的?repo?查看源代碼整理,有任何問題也請盡情向我吐槽。

轉載于:https://www.cnblogs.com/honoka/p/5164616.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272399.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272399.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272399.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于框架編寫驅動代碼

操作驅動的上層代碼&#xff08;pin4test&#xff09; #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>void main() {int fd,data;fd open("/dev/pin4",O_RDWR);if(fd<0){printf("open fail…

nacos在windows下安裝

1:訪問https://github.com/alibaba/nacos/releases下載nacos 2:下載到本地解壓 3:點擊startup.cmd 啟動nacos 4:訪問 http://127.0.0.1:8848/nacos 輸入賬號和密碼&#xff0c;nacos/nacos

關于SQL優化這些你了解嗎?

背景在當今這個互聯網的時代無非要解決兩大難題&#xff0c;其一是信息安全&#xff0c;其二就是數據的存儲。而信息安全則是在數據存儲的基礎之上。一個公司從剛開始成立到發展成一個有上百人甚至上千人團隊的時候&#xff0c;公司的業務量是呈上升趨勢&#xff0c;客戶及用戶…

圖片安全保護(未啟動)

圖片安全保護&#xff08;未啟動&#xff09; 圖片安全保護&#xff08;未啟動&#xff09;posted on 2016-01-27 22:54 代碼35 閱讀(...) 評論(...) 編輯 收藏 轉載于:https://www.cnblogs.com/xinglizhenchu/p/5164847.html

微機總線地址,物理地址 ,虛擬地址

總線地址 地址總線 (Address Bus&#xff1b;又稱&#xff1a;位址總線) 屬于一種電腦總線 &#xff08;一部份&#xff09;&#xff0c;是由CPU 或有DMA 能力的單元&#xff0c;用來溝通這些單元想要存取&#xff08;讀取/寫入&#xff09;電腦內存元件/地方的實體位址。 自己…

Navicat遠程連接linux下mysql服務器1045錯誤解決辦法在這兒

1&#xff1a;首先通過xshell工具或者你熟悉的工具連接遠程linux下的服務器 mysql -uroot -p 然后輸入密碼 2.進行授權 如果想root用戶使用password從任何主機連接到mysql服務器的話。 GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY 你的mysql密碼 WITH GRANT O…

內存劃分

一、內存分配 一個由C/C編譯的程序占用的內存分為以下幾個部分 1、棧區&#xff08;stack&#xff09;&#xff1a; 由編譯器自動分配釋放 &#xff0c;存放函數的參數值&#xff0c;局部變量的值等。其操作方式類似于數據結構中的棧。 2、堆區&#xff08;heap&a…

樹莓派 博通BCM2835芯片手冊

手冊提取鏈接 鏈接&#xff1a;https://pan.baidu.com/s/1fdmIBNn1Pr1j3-ercNhKJg 提取碼&#xff1a;8y1b 驅動的兩大利器&#xff1a; 1、電路圖:通過電路圖找到寄存器 2、芯片手冊 樹莓派有54個通用IO口(0到53)&#xff0c;所有GPIO口至少有兩個可選功能&#xff08;輸入輸…

MVC實現實現文件流打包成壓縮包

MVC實現實現文件流打包成壓縮包1、使用壓縮類庫SharpZipLib SharpZipLib 是一款比較經典實用C#壓縮類庫SharpZipLib 庫特點&#xff1a;功能豐富、穩定 &#xff0c;支持主流 zip、Gzip Tar BZip2 格式2、項目中引用SharpZipLib的官方地址是&#xff1a;http://icsharpcode.git…

Intellij idea 報錯:Error : java 不支持發行版本5

idea運行出現了這個錯誤 解決辦法按下圖所示&#xff1a;

屬性“dataProvider”有多個初始值設定項。(注意:“dataProvider”是“mx.charts.BarChart”的默認屬性)。...

1、錯誤描寫敘述 屬性“dataProvider”有多個初始值設定項。&#xff08;注意:“dataProvider”是“mx.charts.BarChart”的默認屬性&#xff09;。2、錯誤原因 <?xml version"1.0" encoding"utf-8"?> <s:Application xmlns:fx"http://ns.…

IO口操控代碼

我們在編寫驅動程序的時候&#xff0c;IO空間的起始地址是0x3f000000,加上GPIO的偏移量0x2000000,所以GPIO的物理地址應該是從0x3f200000開始的&#xff0c;然后在這個基礎上進行Linux系統的MMU內存虛擬化管理&#xff0c;映射到虛擬地址上。 底層驅動代碼 #include <linu…

C#一些實用的函數

1.DateTime 轉為Unix的long的時間戳long orderTime order.AddTime.ToUnixTimeStamp("Milliseconds");long payTime order.StartTime.Value.ToUnixTimeStamp("Milliseconds");2、獲取客戶端IP/// <summary>/// 獲取調用方的IP地址/// </summary&…

Vscode如何新建html文件

1、點擊Open Folder&#xff1a; 2、選擇目標文件夾&#xff0c;在本地新建一個拓展名為html的文件&#xff1a; 3、在第1行輸入!&#xff08;英文狀態下&#xff09;&#xff0c;按tab鍵&#xff0c;新建成功。界面如下圖所示&#xff1a;

混合app

cordova run android 把應用發送到手機ionic serve 電腦瀏覽器調試命令創建&#xff1a;cordova create hello com.example.hello HelloWorldcd hellocordova platform add androidcordova build androidcordova emulate android查詢cordova platform lscord…

vscode瀏覽器打開html

1.點擊拓展 2.輸入open in browser&#xff0c;選擇第一個 3.點擊安裝

VMware虛擬機克隆CentOS后網卡修改方法

轉自:http://www.linuxidc.com/Linux/2015-03/114975.htm 轉載于:https://www.cnblogs.com/water-sky/p/5169107.html

NET Core入門筆記

一、NET Core概念.NET Core 是開放源代碼通用開發平臺&#xff0c;由 Microsoft 和 .NET 社區在 GitHub 上共同維護。 它跨平臺&#xff08;支持 Windows、macOS 和 Linux&#xff09;&#xff0c;并且可用于生成設備、云和 IoT 應用程序。&#xff08;MSDN&#xff09;二、NET…

解決redis-cli連接時出現Could not connect to Redis at 127.0.0.1:6379: Connection refused

解決redis-cli連接時Could not connect to Redis at 127.0.0.1:6379: Connection refused 原因&#xff1a;服務端未啟動 [rootlocalhost bin]# ./redis-server redis.conf [rootlocalhost bin]# redis-cli -bash: redis-cli: 未找到命令 [rootlocalhost bin]# ./redis-cli 1…

ASP.NET MVC的過濾器筆記

過濾器概念APS.NET MVC中&#xff08;以下簡稱“MVC”&#xff09;的每一個請求&#xff0c;都會分配給相應的控制器和對應的行為方法去處理&#xff0c;而在這些處理的前前后后如果想再加一些額外的邏輯處理。這時候就用到了過濾器。1、過濾器&#xff08;Filters&#xff09;…