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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...