如何防止元素内的分栏?

2024-01-01

考虑以下 HTML:

<div class='x'>
    <ul>
        <li>Number one</li>
        <li>Number two</li>
        <li>Number three</li>
        <li>Number four is a bit longer</li>
        <li>Number five</li>
    </ul>
</div>

以及以下 CSS:

.x {
    -moz-column-count: 3;
    column-count: 3;
    width: 30em;
}

就目前情况而言,Firefox 目前的渲染方式类似于以下内容:

• Number one    • Number three          bit longer
• Number two    • Number four is a    • Number five

请注意,第四个项目分为第二列和第三列。我该如何防止这种情况发生?

所需的渲染可能看起来更像是:

• Number one    • Number four is a
• Number two      bit longer
• Number three  • Number five

or

• Number one    • Number three        • Number five
• Number two    • Number four is a
                  bit longer

Edit:指定宽度只是为了演示不需要的渲染。在实际情况下,当然没有固定的宽度。


正确的方法是使用break-insideCSS 属性 https://www.w3.org/TR/css-break-3/#break-within:

.x li {
    break-inside: avoid-column;
}

不幸的是,截至 2021 年 10 月,Firefox 仍然不支持此功能 https://caniuse.com/mdn-css_properties_break-inside_multicol_context_column but 所有其他主要浏览器都支持它 https://developer.mozilla.org/en-US/docs/Web/CSS/break-inside。在 Chrome 中,我可以使用上面的代码,但我无法在 Firefox 上使用任何东西(请参阅错误 549114 https://bugzilla.mozilla.org/show_bug.cgi?id=549114).

如有必要,您可以为 Firefox 采取的解决方法是将不间断的内容包装在表格中,但如果您可以避免的话,这将是一个非常非常糟糕的解决方案。

UPDATE

根据上述错误报告,Firefox 20+ 支持page-break-inside: avoid https://developer.mozilla.org/en-US/docs/Web/CSS/page-break-inside作为避免元素内部分栏的机制,但下面的代码片段表明它仍然不适用于列表:

.x {
    column-count: 3;
    width: 30em;
}

.x ul {
    margin: 0;
}

.x li {
    -webkit-column-break-inside: avoid;
    -moz-column-break-inside:avoid;
    -moz-page-break-inside:avoid;
    page-break-inside: avoid;
    break-inside: avoid-column;
}
<div class='x'>
    <ul>
        <li>Number one, one, one, one, one</li>
        <li>Number two, two, two, two, two, two, two, two, two, two, two, two</li>
        <li>Number three</li>
    </ul>
</div>

正如其他人提到的,你可以这样做overflow: hidden or display: inline-block但这会删除原始问题中显示的项目符号。您的解决方案将根据您的目标而有所不同。

UPDATE 2由于 Firefox 确实可以防止中断display:table and display:inline-block一个可靠但非语义的解决方案是将每个列表项包装在其自己的列表中并在那里应用样式规则:

.x {
    -moz-column-count: 3;
    -webkit-column-count: 3;
    column-count: 3;
    width: 30em;
}

.x ul {
    margin: 0;
    page-break-inside: avoid;           /* Theoretically FF 20+ */
    break-inside: avoid-column;         /* Chrome, Safari, IE 11 */
    display:table;                      /* Actually FF 20+ */
}
<div class='x'>
    <ul>
        <li>Number one, one, one, one, one</li>
    </ul>
    <ul>
        <li>Number two, two, two, two, two, two, two, two, two, two, two, two</li>
    </ul>
    <ul>
        <li>Number three</li>
    </ul>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止元素内的分栏? 的相关文章

  • 联系表 7 中的占位符 - Wordpress

    我正在为我的客户制作一个网站 但遇到了问题 我使用Contact Form 7在wordpress中制作了一个联系表单 这个插件确实很容易使用 但是当我想使用插件的占位符属性时 它在加载页面时没有显示占位符 这就是我在联系表 7 中设置占位
  • 以 /* 开始初始注释的目的!在 JavaScript 和 CSS 文件中

    我注意到 JavaScript 或 CSS 文件中的初始注释有时以 感叹号的目的是什么 例如 jQuery https en wikipedia org wiki JQuery jQuery v1 7 1 jquery com jquery
  • SVG 内部跨度与文本不在同一行

    我在一个跨度内有一个 SVG 文件 同时包含文本 文本和 SVG 的高度相同 但是 SVG 与文本不在同一行 相关jsfiddle https jsfiddle net tcrnjd53 https jsfiddle net tcrnjd5
  • 您可以使用 CSS 或 JavaScript 创建渐变为不透明的渐变吗?

    WebKit 引入了创建 CSS 渐变的功能 例如 使用以下代码 webkit gradient linear left top left bottom from fff to 000 但是 是否可以使用 CSS 实现不透明度渐变 我希望渐
  • SVG 中虚线的悬停事件

    带有线 或路径 的 SVG 使用stroke dasharray当用户将鼠标悬停在虚线的实心部分上时 似乎只会触发 CSS 和 JS 悬停事件 https codepen io anon pen YeXoZy https codepen i
  • 导航栏是垂直的而不是水平的

    div div
  • 超大图像缩小后变得模糊

    这是我第一次尝试响应式设计 所以如果这是一个愚蠢的简单问题 请原谅 我创建了一个图像并将其最大宽度设置为不大于图像的实际宽度 因为我知道放大图像会导致模糊不清 我有点困惑的是 当我缩小窗口并且图像开始缩小时 它也变得模糊 这是正确的行为吗
  • Bootstrap 使用 SASS 和 fontawesome 图标分隔符修改面包屑

    所以我正在尝试更改默认值breadcrumb与 SASS 的风格 我已经按照官方 Bootstrap 4 beta 3 文档中提到的方式设置了所有内容 我更改了以下内容custom scss breadcrumb divider f105
  • 具有列顺序的响应式多列列表

    我正在尝试创建一个有序的多列列表 但正在努力解决 CSS 网格布局规则 期望的结果应该是响应式的 在小屏幕上有 2 个网格列 在较大的屏幕上最多有 4 个网格列 同时保持列顺序 而不是像这样排序 1 2 3 4 5 6 7 8 9 10 1
  • rvest - 在 1 个标签中抓取 2 个类

    我是新来的 如何提取标签中具有 2 个类名或仅 1 个类名的元素 这是我的代码和问题 doc lt paste span class a1 b1 text1 span span class b1 text2 span library rve
  • Facebook 分享不显示来自开放图元标签的图像

    我正在尝试将 Facebook 共享按钮集成到我雇主的网站 标题 网址 描述 简介均显示正确 但未附加任何图像 当共享对话框打开时 图像容器会闪烁 然后消失 就好像 facebook 正在尝试处理图像但失败一样 我正在使用 og image
  • 下拉菜单将导航栏向下推。如何避免呢?

    我是引导程序和网络开发的新手 我想构建一个具有两个导航栏的网页 并且根据屏幕尺寸 仅显示一个导航栏 对于屏幕尺寸 gt 768px 一切工作正常 至少看起来 对于较低的分辨率 下拉菜单将导航栏向下推到内容上方 如何避免这种情况 任何形式的帮
  • div 元素中的文本在 Firefox 中位于水平对齐的 span 元素之上

    我正在编写一个 Web 应用程序 其中支持票证显示为左侧的票证 ID 作为静态文本 其余字段 描述 严重性 持续时间 状态 报告者 在右侧显示为固定文本中的滚动文本 大小视口 我从一个 span 包含票证 ID 和视口 div 包含第二个
  • 两列宽度可变且它们之间的间隙固定

    我需要动态设置两列的样式 它们各自的宽度应为 50 但它们之间的固定间隙为 10px 当我折叠菜单时 列应加宽至可用空间 并且间隙应保持 10 像素 因此 列不能采用固定宽度 我试过这个 container background red w
  • 文本溢出上的点样式:省略号

    是否可以对点进行样式设置text overflow ellipsis 一个例子是将省略号加粗 如 Lorem Ips 灵感来自这个答案 https stackoverflow com a 21861334 3244925 这是一种设置省略号
  • 辅助功能:在密码输入中显示/隐藏密码按钮

    密码输入具有显示 隐藏按钮是很常见的 但我在网上发现很少有关于与其相关的可访问性问题的内容 我是否应该将任何类型的 ARIA 属性附加到按钮或密码输入 是一个复选框还是一个触发JS的按钮也能达到很好的效果 不知道我应该注意什么 作为一个不太
  • 淡出图像上的文字

    我知道如何使用 CSS 透明渐变淡出纯色背景上的文本 但是如何才能淡出图像背景上的文本呢 这是我想要的一个例子 注意 我需要像图像一样的静态效果 而不是动态过渡 CSS mask image可能是您正在寻找的 div background
  • Python Flask 不更新图像[重复]

    这个问题在这里已经有答案了 这里有一些关于图像的 Flask 问题 但没有一个能解决我的问题 我有一个应用程序可以创建图像 保存它 然后显示它 一次 它应该多次执行此操作 每次更改图像时 它应该加载新图像 它不是 它只显示与其显示的文件名关
  • localhost/test.php 不返回任何内容

    我正在遵循教程构建一个网络应用程序 我创建了一个简单的test php网络空间中的文件 var www html 问题是当我输入localhost test php在浏览器地址窗口中 它返回一个空页面 我试过localhost php in
  • 删除已从另一个下拉菜单中选择的下拉值

    我在网上搜索了一段时间 但仍然找不到答案 我的网站上有三个下拉菜单 我使用它们来接受用户首选项 以便用户可以控制结果的输出 所以我想知道如果在其中一个下拉列表中选择了该值 是否可以从其他两个下拉列表中取出该值 例如 如果用户在第一个电影中选

随机推荐

  • 如何创建使用单独进程的 Android Activity 和 Service

    我有一个 Android 应用程序 其中包含一个活动和一个服务 目前它们都存在于同一进程中并使用相同的堆 但我希望必须为服务分离进程 堆 IE 我希望服务完全独立于活动 这样如果活动崩溃就不会影响服务 然而 我确实希望它们可以作为单个应用程
  • C语言中如何连接两个字符串?

    如何添加两个字符串 I tried name derp herp 但我得到一个错误 表达式必须具有整型或枚举类型 C 不支持其他一些语言所具有的字符串 C中的字符串只是一个指向数组的指针char由第一个空字符终止 C中没有字符串连接运算符
  • 以太坊 Solidity 中的划分

    我正在创建一个发行代币的合约 我希望持有代币的账户能够检查他们拥有的所有代币所占的百分比 我知道以太坊还没有实现浮点数 我应该怎么办 在客户端而不是在 Solidity 中执行该计算可能是最好的 最低的 Gas 成本并且实施起来很简单 如果
  • 无法将 ndarray 转换为 Tensor 或 TensorFlow 模型中出现运算错误

    我正在 TensorFlow 中实现 Wasserstein DCGAN 运行此行时会发生错误 train image sess run image batch 处理这个异常会抛出另一个异常 Fetch argument array 0 0
  • 用自身初始化 C++ const 变量

    刚才我遇到了以下类型的错误 include
  • BeagleBone Black 无法识别 USB 蓝牙适配器

    我正在尝试弄清楚如何让 USB 蓝牙适配器与我的 BeagleBone Black 配合使用 我尝试了一些不同的方法但没有成功 但看到其他人的帖子似乎取得了一些成功 我已经尝试过此处记录的过程 http www michaelhleonar
  • JMS:我们可以在 OnMessage() 中从队列中获取多条消息而不提交或回滚吗

    我正在使用 JMS 客户端 它从远程服务器接收 JMS 消息 我正在客户端的 onMessage 方法中监听 JMS 消息 我面临的问题是 即使我定期在客户端消费消息 消息也会在服务器端累积 我根据在客户端进行的处理发送 rollback
  • /usr/bin/ld:搜索 foo 时跳过不兼容的 foo.so

    我使用的是 Ubuntu 13 10 64 位 在编译 vlfeat 库的 python 包装器时遇到以下错误 g o vlfeat so vl aib o vl generic o vl hikmeans o vl ikmeans o v
  • PHP 套接字与流

    我认为 php 套接字和 php 流是相互重叠的 我已经成功地使用套接字或流制作了一个 CLI PHP 聊天客户端和一个服务器 这里有一些说明性的代码行 使用套接字 main socket socket create AF INET SOC
  • PowerShell 通用集合

    我一直在 PowerShell 中推进 NET 框架 但遇到了一些我不明白的问题 这工作正常 foo New Object System Collections Generic Dictionary 2 System String Syst
  • set_form_data POST 中的转义参数

    这是最奇怪的事情 当我添加 in set form data value被解释为value 在服务器端 当我删除 dontescape 的值被解释为file 3a 2f 2f 2fpath 2fto 到底发生了什么 我不希望任何东西被转义
  • Bender.js:“bender server run”命令打开目录中的bender.js配置文件,而不是启动bender.js服务器

    我是bender js 的新手 我正在尝试运行示例项目 https github com benderjs benderjs example project https github com benderjs benderjs exampl
  • 平衡数组子区间中元素数量的算法?

    假设您有一个包含 4 种不同类型元素的数组 1 1 2 3 1 2 2 3 3 4 4 1 我想找到导致每个元素数量相等且元素总数最大的最长子区间 在这种情况下 它将是 1 1 2 3 1 2 2 3 3 因为这会导致 3 个二 3 个三和
  • 打印机通讯捕获

    如果我需要将其发布到其他地方 请告诉我 我们有一些正在重写的旧软件 它使用专有打印机的打印机驱动程序 我需要重写软件绕过打印驱动程序并直接进入打印机 我确实有打印机通信的规格 这很好 但我想做的是监视与打印机的通信以查看其内容 来自我重写的
  • 迭代强类型泛型 List 的最佳方法是什么?

    在 C NET 和 VB NET 中迭代强类型泛型列表的最佳方法是什么 For C foreach ObjectType objectItem in objectTypeList do some stuff VB NET 的答案来自紫蚂蚁
  • 便携式WAMP包?

    无论如何 我可以在 Windows 7 计算机上的 USB 上使用 PHP mySQL apache phpmyadmin 吗 询问的原因是我没有足够的权限在计算机上安装像 XAMPP 这样的软件包 并且我想测试一些 php 代码文件 谢谢
  • 使用网络摄像头跟踪手势

    我想开发一个程序 使用网络摄像头跟踪四种颜色 并将其放在我双手的食指和拇指上 根据我手的手势 计算机将解释这些手势并执行命令 例如 如果我打开一个网站 我所要做的就是用手指捏一下 网页就会缩放 我希望获得 stackoverflow 社区的
  • 如何根据对象以角度选择表格行?

    大家好 我有一个场景 我真的很困惑如何弄清楚 场景是我有 1 垫料台 即角料台 2 以及一个详细信息视图 根据表中特定行的单击显示详细信息 3 对象列表作为数据源 我在行的单击事件上传递对象 并将对象传递到详细信息视图 并且现在显示该特定行
  • iOS 错误“嵌入式二进制文件未使用与父应用程序相同的证书进行签名”

    这是我在 IOS 应用程序开发中的第一步 我面临着一些我无法解决的问题 error Embedded binary is not signed with the same certificate as the parent app Veri
  • 如何防止元素内的分栏?

    考虑以下 HTML div class x ul li Number one li li Number two li li Number three li li Number four is a bit longer li li Numbe