8.5 CSS3多列布局

多列布局

CSS3之多列布局columns CSS3中新出現的多列布局(multi-column)是傳統HTML網頁中塊狀布局模式的有力擴充。這種新語法能夠讓WEB開發人員輕松的讓文本呈現多列顯示。

設置列寬

column-width: | auto 設置對象的寬度;使用像素表示。 auto:根據 <’ column-count '> 自定分配寬度

<style>.all{column-width: 300px;}  
</style>
<body><div class="all"><h3>第一段</h3><p>標簽限定了文檔的開始點和結束點,在它們之間是文檔的頭部和主體。正如您所了解的那樣,文檔的頭部由 <head> 標簽定義,而主體由 <body> 標簽定義。</p><h3>第一段</h3><p>xmlns 屬性在 XHTML 中是必需的,但在 HTML 中不是。不過,即使 XHTML 文檔中的 <html> 沒有使用此屬性,W3C 的驗證器也不會報錯。這是因為 "xmlns=http://www.w3.org/1999/xhtml" 是一個固定值,即使您沒有包含它,此值也會被添加到 <html> 標簽中。</p><h3>第一段</h3><p>注釋:即使 html 元素是文檔的根元素,它也不包含 doctype 元素。doctype 元素必須位于 html 元素之前。</p><h3>第一段</h3><p>這個例子是一個很簡單的 HTML 文件,使用了盡量少的 HTML 標簽。它向您演示了 body 元素中的內容是如何被瀏覽器顯示的。</p></div>
</body>
設置列數

column-count: | auto 用來定義對象中的列數,使用數字 1-10表示。 auto:根據 <' column-width '> 自定分配寬度

.all{/* 設置列數 */column-count: 3;
}
同時設置列寬和列數

columns: <‘column-width’> || <‘column-count’> 設置對象的列數和每列的寬度。復合屬性。 寬度和列數的合成;

.all{/* 設置列寬為100px,分3列,但是還是以列數為標準 */columns:100px 3;
}
列和列之間的間距

column-gap: normal || length, normal是默認值,為1em, length 是用來設置列與列之間的間距。

.all{column-count: 3;/* margin-left  + margin-right */column-gap: 40px;
}
列和列之間的邊框

column-rule:<’ column-rule-width ‘> || <’ column-rule-style ‘> || <’ column-rule-color '> 設置對象的列與列之間的邊框。復合屬性:包括邊框的粗細,顏色,樣式 樣式: dotted 點狀邊框 dashed 虛線 double 雙線 solid 實線

.all{column-count: 3;/* margin-left  + margin-right 
/column-gap: 40px;
*  /*3像素的間隔線 */column-rule: 3px dotted gray;
}
列高是否統一

column-fill:auto | balance 設置對象所有列的高度是否統一; auto: 列高度自適應內容; balance: 所有列的高度以其中最高的一列統一 兩個效果基本上一樣,沒有太大變化

橫跨多少列

column-span 屬性規定元素應橫跨多少列。 column-span: 1|all; 默認為1,一般情況下設置為all

<style>.all{column-count: 3;/* margin-left  + margin-right */column-gap: 40px;column-rule: 3px dotted gray;}.p1{column-span: all;}</style>
<div class="all"><p class="p1">這是一個標題</p><h3>第一段</h3><p>標簽限定了文檔的開始點和結束點,在它們之間是文檔的頭部和主體。正如您所了解的那樣,文檔的頭部由 <head> 標簽定義,而主體由 <body> 標簽定義。</p><h3>第二段</h3><p>xmlns 屬性在 XHTML 中是必需的,但在 HTML 中不是。不過,即使 XHTML 文檔中的 <html> 沒有使用此屬性,W3C 的驗證器也不會報錯。這是因為 "xmlns=http://www.w3.org/1999/xhtml" 是一個固定值,即使您沒有包含它,此值也會被添加到 <html> 標簽中。</p><h3>第三段</h3><p>注釋:即使 html 元素是文檔的根元素,它也不包含 doctype 元素。doctype 元素必須位于 html 元素之前。</p><h3>第四段</h3><p>這個例子是一個很簡單的 HTML 文件,使用了盡量少的 HTML 標簽。它向您演示了 body 元素中的內容是如何被瀏覽器顯示的。</p>
</div>
案例:使用多列布局實現瀑布流效果

<!DOCTYPE html><html><head><meta charset="utf-8"><meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport"><meta content="yes" name="apple-mobile-web-app-capable"><meta content="black" name="apple-mobile-web-app-status-bar-style"><meta content="telephone=no" name="format-detection"><meta content="email=no" name="format-detection"><title>標題</title><link rel="shortcut icon" href="favicon.ico"><style>* {margin: 0;padding: 0;}.container {width: 96%;margin: 20px auto 20px;}.waterfall {/* 最多氛圍多少列 */column-count: 3;-webkit-column-count: 3;-moz-column-count: 3;-ms-column-count: 3;-o-column-count: 3;/* 每列之間的間距是多少 
/column-gap: 15px;-webkit-column-gap: 15px;-moz-column-gap: 15px;-ms-column-gap: 15px;-o-column-gap: 15px;}.item {display: inline-block;width: 100%;
*            /*為元素指定的任何內邊距和邊框都將在已設定的寬度和高度內進行繪制。 */box-sizing: border-box;padding: 1em;background-color: white;border: 1px solid #ccc;border-radius: 4px;-webkit-border-radius: 4px;/* 設置上下間距 */margin-bottom: 10px;/*  需要設置 height: 100%; overflow: auto */height: 100%;overflow: auto;}.item img {width: 100%;padding-bottom: 1em;margin-bottom: 0.5em;border-bottom: 1px solid #cccccc;}</style><body><div class="container"><div class="waterfall"><div class="item"><img src="img/1.jpg" /><p>我來測試demo111111</p></div><div class="item"><img src="img/7.jpg" />我來測試demo2222</div><div class="item"><img src="img/2.jpg" /><p>我來測試demo3333</p></div><div class="item"><img src="img/9.jpg" /><p>我來測試demo4444</p></div><div class="item"><img src="img/4.jpg" /><p>我來測試demo5555</p></div><div class="item"><img src="img/5.jpg" /><p>我來測試demo6666</p></div><div class="item"><img src="img/6.jpg" /><p>我來測試demo7777</p></div><div class="item"><img src="img/8.jpg" /><p>我來測試demo8888</p></div><div class="item"><img src="img/9.jpg" /><p>我來測試demo8888</p></div></div></div></body>
</html>

使用js實現多列布局

<style>
{margin: 0px;padding: 0px;
}
div {width: 150px;position: absolute;border: 1px solid;
}
img {display: inline-block;width: 150px;
}
#wrap {position: relative;width: 100%;
}
</style>
<body><div>瀑布流<img src="./img/1.jpg" alt=""></div><div>瀑布流<img src="./img/2.jpg" alt=""></div><div>瀑布流<img src="./img/3.jpg" alt=""></div><div>瀑布流<img src="./img/4.jpg" alt=""></div><div>瀑布流<img src="./img/5.jpg" alt=""></div><div>瀑布流<img src="./img/6.jpg" alt=""></div><div>瀑布流<img src="./img/7.jpg" alt=""></div><div>瀑布流<img src="./img/8.jpg" alt=""></div><div>瀑布流<img src="./img/9.jpg" alt=""></div>
</body>
<script>var div = document.getElementsByTagName("div");//因為圖片較多,在加載時,就加載圖片window.onload = function(){Full();}// Full()//當窗口大小改變時,重新分列并排序window.onresize = function(){Full();}//瀑布流函數function Full(){//1. 獲取瀑布流求分幾列var pw = document.documentElement.offsetWidth;   //頁面寬度var dw = div[0].offsetWidth;           //每個div寬度var cols = Math.floor(pw/dw);//縫隙數等于列數加1,例如6行有7個縫隙var white = (pw - dw * cols)/(cols + 1);//每一列定位var t = 10;var arr = []; // 2. 默認以第一張圖片的寬度為多列布局每列的寬度for(var i = 0;i<cols;i++){var pos = {//計算每個div的坐標(開始讓每個top取一個固定值)//橫坐標每次不變,只有top變/*div[0]   left: whitediv[1]   left: white2 + dw*        div[2]   left: white*3 + dw*2*/x:Math.floor((i+1)*white+dw*i),y:t}arr.push(pos);      //將坐標存入數組}for(var i=0; i<div.length;i++){var index = getMinTop(arr);// 循環遍歷第一行數據div[i].style.left = arr[index].x+'px';div[i].style.top = arr[index].y+'px';// 把圖片的高度存儲在元素的y屬性中;改變已經顯示圖片的y值arr[index].y += div[i].offsetHeight + t;// 查找最小高度的列,默認以arr[0]的y坐標作為最小的列// 第二行最小的列,就是圖片高度最低的}}//求每次最小高度的列function getMinTop(arr){var minT = arr[0].y;// console.log(minT);var index = 0;for(var k = 0;k<arr.length;k++){if(arr[k].y < minT){minT = arr[k].y;index = k;}}return index;}
</script>

參考文檔:https://blog.csdn.net/qq_47443027/article/details/119981423

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

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

相關文章

Chrome插件快速上手

目錄 前言 一、瀏覽器插件的主要功能 二、插件的工作原理 插件結構 manifest.json icons background.js content-scripts 三、插件例子 popup popup.html popup.js styles.css background.js content-script.js manifest.json 四、其它 前言 本文不做特殊說明…

moment和dayjs

一&#xff1a;moment和dayjs 區別moment 大且可變、維護模式&#xff1b;dayjs 小且不可變、插件化、tree?shaking 友好。antd v4 用 moment&#xff1b;antd v5 用 dayjs。請在同一項目中統一其一&#xff0c;避免混用導致組件報錯。二&#xff1a; antd 4.24.16&#xff08…

Flutter Packge - 組件應用

一、組件創建1. 在工程根目錄創建 packages 目錄。mkdir packages #創建文件夾 cd packages 2. 創建純 Dart Package&#xff08;適合工具類/UI組件&#xff09;。flutter create --templatepackage common_network二、組件配置1. 在 common_network 的 pubspec.yaml 中添加…

基于雙塊輕量級神經網絡的無人機拍攝的風力渦輪機圖像去霧方法

基于雙塊輕量級神經網絡的無人機拍攝的風力渦輪機圖像去霧方法 UAV-Taken Wind Turbine Image Dehazing With a Double-Patch Lightweight Neural Network 我是菜雞&#xff01;我是菜雞&#xff01;我是菜雞&#xff01; 如果老師及學姐學長對該文有任何意見&#xff0c;請…

Spring AI Alibaba 項目接入阿里云百煉平臺大模型

1 依賴jdk 21 springboot 3.4.5 spring-ai-alibaba-starter-dashscope 1.0.0.2<properties><java.version>21</java.version><spring-ai.version>1.0.0</spring-ai.version><spring-ai-alibaba.version>1.0.0.2</spring-ai-alibaba.v…

電腦和手機訪問網站,自動檢測跳轉不同網站

自動檢測跳轉不同網站 自動檢測設備手機或電腦來跳轉不同網頁 開箱即用&#xff0c;不過需要自己修改一下跳轉鏈接 源碼截圖&#xff1a; 下載地址&#xff1a;電腦和手機訪問網站&#xff0c;自動檢測跳轉不同網站.zip - 藍奏云

Spring Boot 集成 ShardingSphere 實現讀寫分離實踐

Spring Boot 集成 ShardingSphere 實現讀寫分離實踐 在高并發的業務場景中,數據庫往往是系統性能的瓶頸。為了提高系統的吞吐量和穩定性,讀寫分離是一種常見的優化方案。本文將詳細介紹如何使用 Spring Boot 結合 ShardingSphere 實現數據庫的讀寫分離,并提供完整的配置和實…

以rabbitmq為例演示podman導出導入鏡像文件

1. 導出鏡像為 tar 文件 將鏡像保存為壓縮包&#xff08;默認格式為 docker-archive&#xff09;&#xff1a; podman save -o rabbitmq_management.tar docker.io/rabbitmq:management-o&#xff1a;指定輸出文件名&#xff08;如 rabbitmq_management.tar&#xff09;。鏡像名…

LIS(最長上升子序列)與LCS(最長公共子序列)

最長上升子序列定義&#xff1a;給出一個數字序列&#xff08;arr&#xff09;&#xff0c;求出其中長度最長的數值嚴格遞增的子序列做法一&#xff1a;使用動態規劃&#xff0c;我們定義dp[i]為以arr[i]結尾的最長上升子序列的長度。#include<bits/stdc.h> using namesp…

javaSE(基礎):5.抽象類和接口

抽象類一.理解抽象類思維&#xff1a;假如我想定義一個Shape&#xff08;圖形類&#xff09;類&#xff0c;我在這個類中寫了一個draw()方法&#xff0c;但是這個方法是不能用來描述圖形形狀的&#xff08;不能有方法體&#xff09;&#xff0c;因為我只要對他進行了準確描述&a…

ESG評級可持續發展之路,ESG評級的好處

在商業文明的演進歷程中&#xff0c;ESG評級正成為衡量企業價值的全新坐標系。這套融合環境&#xff08;Environmental&#xff09;、社會&#xff08;Social&#xff09;和治理&#xff08;Governance&#xff09;三大維度的評估體系&#xff0c;猶如一盞明燈&#xff0c;指引…

camera人臉識別問題之二:【FFD】太陽逆光場景,人像模式后置打開美顏和濾鏡,關閉heif拍攝格式對著人臉拍照,成像口紅出現位置錯誤

【關注我&#xff0c;后續持續新增專題博文&#xff0c;謝謝&#xff01;&#xff01;&#xff01;】 上一篇我們講了&#xff1a; 這一篇我們開始講&#xff1a; camera人臉識別問題之二&#xff1a;【FFD】太陽逆光場景&#xff0c;人像模式后置打開美顏和濾鏡&#xff0c;關…

YOLO-Count:用于文本到圖像生成的可微分目標計數

摘要 https://arxiv.org/pdf/2508.00728v1 我們提出了YOLO-Count&#xff0c;一種可微分的開放詞匯目標計數模型&#xff0c;旨在解決通用計數挑戰并實現文本到圖像(T2I)生成的精確數量控制。核心貢獻是"基數"圖(cardinality map)&#xff0c;這是一種新穎的回歸目標…

Go 的錯誤處理方式深度解析—— error vs panic vs recover:機制原理與實戰取舍

一、Go 的錯誤處理哲學Go 的設計哲學鼓勵明確的、顯式的錯誤處理方式。它不像 Java 或 Python 使用異常機制&#xff0c;而是采用了返回值 error 的方式&#xff0c;讓錯誤成為程序流程的一部分。Go 的錯誤處理核心理念是&#xff1a; 錯誤是值&#xff08;Errors are values&a…

官方Windows系統部署下載工具實踐指南

摘要&#xff1a;本文介紹兩款用于獲取微軟正版系統部署文件的工具&#xff0c;適用于需要快速搭建Windows環境的技術人員。所有工具均基于官方渠道實現&#xff0c;不涉及系統修改或激活功能。一、Windows系統鏡像下載方案工具名稱&#xff1a;Windows鏡像直鏈下載工具 核心功…

Pandas query() 方法詳解

Pandas query() 方法詳解query() 是 Pandas 中一個非常強大的方法&#xff0c;它允許你使用字符串表達式來篩選數據行。這種方法比傳統的布爾索引更簡潔、更易讀。基本語法df.query(expr, inplaceFalse, **kwargs)expr: 查詢字符串表達式inplace: 是否原地修改 DataFrame (默認…

Linux系統層IO

1.c語言文件操作 fopen&#xff1a;打開文件&#xff0c;模式 "w"&#xff08;寫&#xff0c;覆蓋&#xff09;或 "r"&#xff08;讀&#xff09;。 fwrite&#xff1a;fwrite(data, size, count, fp)&#xff0c;按 size 字節寫入 count 次數據。 fread…

QT中的trimmed() 方法(1)

QT中的trimmed() 方法&#xff08;2&#xff09; trimmed() 是 Qt 框架 中 QString 類提供的一個方法&#xff0c;用于 去除字符串首尾的空白字符&#xff08;whitespace characters&#xff09;。它的作用類似于標準 C 中的 std::string 的 trim 操作&#xff0c;但專為 Qt 的…

動漫軟件集合分享

通過網盤分享的文件&#xff1a;動漫軟件 鏈接: https://pan.baidu.com/s/1TD_OmaAZksfFxJ4PW6rS-w?pwd1234 提取碼: 1234 打印動漫.apk 當鳥動漫.apk 動漫共和國【OmoFun復活】.apk 咕咕香.apk 黑貓動漫.apk 團次元【推薦】.apk 橘漫.apk 曼波.apk 萌國.apk 趣動漫.apk 三…

Mysql與Ooracle 索引失效場景對比

MySQL 和 Oracle 作為主流關系型數據庫&#xff0c;其索引失效的場景既有共性&#xff0c;也因底層優化器、索引類型支持等差異存在不同。以下從常見索引失效場景對比兩者的表現及原因&#xff1a;一、索引列上使用函數 / 表達式共性&#xff1a;若直接在索引列上使用函數或表達…