CSS“多列布局”(补充)——WEB开发系列35

news2024/9/20 22:48:47

多列布局是一种非常常见的布局方式,适用于内容丰富的页面,如新闻网站、杂志或博客。


一、CSS多列布局概述

CSS多列布局允许我们将内容分成多个垂直列,使页面布局更加灵活和多样化。多列布局的主要属性包括 ​​column-count​​、​​column-width​​ 和 ​​column-gap​​,这些属性可以单独或结合使用,以实现所需的列布局效果。


多列布局的基本属性

  • column-count​:指定列的数量。例如,​​column-count: 3;​​ 表示将内容分为三列。
  • column-width​:指定列的最小宽度。浏览器会根据这个宽度自动调整列数,以适应容器的宽度。
  • column-gap​:指定列与列之间的间距。可以使用像素(px)、百分比(%)等单位。

二、创建一个简单的三列布局

让我们从一个简单的三列布局示例开始。假设我们有一个包含大量文本的容器,我们希望将这些文本分成三列显示。

基本的三列布局示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>三列布局示例</title>
    <style>
        .container {
            column-count: 3;
            column-gap: 20px;
            padding: 20px;
            background-color: #f0f0f0;
            max-width: 800px;
            margin: 0 auto;
        }
        .container p {
            margin: 0;
            line-height: 1.6;
        }
    </style>
</head>
<body>
    <div class="container">
        <p>在书中看过一个故事。有只兔子腹部不小心被荆棘划伤,一下子就流血了。痛苦之下,它龇牙咧嘴地呻吟着。有几只路过的动物听到了,就走过来,一边同情地望着,一边安慰它。看到自己这么受重视,兔子内心非常享受。为了吸引更多的关注,它就放开嗓子,更加卖力地惨叫起来。果然围过来的动物越来越多,兔子更兴奋了,甚至还把伤口扒开,主动展示给别的动物看。结果由于没及时处理,没过一会儿,兔子就失血过多死掉了。</p>
        <p>现实中有很多像兔子那样的人,在遭遇伤痛后,到处吆喝卖惨,最终导致悲惨的结局。</p>
        <p>作家傅菲说,把伤口一次次撕开给别人看,其实是对自己的折磨。面对人生的种种不幸,懂得把伤痛藏起来,默默承担,才能疗愈自己,扭转命运。人生在世,永远不要兜售自己的苦难。</p>
    </div>
</body>
</html>

示例中我们使用 ​​column-count​​ 属性将容器的内容分为三列,使用 ​​column-gap​​ 属性设置列与列之间的间距为20px。你可以看到,文本会自动分成三列,并在列之间留有间距。


三、为多列布局添加样式

除了基本的列设置,我们还可以通过CSS为多列布局添加更多样式,使布局更具吸引力。


为多列布局添加边框和背景色

我们可以为每列添加不同的背景色和边框,使布局更加生动有趣。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>样式化的三列布局示例</title>
    <style>
        .container {
            column-count: 3;
            column-gap: 20px;
            padding: 20px;
            background-color: #f0f0f0;
            max-width: 800px;
            margin: 0 auto;
        }
        .container p {
            margin: 0;
            line-height: 1.6;
            padding: 10px;
            background-color: #fff;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        .container p:nth-child(odd) {
            background-color: #e0f7fa;
        }
        .container p:nth-child(even) {
            background-color: #f1f8e9;
        }
    </style>
</head>
<body>
    <div class="container">
         <p>在书中看过一个故事。有只兔子腹部不小心被荆棘划伤,一下子就流血了。痛苦之下,它龇牙咧嘴地呻吟着。有几只路过的动物听到了,就走过来,一边同情地望着,一边安慰它。看到自己这么受重视,兔子内心非常享受。为了吸引更多的关注,它就放开嗓子,更加卖力地惨叫起来。果然围过来的动物越来越多,兔子更兴奋了,甚至还把伤口扒开,主动展示给别的动物看。结果由于没及时处理,没过一会儿,兔子就失血过多死掉了。</p>
        <p>现实中有很多像兔子那样的人,在遭遇伤痛后,到处吆喝卖惨,最终导致悲惨的结局。</p>
        <p>作家傅菲说,把伤口一次次撕开给别人看,其实是对自己的折磨。面对人生的种种不幸,懂得把伤痛藏起来,默默承担,才能疗愈自己,扭转命运。人生在世,永远不要兜售自己的苦难。</p>
    </div>
</body>
</html>

此示例我们为每个段落添加了边框、背景色和圆角边框,并使用 ​​nth-child​​ 选择器为奇数和偶数的段落分别设置不同的背景色。这样可以使每列的内容更加突出。


四、处理列与内容折断

在实际应用中,我们可能希望控制列内的内容如何折断,以确保布局的整洁性。CSS提供了 ​​break-inside​​ 属性来处理列与内容的折断问题。


使用 ​​break-inside​​ 属性

​break-inside​​ 属性用于控制元素在多列布局中的折断行为。常见的值包括:

  • auto​:默认值,允许内容在列中折断。
  • avoid​:尽量避免在列之间折断,适用于较大的块元素,如图片或广告。
  • avoid-page​:尽量避免在页面之间折断,通常用于分页内容。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>避免折断示例</title>
    <style>
        .container {
            column-count: 3;
            column-gap: 20px;
            padding: 20px;
            max-width: 800px;
            margin: 0 auto;
        }
        .container p {
            margin: 0;
            line-height: 1.6;
            break-inside: avoid;
            background-color: #e0f7fa;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        .container img {
            max-width: 100%;
            height: auto;
            display: block;
            margin: 10px 0;
        }
    </style>
</head>
<body>
    <div class="container">
       
        <img src="example.jpg" alt="示例图片">
         <p>在书中看过一个故事。有只兔子腹部不小心被荆棘划伤,一下子就流血了。痛苦之下,它龇牙咧嘴地呻吟着。有几只路过的动物听到了,就走过来,一边同情地望着,一边安慰它。看到自己这么受重视,兔子内心非常享受。为了吸引更多的关注,它就放开嗓子,更加卖力地惨叫起来。果然围过来的动物越来越多,兔子更兴奋了,甚至还把伤口扒开,主动展示给别的动物看。结果由于没及时处理,没过一会儿,兔子就失血过多死掉了。</p>
        <p>现实中有很多像兔子那样的人,在遭遇伤痛后,到处吆喝卖惨,最终导致悲惨的结局。</p>
        <p>作家傅菲说,把伤口一次次撕开给别人看,其实是对自己的折磨。面对人生的种种不幸,懂得把伤痛藏起来,默默承担,才能疗愈自己,扭转命运。人生在世,永远不要兜售自己的苦难。</p>
    </div>
</body>
</html>

​break-inside: avoid;​​ 确保段落不会被分割到不同的列中。注意,​​break-inside​​ 的效果可能会因浏览器支持情况而有所不同。


五、高级应用和布局技巧

创建响应式多列布局

在响应式设计中,我们可以使用媒体查询来调整多列布局,以适应不同的屏幕尺寸。

示例:响应式三列布局
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>响应式三列布局示例</title>
    <style>
        .container {
            column-count: 3;
            column-gap: 20px;
            padding: 20px;
            max-width: 800px;
            margin: 0 auto;
        }
        .container p {
            margin: 0;
            line-height: 1.6;
            background-color: #e0f7fa;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }

        @media (max-width: 800px) {
            .container {
                column-count: 2;
            }
        }

        @media (max-width: 500px) {
            .container {
                column-count: 1;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <p>在书中看过一个故事。有只兔子腹部不小心被荆棘划伤,一下子就流血了。痛苦之下,它龇牙咧嘴地呻吟着。有几只路过的动物听到了,就走过来,一边同情地望着,一边安慰它。看到自己这么受重视,兔子内心非常享受。为了吸引更多的关注,它就放开嗓子,更加卖力地惨叫起来。果然围过来的动物越来越多,兔子更兴奋了,甚至还把伤口扒开,主动展示给别的动物看。结果由于没及时处理,没过一会儿,兔子就失血过多死掉了。</p>
        <p>现实中有很多像兔子那样的人,在遭遇伤痛后,到处吆喝卖惨,最终导致悲惨的结局。</p>
        <p>作家傅菲说,把伤口一次次撕开给别人看,其实是对自己的折磨。面对人生的种种不幸,懂得把伤痛藏起来,默默承担,才能疗愈自己,扭转命运。人生在世,永远不要兜售自己的苦难。</p>
    </div>
</body>
</html>

示例中使用媒体查询来根据屏幕宽度调整列数。当屏幕宽度小于800px时,列数变为2列;当屏幕宽度小于500px时,列数变为1列。这样可以确保布局在不同设备上都能良好展示。


多列布局与浮动元素结合使用

在某些复杂布局中,我们可能需要将多列布局与浮动元素结合使用。例如,将一个多列布局的容器与浮动的图片结合使用。

示例:多列布局与浮动元素
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>多列布局与浮动元素示例</title>
    <style>
        .container {
            column-count: 3;
            column-gap: 20px;
            padding: 20px;
            max-width: 800px;
            margin: 0 auto;
        }
        .container p {
            margin: 0;
            line-height: 1.6;
            background-color: #e0f7fa;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
        .container img {
            float: left;
            width: 30%;
            margin-right: 10px;
            margin-bottom: 10px;
        }
    </style>
</head>
<body>
    <div class="container">
        <img src="example.png" alt="示例图片1"> 
        <p>在书中看过一个故事。有只兔子腹部不小心被荆棘划伤,一下子就流血了。痛苦之下,它龇牙咧嘴地呻吟着。有几只路过的动物听到了,就走过来,一边同情地望着,一边安慰它。看到自己这么受重视,兔子内心非常享受。为了吸引更多的关注,它就放开嗓子,更加卖力地惨叫起来。果然围过来的动物越来越多,兔子更兴奋了,甚至还把伤口扒开,主动展示给别的动物看。结果由于没及时处理,没过一会儿,兔子就失血过多死掉了。</p>
        
        <img src="example2.png" alt="示例图片2">
         <p>现实中有很多像兔子那样的人,在遭遇伤痛后,到处吆喝卖惨,最终导致悲惨的结局。</p>
       
        <img src="example3." alt="示例图片3">
         <p>作家傅菲说,把伤口一次次撕开给别人看,其实是对自己的折磨。面对人生的种种不幸,懂得把伤痛藏起来,默默承担,才能疗愈自己,扭转命运。人生在世,永远不要兜售自己的苦难。</p>
    </div>
</body>
</html>

将图片设置为浮动,图片会在多列布局中和文本内容混排。浮动的图片不会影响列布局的结构,但会在列内呈现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2123748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

django学习入门系列之第十点《A 案例: 员工管理系统4》

文章目录 6 部门管理&#xff08;原始方式&#xff09;6.6 添加界面的导入&#xff08;数据库&#xff09;6.7 删除按键的应用6.8 编辑按键的应用6.81 传值的另一种方式 6.9 提交按键的应用 往期回顾 6 部门管理&#xff08;原始方式&#xff09; 6.6 添加界面的导入&#xff…

E32.【C语言 】练习:蓝桥杯题 懒羊羊字符串

1.题目 【问题描述】 “懒羊羊”字符串是一种特定类型的字符串&#xff0c;它由三个字符组成&#xff0c;具有以下特点: 1.字符串长度为 3. 2.包含两种不同的字母。 3.第二个字符和第三个字符相同 换句话说&#xff0c;“懒羊羊”字符串的形式应为 ABB&#xff0c;其中A和B是不…

【python2C】算法基础:计时比较

不断改进代码&#xff0c;是学习进步必经之路。 判断代码优劣&#xff0c;在空间允许的情况下&#xff0c;计时就是最可靠的标尺。 打表不算&#xff0c;人脑不算 1.对于答案较为固定的题&#xff0c;预先算出所有可能的答案表&#xff0c;然后对应输入查找答案&#xff0c;从…

【OpenGL 002】着色器 GLSL 语言及GLFW代码案例

文章目录 1.GLSL语言简介本节案例 code 1 2.GLSL的数据类型① 向量(Vector)- 向量重组示例- 向量重组禁忌 3.GLSL的输入输出本节案例 code 2 4.着色器示例5.Uniform本节案例 code 3 通过第一节 【OpenGL 001】Ubuntu 搭建 GLFW 环境及其相关测试 demo 想必已经搭建好了GLFW环境…

『功能项目』GameObject对象池 - 第三职业【39】

本章项目成果展示 我们打开上一篇38管理器基类的项目&#xff0c; 本章要做的事情是利用对象池制作第三个职业——魔法师 在GameRoot对象下创建空物体 重命名为PoolRoot 将GameRoot拖拽至预制体 创建脚本&#xff1a; 编写脚本&#xff1a;PoolManager.cs using UnityEngine;…

使用豆包MarsCode 编写 Node.js 全栈应用开发实践

以下是「豆包MarsCode 体验官」优秀文章&#xff0c;作者狼叔。 欢迎更多用户使用豆包MarsCode 并分享您的产品使用心得及反馈、创意项目开发等&#xff0c;【有奖征集&#xff5c;人人都是豆包MarsCode 测评官&#xff01;】活动正在火热进行中&#xff0c;欢迎大家投稿参加&a…

【Python报错已解决】 SyntaxError: invalid syntax

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一&#xff1a;修复缺失的括号或引号2.…

甘肃五仁月饼:传统风味,舌尖上的乡愁

在中秋佳节的美食画卷中&#xff0c;甘肃食家巷五仁月饼以其独特的魅力占据着重要的一席之地。甘肃五仁月饼&#xff0c;那朴实无华的外表下&#xff0c;藏着无尽的美味与情怀。它的饼皮金黄酥脆&#xff0c;散发着淡淡的麦香&#xff0c;仿佛在诉说着古老的制作工艺。轻轻咬上…

Java:动态代理

Java&#xff1a;动态代理 什么是代理 代理模式 是一种设计模式&#xff0c;它为其他对象提供了一种代理以控制对这个对象的访问。代理对象通常包装实际的目标对象&#xff0c;以提供一些附加的功能&#xff08;如延迟加载、访问控制、日志记录等&#xff09;。我们一般可以使…

C++中的内存管理和模板初识

一、内存管理 1.1内存区域的划分 1.1.1内存划分区域图示 1.1.1补&#xff1a;堆和栈都可以进行动态分配和静态分配吗&#xff1f; 不是的&#xff0c;堆无法进行静态分配&#xff0c;只能动态分配&#xff1b;栈可以利用_alloca动态分配&#xff0c;但是分配的空间不能用fre…

基于Logistic-Map混沌序列的数字信息加解密算法matlab仿真,支持对文字,灰度图,彩色图,语音进行加解密

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于Logistic-Map混沌序列的数字信息加解密算法matlab仿真,系统包含GUI操作界面&#xff0c;系统支持对文字,灰度图,彩色图,语音进行加解密。 2.测试软件版本以及…

项目运行插件-日志管理

日志管理 项目运行时模块提供了项目日志收集&#xff0c;检索和保存查询方案等功能。 体验地址&#xff1a; http://119.163.197.219:13456/view/runtime/index.html#/log/aioLogPage 沟通加QQ群 &#xff1a; 908377977 gitee 开源地址 &#xff1a; https://gitee.com/aio…

打印文档时,只有图片中的文本不清晰该如何处理

最近打印东西的时候&#xff0c;发现只有图片中的文本并不清晰&#xff0c;就想研究一下如何改善这个问题。 打印机是佳能的 MF113w&#xff0c;一个不错的多功能激光黑白打印机&#xff0c;支持无线打印。唯一问题就是每次 DHCP 分配 IP 到期后&#xff0c;这款打印机就会亮错…

AI提质增效率赋能工业产品质检,基于高精度YOLOv5全系列参数【n/s/m/l/x】模型开发构建工业生产场景下PCB电路板缺陷问题智能化分割检测识别分析系统

在PCB电路板的生产制造过程中&#xff0c;质量检测是确保产品质量、维护品牌形象的关键环节。然而&#xff0c;传统的人工检测方式依赖于经验丰富的工人师傅通过光学显微镜等设备进行逐块检查&#xff0c;这不仅劳动强度大、效率低下&#xff0c;而且受限于人的主观判断、视力疲…

《华为 eNSP 模拟器安装教程》

1.电脑安装环境要求&#xff1a; 检查电脑是否安装过 eNSP 和依赖软件&#xff0c;如果有&#xff0c;请全部卸载。 安装软件列表&#xff1a; 2.软件安装&#xff1a; 安装 WinPcap&#xff1a; 打开安装包&#xff0c;单击【Next】 单击【I Agree】 单击【Install】 单击【…

《信息系统安全》课程实验指导

第1关&#xff1a;实验一&#xff1a;古典密码算法---代换技术 任务描述 本关任务&#xff1a;了解古典密码体制技术中的代换技术&#xff0c;并编程实现代换密码的加解密功能。 注意所有明文字符为26个小写字母&#xff0c;也就是说字母表为26个小写字母。 相关知识 为了完…

1、常用的数据库、表操作

基本的建表和数据库拷贝操作。 一、数据定义语言DDL show databases; # 查看全部数据库 show create database db; # 查看数据库db create database db; # 创建数据库db drop database db; # 删除数据库db use db; # 使用数据库db基本…

1 Linux SSH安全加固_linux system-auth

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201117150524918.png?x-oss-processimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTA3OTc3,size_16,color_FFFFFF,t_70#pic_center) ![在这里插入图片描述](https://…

11、LLaMA-Factory自定义数据集微调

1、数据集定义 针对实际的微调需求&#xff0c;使用专门针对业务垂直领域的私有数据进行大模型微调才是我们需要做的。因此&#xff0c;我们需要探讨如何在LLaMA-Factory项目及上述创建的微调流程中引入自定义数据集进行微调。**对于LLaMA-Factory项目&#xff0c;目前仅支持两…

什么是 Grafana?

什么是 Grafana&#xff1f; Grafana 是一个功能强大的开源平台&#xff0c;用于创建、查看、查询和分析来自多个来源的数据。通过可视化仪表盘&#xff08;Dashboard&#xff09;&#xff0c;它能够帮助用户监控实时数据、生成历史报告&#xff0c;甚至进行预测分析。Grafana…