CSS多列佈局

来源:http://www.cnblogs.com/xiaohuochai/archive/2016/04/01/5344541.html
-Advertisement-
Play Games

× 目錄 [1]列寬 [2]列數 [3]列間距[4]列rule[5]跨列[6]列填充[7]多列 前面的話 CSS新增了多列佈局特性,可以讓瀏覽器確定何時結束一列和開始下一列,無需任何額外的標記。簡單來說,就是CSS3多列佈局可以自動將內容按指定的列數排列,這種特性實現的佈局效果和報紙、雜誌類排版非常 ...


×
目錄
[1]列寬 [2]列數 [3]列間距[4]列rule[5]跨列[6]列填充[7]多列

前面的話

   CSS新增了多列佈局特性,可以讓瀏覽器確定何時結束一列和開始下一列,無需任何額外的標記。簡單來說,就是CSS3多列佈局可以自動將內容按指定的列數排列,這種特性實現的佈局效果和報紙、雜誌類排版非常相似。本文將詳細介紹CSS多列佈局的基本屬性和用法

 

列寬

  column-width主要用於給元素指定最優的列寬度,實際列寬可能會更寬或更窄。如果不設置高度,文字將自動撐滿整列,且最後一列的標點會溢出到容器外

  [註意]IE10+和chrome瀏覽器支持標準寫法,而firefox、safari瀏覽器及移動端android、IOS需要添加首碼

column-width

  值: auto | <length>

  初始值: auto

  應用於: block、inline-block、table-cell(firefox不支持為table-cell設置該屬性)

  繼承性: 無

  [註意]column-width不可為0和負值;當column-width的值為auto或column-width的值大於元素寬度width一半時,沒有分列效果(更準確地,由其他屬性來決定)

列數

  column-count主要用於給元素指定允許的最大列數

  [註意]IE10+和chrome瀏覽器支持標準寫法,而firefox、safari瀏覽器及移動端android、IOS需要添加首碼

column-count

  值: auto | <length>

  初始值: auto

  應用於: block、inline-block、table-cell(firefox不支持為table-cell設置該屬性)

  繼承性: 無

  [註意]column-count不可為0和負值;當column-count的值為auto時,預設沒有分列效果(更準確地,由其他屬性來決定)

列間距

  列間距column-gap用於定義相鄰兩列之間的空白間距

  [註意]IE10+和chrome瀏覽器支持標準寫法,而firefox、safari瀏覽器及移動端android、IOS需要添加首碼

column-gap

  值: normal | <length>

  初始值: normal

  應用於: block、inline-block、table-cell

  繼承性: 無

  [註意]column-gap的normal值預設情況下相當於1em。column-gap值不可為負值

列rule

  該屬性用於繪製位於列間距水平中心的線條。該樣式由column-rule-width、column-rule-style、column-rule-color這三條樣式組成

  [註意]IE10+和chrome瀏覽器支持標準寫法,而firefox、safari瀏覽器及移動端android、IOS需要添加首碼

column-rule

  值: <column-rule-width> || <column-rule-style> || <column-rule-color>

  標準中說column-rule類似於border,但實際更類似於outline,因為該樣式並不占據實際的物理尺寸。outline詳細情況移步至此

  [註意]如果column-rule-width的寬度大於column-gap的寬度,則可能會顯示在列框內容中

 跨列

  column-span屬性用來定義子元素是否跨列

  [註意]firefox不支持該屬性,IE10+和chrome瀏覽器支持標準寫法,而safari瀏覽器及移動端android、IOS需要添加首碼

column-span

  值: none | all

  初始值: none

  應用於: block元素、table-cell元素(只有safari支持為table-cell設置該屬性)

  繼承性: 無

none: 預設不跨列
all: 跨越所有列

  [註意]當跨列元素被絕對定位(包括固定定位)或浮動後,跨列將不生效

  [註意]當跨列元素與column-rule的修飾線重疊時,在IE和safari中,跨列元素將覆蓋修飾線,而chrome瀏覽器存在bug,跨列元素的文本覆蓋修飾線,但跨列元素的背景可能會消失。

列填充

  在列佈局中,有時由於內容不足,多列中的最後列往往沒有足夠內容填充,這時要實現所有列都具有相同高度的效果,需要使用列填充屬性column-fill

column-fill

  值: auto | balance

  初始值: auto

  應用於: block、inline-block

  繼承性: 無

auto: 預設各列高度隨內容變化而變化
balance: 各列高度根據內容最多的一列進行統一

  [註意]目前只有firefox支持帶首碼的column-fill屬性

多列

  一般地,我們只關心是否分列以及列寬多少,對列間距並不考慮。於是,column這個column-width和column-count的複合屬性就得到了比較廣泛的使用

columns: column-width || column-count

  [註意]由於column-width和column-count這兩個值的單位不同,所以順序無關

  要知道,多列佈局主要由列寬、列間距、列數及元素寬度影響,其佈局等式是

     元素寬度 = 列數 * 列寬 + (列數-1)*列間距 <=> 列數*(列寬+列間距) - 列間距 = 元素寬度
     或者, 列數 = (元素寬度+列間距)/(列寬+列間距)
     或者, 列寬 = (元素寬度+列間距)/列數 - 列間距

  此等式中,列間距為定值,其他三個值為可變值,以下是各個值推算情況,其中N為實際列數,W為實際列寬

【1】如果元素寬度為auto,且列寬和列數都不是auto

  則 N = column-count W = column-width;

【2】如果列寬為auto,但列數不是auto,元素寬度不為auto

  則 N = column-count W = max(0,(元素寬度 - ((N-1)*列間距))/N)

【3】如果列寬不為auto,但列數是auto,元素寬度不為auto

  則 N = max(1,floor((元素寬度 + 列間距) / (列寬 + 列間距 )) W = ((元素寬度 + 列間距) / N) - 列間距

【4】如果列寬和列數都不是auto,元素寬度不為auto

  則 N = min(列寬 , floor((元素寬度 + 列間距) / (列寬 + 列間距))) W = ((元素寬度 + 列間距) / N) - 列間距

  [註意]若列數為小數,只保留整數部分

  [註意]所有的情況都是先推算出實際列數,再由實際列數推算實際列寬


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

-Advertisement-
Play Games
更多相關文章
  • 本文同步至微信公眾號http://mp.weixin.qq.com/s?__biz=MzAxMzgwNDU3Mg==&mid=402267570&idx=1&sn=4b0dc27842c32d902bad2dc4eea75f9a#rd 感興趣的可以掃碼關註哈 生命周期(Life Cycle)這個詞, ...
  • test 隨著自己對於web前端知識瞭解的越多,越來越發現自己真的好菜 一臉茫然階段 兩年前大學接觸網頁設計,那時對於網頁設計一竅不通,只是看了一本自己大學編的一本入門教材,我甚至不知道那些網頁設計的代碼是乾什麼用的,大學的老師自己講的很投入,然而我並不懂。最後考試他就划了重點。我們只要記一些簡單的 ...
  • 一直以來,大家都在說Javascript是單線程,瀏覽器無論在什麼時候,都且只有一個線程在運行JavaScript程式。 但是,不知道大家有疑問沒——就是我們在編程過程中的setTimeout(類似的還有setInterval、Ajax),不是非同步執行的嗎?!! 例如: 運行代碼,打開chrome調 ...
  • Atitit.獲得向上向下左的右的鄰居的方法 軟鍵盤的設計.. Left right可以直接使用next prev.. Up down可以使用pix 判斷...獲得next element的position...比較top 不過,要是跨block的化...僅僅所有的可以使用positon方案了... ...
  • 1.淺複製VS深複製 本文中的複製也可以稱為拷貝,在本文中認為複製和拷貝是相同的意思。另外,本文只討論js中複雜數據類型的複製問題(Object,Array等),不討論基本數據類型(null,undefined,string,number和boolean),這些類型的值本身就存儲在棧記憶體中(stri ...
  • 相信大家對於JSON應該不陌生,度娘對這個名詞的解釋大致如下: “JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於ECMAScript的一個子集。因為採用獨立於語言的文本格式,也使用了類似於C語言家族的習慣,擁有了這些特性使JSON成為理想的數據交 ...
  • 第4章,jQuery中的事件和動畫 註意:使用的jQuery版本為1.7.1 jQuery中的事件 JavaScript中通常使用window.onload方法,jQuery中使用$(document).ready()方法。 1、執行時機 window.onload方法在網頁所有元素都載入完畢之後才 ...
  • 1 設置延時, 超過該延時未移入彈窗則彈窗隱藏 Tooltip.prototype.init = function{中的 var triggers = this.options.trigger.split(' ')後面加上 2 控制不消失代碼 在Tooltip.prototype.enter = f ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...