CSS3多列(详解网页多列布局应用)

news/2024/5/4 13:02:56

目录

一、多列介绍

1.概念

2.特点

3.常用功能

 二、多列用法

1.列数和宽度控制

2.列间距和规则

3.跨列和分列内容

4.列宽度自动调整

5.垂直对齐

三、多列实例

1.多列布局

 2.导航菜单

四、总结


一、多列介绍

1.概念

CSS3 多列布局是一种用于排列文本内容的 CSS 模块,它允许开发者将文本分成多列显示,从而创建出类似于报纸、杂志等印刷媒体的布局效果。多列布局适用于需要在网页上呈现大段文本的场景,使得文本内容更具可读性和美观性。

2.特点

  1. 简单易用: 多列布局的实现非常简单,只需使用几个简单的 CSS 属性就可以创建出多列效果。
  2. 自适应性: 多列布局可以根据设备尺寸和屏幕宽度自动调整列数和列宽,适应不同的显示环境。
  3. 可定制性: 开发者可以通过设置不同的 CSS 属性来定制列数、列宽、列间距、列规则等布局样式。
  4. 提升阅读体验: 将文本内容分成多列显示可以提高阅读体验,减少阅读疲劳,特别是在阅读长文本时更为有效。

3.常用功能

  1. 设置列数和宽度: 使用 column-countcolumn-width 属性可以控制列数和列宽。
  2. 设置列间距和规则: 使用 column-gapcolumn-rule 属性可以设置列间距和列规则。
  3. 跨列和分列内容: 使用 column-spanbreak-inside 属性可以控制元素跨列和分列。
  4. 自动调整列宽度: 使用 column-fill 属性可以控制列宽度的自动调整方式。
  5. 垂直对齐: 使用 column-align 属性可以控制文本在列中的垂直对齐方式。

 二、多列用法

CSS3 多列布局(CSS3 Multi-column Layout)是 CSS3 中的一个模块,用于实现文本内容的多列显示,类似于报纸或杂志的版面排版。它提供了一种简单的方法来创建具有多列文本的布局,而无需使用复杂的浮动或定位技术。

1.列数和宽度控制

你可以通过设置 column-count 属性指定要创建的列数,或者使用 column-width 属性来指定每列的宽度。你也可以同时使用这两个属性来控制列数和宽度。

/* 指定列数 */
div {column-count: 3;
}/* 指定列宽 */
div {column-width: 200px;
}/* 同时指定列数和宽度 */
div {column-count: 3;column-width: 200px;
}

2.列间距和规则

你可以使用 column-gap 属性来指定列与列之间的间距,还可以使用 column-rule 属性来定义列之间的分隔线的样式、宽度和颜色。

/* 列间距 */
div {column-gap: 20px;
}/* 列规则 */
div {column-rule: 1px solid #ccc;
}

3.跨列和分列内容

使用 column-span 属性可以指定某个元素横跨多列,而 break-inside 属性则可以控制元素在列布局中的换行行为。

/* 跨列 */
.featured {column-span: all;
}/* 分列内容 */
p {break-inside: avoid;
}

4.列宽度自动调整

你可以使用 column-fill 属性控制文本在列中的分布方式,是尽可能均匀填充各列还是尽量保持各列的高度一致。

/* 列宽度自动调整 */
div {column-fill: balance;
}

5.垂直对齐

使用 column-align 属性可以控制文本在列中的垂直对齐方式,例如顶部对齐、居中对齐或底部对齐。

/* 垂直对齐 */
div {column-align: center;
}

三、多列实例

1.多列布局

HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS3 Multi-column Layout Example</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container"><h1>CSS3 Multi-column Layout Example</h1><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed accumsan ante ut ullamcorper ultrices. Vestibulum feugiat diam vitae tortor cursus, id lobortis enim tincidunt. Morbi at enim vitae mauris sollicitudin bibendum ac id est. Aliquam eget arcu sed nisi efficitur bibendum nec in ligula. Duis mollis leo sed sem ultricies, nec sodales sem consequat. Nunc aliquam nisl sit amet est eleifend, quis finibus orci molestie. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris dapibus viverra mauris, nec rhoncus ex fermentum eu. In scelerisque nulla ut libero sodales tristique. Pellentesque a neque et quam elementum consectetur. Proin scelerisque vestibulum quam, nec sollicitudin ligula scelerisque non.</p><p>Nullam vel sem eget felis tempus pellentesque. In hac habitasse platea dictumst. Duis nec ultricies nunc. In hac habitasse platea dictumst. Vivamus quis enim at justo pellentesque dignissim. Maecenas sollicitudin, sapien non sagittis bibendum, odio lacus consequat tortor, ac molestie purus libero id lectus. Cras ac arcu quis elit commodo rutrum. Aliquam blandit diam eget nibh dapibus, eget lobortis urna ultricies. Sed quis aliquet est. Duis pharetra eget ex ac interdum. Mauris eu faucibus justo. Duis porta, libero vel ullamcorper rutrum, turpis odio ultrices metus, a tincidunt erat nunc nec nunc. Vivamus posuere libero vitae mauris interdum tempor. Duis lacinia ultricies diam, sed facilisis nunc mollis nec. Pellentesque ornare non sem non tincidunt.</p><p>Sed sit amet purus a arcu aliquam interdum. In lobortis in risus nec fermentum. Integer at libero ut sem vestibulum convallis. Pellentesque convallis sapien non vestibulum malesuada. Integer nec justo ac velit feugiat congue. Aenean ullamcorper urna in feugiat tincidunt. Integer in dictum justo. Etiam ac malesuada libero. In hac habitasse platea dictumst. Morbi fermentum nec felis eu tincidunt. Sed aliquam metus vitae ligula ultrices, a mattis metus euismod. Suspendisse potenti. Duis fringilla semper dapibus.</p>
</div>
</body>
</html>

CSS代码:

.container {width: 80%;margin: 0 auto;column-count: 3;column-gap: 20px;column-rule: 1px solid #ccc;
}.container h1 {text-align: center;
}.container p {margin-bottom: 20px;text-align: justify;
}

 2.导航菜单

HTML结构:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS3 Multi-column Layout Example</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container"><header><h1>CSS3 Multi-column Layout Example</h1><nav><ul><li><a href="#">Home</a></li><li><a href="#">About</a></li><li><a href="#">Services</a></li><li><a href="#">Contact</a></li></ul></nav></header><main><section><h2>About Us</h2><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed accumsan ante ut ullamcorper ultrices. Vestibulum feugiat diam vitae tortor cursus, id lobortis enim tincidunt...</p></section><section><h2>Our Services</h2><ul><li>Service 1</li><li>Service 2</li><li>Service 3</li><li>Service 4</li></ul></section><section><h2>Contact Us</h2><address>123 Street Name<br>City, Country<br>Phone: 123-456-7890<br>Email: info@example.com</address></section></main><footer><p>&copy; 2024 CSS3 Multi-column Layout Example</p></footer>
</div>
</body>
</html>

CSS代码:

/* Reset some default browser styles */
body, h1, h2, p, ul, li {margin: 0;padding: 0;
}/* Apply some basic styles */
body {font-family: Arial, sans-serif;line-height: 1.6;
}.container {width: 80%;margin: 0 auto;column-count: 3;column-gap: 40px;
}header {text-align: center;margin-bottom: 20px;
}nav ul {list-style: none;
}nav ul li {display: inline;margin-right: 20px;
}nav ul li:last-child {margin-right: 0;
}main {display: flex;justify-content: space-between;
}section {margin-bottom: 40px;
}h2 {margin-bottom: 10px;
}ul {list-style: none;
}footer {text-align: center;margin-top: 20px;clear: both;
}

四、总结

  1. CSS3 标准支持: 多列布局是 CSS3 标准的一部分,可以通过简单的 CSS 属性来实现。

  2. column-count 属性: 通过设置 column-count 属性,可以指定将内容分成的列数。

  3. column-width 属性: 通过设置 column-width 属性,可以指定每一列的宽度,而不是固定的列数。

  4. column-gap 属性: 通过设置 column-gap 属性,可以指定列之间的间距。

  5. column-rule 属性: 通过设置 column-rule 属性,可以为列添加边框。

  6. 自适应布局: 多列布局可以根据容器的大小自动调整,以适应不同屏幕尺寸和设备。

  7. 支持多种元素类型: 多列布局不仅适用于文本内容,还可以用于其他元素,如列表、段落、和表格等。

  8. 增强可读性: 将内容分成多列可以减少行宽,从而增强阅读体验,并且更符合书籍和报纸的版面设计规范。

  9. 兼容性: 多列布局在现代浏览器中得到良好支持,但在某些旧版本浏览器中可能存在兼容性问题,需要适当的回退方案。


http://www.mrgr.cn/p/23584631

相关文章

数据挖掘实验(Apriori,fpgrowth)

Apriori&#xff1a;这里做了个小优化&#xff0c;比如abcde和adcef自连接出的新项集abcdef&#xff0c;可以用abcde的位置和f的位置取交集&#xff0c;这样第n项集的计算可以用n-1项集的信息和数字本身的位置信息计算出来&#xff0c;只需要保存第n-1项集的位置信息就可以提速…

如何使用 Apifox 请求 gRPC 接口?

使用 Apifox 发送 gRPC 接口Apifox 支持基于 .proto 文件的 gRPC 调试,包括一元调用和流式调用。在创建项目时「选择 gRPC 项目」-->「导入 .proto 文件」,无需写代码即可直接调用 gRPC 接口。创建 gRPC 在调试 gRPC 接口之前,也需要先导入作为 API 定义的 .proto 文件。…

字节面试:如何解决MQ消息积压问题?

MQ(Message Queue)消息积压问题指的是在消息队列中累积了大量未处理的消息,导致消息队列中的消息积压严重,超出系统处理能力,影响系统性能和稳定性的现象。 1.消息积压是哪个环节的问题? MQ 执行有三大阶段:消息生产阶段。 消息存储阶段。 消息消费阶段。很显然,消息堆…

一篇文章带您了解操作系统的体系结构

操作系统的体系结构有哪些&#xff1f; 我们可以利用时钟中断实现计时功能。 原语是一种特殊的程序&#xff0c;具有原子性。也就是说&#xff0c;这段程序的运行必须一气呵成&#xff0c;不能中断。 内核是操作系统最基本&#xff0c;最核心的部分。 实现操作系统内核功能的…

Practice

18.链表只能一个接着一个遍历,不允许通过随机访问7.链表的地址是连续的,通过内部的指针来进行访问//假设该链表只给出了头指针 head。在不改变链表的前提下,请设计一个尽可能高效的算法, //查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的 data…

五种服务异步通信(MQ)-详解、代码案例

简介&#xff1a;本篇文章主要是介绍了常用的异步通信原理&#xff0c;主要是RabbitMQ技术 目录 1、初始MQ&#xff08;异步通讯&#xff09; 1.1 同步通讯 1.2 异步通讯 1.3 MQ常见框架 2、RabbitMQ快速入门 2.1 RabbitMQ概述和安装 2.2 常见消息模型 2.3 快速入门 3、…

ssm071北京集联软件科技有限公司信息管理系统+jsp

北京集联软件科技有限公司信息管理系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本信息管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理…

记一个简单工作流引擎的变更历史

第1关 一天,老板找到我,说要做个简单的工作流引擎。 我查了一天啥是工作流,然后做出了如下版本:按顺序添加任意个审批人组成一个链表,最后加一个结束节点 记录当前审批人,当审批完后,审批人向后移动一位 当审批人对应结束节点时,流程结束老板:简陋了点。 第2关 老板又…

笔试题:查找链表中倒数第k(k为正整数)个位置上的结点

数据结构 链表 笔试题:(1)算法的基本设计思想:定义两个结构体指针FPhead和SPhead,其中,FPhead需要从头遍历链表,当FPhead和SPhead之间的距离相差k-1,则调动SPhead开始遍历链表,从而确定倒数第k个位置上的结点。 (2)算法的详细实现步骤:定义一个整型变量用来储存两个结构…

E-MapReduce极客挑战赛季军方案

前一段时间我参加了E-MapReduce极客挑战赛&#xff0c;很幸运的获得了季军。在这把我的比赛攻略给大家分享一下&#xff0c;希望可以抛砖引玉。 赛题分析与理解 赛题背景&#xff1a; 大数据时代&#xff0c;上云已成为越来越多终端客户大数据方案的落地选择&#xff0c;阿里…

Elastic学习之旅 (12) .NET 6应用集成ES - 下

本篇,我们l来了解下如何在ASP.NET 6应用中对ES中的数据进行查询 和 聚合,通过使用这些查询我们可以在应用中实现一些报表功能。到此,本系列的学习之旅就要跟大家说声再见了,12篇说多不多,持续输出就是坚持,希望对你学习ElasticSearch有所帮助。大家好,我是Edison。 上一…

Linux使用Docker部署DashDot访问本地服务器面板

文章目录 1. 本地环境检查1.1 安装docker1.2 下载Dashdot镜像 2. 部署DashDot应用 本篇文章我们将使用Docker在本地部署DashDot服务器仪表盘&#xff0c;并且结合cpolar内网穿透工具可以实现公网实时监测服务器系统、处理器、内存、存储、网络、显卡等&#xff0c;并且拥有API接…

【C++】学习笔记——类和对象_4

文章目录 二、类和对象13.运算符重载赋值运算符重载 14. 日期类的实现Date.h头文件Date.cpp源文件test.cpp源文件 未完待续 二、类和对象 13.运算符重载 赋值运算符重载 我们之前学了一个拷贝构造函数&#xff0c;本质上就是创建一个对象&#xff0c;该对象初始化为一个已经…

全国省市区地址查询API:简单易用的地址查询服务

在现代社会,我们经常需要使用地址信息进行各类操作。然而,对于普通用户来说,经纬度坐标和结构化地址可能并不是很好理解,这就给我们的日常生活带来了一些困扰。 为了解决这个问题,WAPI平台推出了一款全国省市区地址查询API。这个API能够将用户输入的地理位置信息转换为高德…

单元测试必备:Asp.Net Core代码覆盖率实战,打造可靠应用 !

引言 在前几章我们深度讲解了单元测试和集成测试的基础知识,这一章我们来讲解一下代码覆盖率,代码覆盖率是单元测试运行的度量值,覆盖率通常以百分比表示,用于衡量代码被测试覆盖的程度,帮助开发人员评估测试用例的质量和代码的健壮性。常见的覆盖率包括语句覆盖率(Line Co…

028——从GUI->Client->Server->driver实现对SR04的控制

目录 1、修改GUI 2、修改数据处理和发送缓冲区的帧 3、修改server中对SR04的处理 4、添加SR04的dirver_handle 5、验证 6、遇到问题及解决方法 7、 项目管理操作 1、修改GUI 2、修改数据处理和发送缓冲区的帧 添加对SR04按键事件处理 添加对接收数据的处理 3、修改serv…

蓝桥杯2024年第十五届省赛

E:宝石组合 根据给的公式化简后变为gcd(a,b,c)根据算数基本定理&#xff0c;推一下就可以了 然后我们对1到mx的树求约数&#xff0c;并记录约数的次数&#xff0c;我们选择一个最大的且次数大于等3的就是gcd int mx; vector<int> g[N]; vector<int> cnt[N]; int…

体验下,大厂在使用功能的API网关!

作者:小傅哥 博客:https://bugstack.cn沉淀、分享、成长,让自己和他人都能有所收获!😄大家好,我是技术UP主小傅哥。 还是在22年的时候,小傅哥做了一套基于 Netty 协议转换和通信的 API网关,分享给伙伴们学习使用,增加一些业务开发以外的知识积累。不过很多伙伴都问过…

通过ORPO技术微调 llama3大模型(Fine-tune Llama 3 with ORPO)

1f45bd1e8577af66a05f5e3fadb0b29 通过ORPO对llama进行微调 前言 ORPO是一种新颖的微调技术,它将传统的监督微调和偏好对齐阶段整合到一个过程中。这减少了训练所需的计算资源和时间。此外,经验结果表明,ORPO在各种模型大小和基准测试中都超过了其他对齐方法。 在本文中,我…

数据结构系列-堆排序

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 昨天我们实现的堆的搭建&#xff0c;我们今天实现以下堆的排序&#xff0c; 堆的排序的最大的优点就是提高的效率&#xff0c;减小了时间复杂度&#xff0c;在这个里面我们有一个…