水平居中时,li 被切断

2023-11-24

我正在尝试布局li's using flexbox。我将它们设置为列,其中 3li's在每一列中。问题是当我想要ul居中。

我以ul using align-content: center。当我这样做并且拥有更多li's超出页面可以显示的范围(溢出),li's一开始就被切断。 (左侧的被切断,但右侧的显示正常。)

我不会有具体的数量li's,范围可以是 4 到 50。所以我无法删除align-content: center,因为当我有少量li's,(比方说4),结果不是我想要的。

我怎样才能居中ul而不让它被切断?

JSFiddle

html, body {
    margin: 0;
    height: 100%;
}
div {
    align-items: center;
    justify-content: center;
    height: 100%;
    display: flex;
    overflow: auto;
    background-color:aqua;
}
ul {
    margin-top: auto;
    margin-bottom: auto;
    flex-direction: column;
    width: 100%;
    height: 70%;
    padding: 0;
    display: inline-flex;
    flex-wrap: wrap;
    align-content: center;
}
li {
    flex-basis: calc(100% / 3 - 2px);
    /* Subtract the border */
    color: firebrick;
    border: 1px solid firebrick;
    background-color: greenYellow;
    list-style-type: none;
    width: 200px;
}
<div>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
        <li>9</li>
        <li>10</li>
        <li>11</li>
        <li>12</li>
        <li>13</li>
        <li>14</li>
        <li>15</li>
        <li>16</li>
        <li>17</li>
        <li>18</li>
        <li>19</li>
        <li>20</li>
    </ul>
</div>

如何使 ul 居中而不使其被切断?

这是一个非常好的问题,在找到实现这种行为的方法时遇到了一些困难。

我不相信你会找到一个纯粹的CSS解决方案,但是我们可以使用一些javascript.

基本上,我创建了一个附加到窗口调整大小事件的脚本,该脚本将执行以下操作:

  1. 检查包装元素内有多少个项目:#wrapper
  2. 将元素数量除以 3(因为每列中有 3 个元素)以发现需要多少列来显示项目
  3. 使用以下公式为包装元素分配宽度:列数 * 每个项目的宽度(在我们的例子中是200px)

这样做我们会强制父元素溢出,并且滚动条将具有正常行为,显示每个元素。

完整代码可在jsfiddle.

检查以下示例:

function onResize() {

  var wrapper = document.querySelector('#wrapper');

  var items = wrapper.querySelectorAll('li');

  var columns = Math.ceil(items.length / 3);

  var width = 200 * columns;

  wrapper.style.width = width > window.innerWidth ? width + 'px' : '100%';

}

onResize();

window.addEventListener('resize', onResize);
html,
body {
  height: 100%;
  text-align: center;
}
*,
*:before,
*:after {
  box-sizing: border-box;
  padding: 0;
  margin: 0;
}
#wrapper {
  height: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background-color: aqua;
}
ul {
  height: 75%;
  list-style: none;
  display: flex;
  align-content: center;
  flex-direction: column;
  flex-wrap: wrap;
}
li {
  flex-basis: calc(100% / 3 - 2px);
  color: firebrick;
  border: 1px solid firebrick;
  background-color: greenYellow;
  width: 200px;
  display: flex;
  align-items: center;
  justify-content: center;
}
<div id="wrapper">
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    <li>9</li>
  </ul>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

水平居中时,li 被切断 的相关文章

  • Chrome 不渲染
    标签,FF 渲染

    我有一个非常烦人的问题 我的网站有一个表单 可以在 Firefox 中运行 但不能在 IE 或 Chrome 中运行 它是用 WordPress 的 Gravity Forms 制作的 但这可能与该问题无关 因为另一个表单插件也出现了同样的
  • 是否可以使用 Chrome 开发者工具审核多个页面?

    我试图找出我的网站中未使用的 CSS 类 然后我发现 Chrome 开发者工具中有一个审核功能 可以标记未使用的 CSS 类 但是 它一次只能执行一页 有没有办法让它审核多个页面 以便我可以找出所有页面中未使用的 CSS 类 我知道有一个
  • 标题的固定高度和更改宽度(HTML 表格)

    我需要确保表格标题的高度是固定的 并且宽度是根据标题单元格内容进行调整的 标题文本最多显示两行 我们如何使用样式来做到这一点 另外 我想确保表行的宽度与标题行的宽度相同 即标题行决定宽度 注 目前 交易部门负责人别名 是按行排列的 它需要分
  • 我可以在一个变量中拥有多个值吗?

    正如标题 我可以在一个变量中拥有多个值吗 首先 我有这个表格
  • CSS:仅背景不透明度,而不是内部文本[重复]

    这个问题在这里已经有答案了 我有这个注册表框 我真的很喜欢背景如何变得不透明 透明为 25 85 但后来我注意到文本和表单元素也变暗了一点 所以我想知道如何做到这一点只有边框和背景而不是盒子里面的东西 regForm z index 11
  • Chrome 扩展程序未加载 EventListener

    我一直在创建一个 chrome 扩展 它将我的新标签页分成 2 个框架 这样我就可以尝试加载 2 个不同的 URL 现在我开始很简单 但我无法让它们按预期加载 这是代码 背景 html
  • 复制 Chrome 默认输入的轮廓样式

    如何设置默认 Chrome 输入的轮廓样式 焦点上为橙色 使其在每个浏览器中看起来都相同 Chrome 风格似乎是textarea focus outline rgb 229 151 0 auto 5px outline offset 2p
  • 调整大小后获取实际图像大小

    我有一个充满缩略图的页面 用 css 调整大小150x150 当我单击缩略图时 页面变暗 并且图像以其真实尺寸显示 目前 我必须手动创建一个包含所有图像的实际高度的数组 为了解决设计问题 减少画廊的手动操作 我需要在调整图像大小 CSS 后
  • 如何解决flash的zindex问题

    在网页中我需要显示div覆盖未使用的 Flash 横幅wmode transparent环境 怎么解决呢 根据我的记忆 你可以将 div 推入 也许使用Javascript 这样你就不会弄乱你的HTML iframe 是像 flash 一样
  • 如何使单词中的每个字母在悬停时发生变化

    假设我的网站上某个段落中有一个单词 IamGreat 我希望它在悬停时更改为 Good4you 但是 我不想更改整个单词 而是希望每个字母单独更改 因此 如果我将鼠标悬停在字母 I 上 它将变成字母 G 字母 r 将变成数字 4 等 这两个
  • 从提交的表单中转义字符串中的字符

    每次发布帖子时 我都会得到转义字符 gt gt gt 我有一个多步骤表单 它将数据从一种表单传输到另一种表单 我将这些值与准备好的语句一起保存在数据库中 数据库中的值当前看起来像Paul s House 用户应该可以在字符串中使用单引号和双
  • javascript获取网页中选定文本的段落

    突出显示文本后 我想获取所选文本所在的段落 var select window content document getSelection 请问有什么指点吗 这实际上很难做到 因为你必须考虑六种情况 所选内容不在一个段落内 简单 整个选择都
  • 自动溢出的容器中不会出现滚动条(IE10、Windows Phone 8)

    我有一个容器 比方说div with overflow auto 其中的元素完全按照预期滚动 但不会出现典型的触摸滚动条 我尝试设置 ms overflow style auto明确地 但没有任何改变 浏览器 IE10 设备 Windows
  • 如何使链接悬停时的背景图像模糊?

    当您用鼠标光标悬停链接时 我想让我的背景图像模糊 5 像素 有什么简单的方法可以实现这一点吗 我有点纠结于类和 id 在这里 pic background url http www metalinjection net wp content
  • 使 div 的大小与其内部图像的大小相同

    我有一个带有以下代码的div HTML div img src img logo png div CSS div imgContainer width 250px height 250px padding 13px 问题是用户可以编辑图像大
  • 使用js获取选择选项的onclick事件

    我有一个非常令人沮丧的问题 我有这个代码 它过滤掉我的结果并将它们输入到选择框中 var syn
  • 使用带有箭头的 MaterializeCSS 轮播 - 如何使用普通 javascript 进行初始化

    我正在尝试使用 MaterializeCSS 创建带有箭头的轮播 我正在尝试使用这个代码笔 https codepen io Paco Cervantes pen ZLxKpj取得有限的成功 我想使用普通的 javascript 而不是 j
  • HTML标题属性样式[重复]

    这个问题在这里已经有答案了 如何在不使用 javascript 或 CSS 的情况下更改以下标记中标题属性的样式 因为我将 HTML 插入到原本无法编辑的文档中的特定位置 span title This is information Thi
  • HTML:JavaScript:阻止表单提交并调用 Javascript 函数

    我想在按下表单中的提交按钮时进行 AJAX 调用 事实上我无法删除
  • CSS3 背景渐变未验证,有人可以告诉我为什么吗?里面的代码示例

    有人能告诉我为什么下面的 css 没有验证吗 我一直在尝试自己研究这个问题 但没有运气 我读过的所有文档都说这是在 css3 中进行渐变的正确原因 header color white font size 12px font family

随机推荐

  • 我正在尝试计算 txt 文件中的所有字母,然后按降序显示

    正如标题所说 到目前为止 这就是我的代码确实可以工作的地方 但是我无法按顺序显示信息 目前它只是随机显示信息 def frequencies filename infile open filename r wordcount content
  • 使用 matplotlib 绘制 PNG 文件时反转颜色

    I m trying to display a PNG file using matplotlib and of course python For this test I ve generated the following image
  • 使用 fetch 时文本响应为空

    以下代码 fetch http localhost 8080 root 1487171054127 k query bearer token mode no cors credentials include then function re
  • 获取 Cython 指针的值

    我正在编写一个构造 malloc 的函数unsigned char 数组 然后返回指针 在纯 Cython 或 C 中 这很容易 您所要做的就是在函数上设置返回类型 然后返回指向数组的指针 完毕 但是 我已经达到了需要将指向在 Cython
  • debugByteArray 和 copyPixelsToBuffer 不起作用。 SkImageDecoder::Factory 返回 null

    我有一个类 TouchPoint 实现了 Serialized 因为它包含 Bitmap 所以我为该类编写了 writeObject 和 readObject private void writeObject ObjectOutputStr
  • “绿色线程”和Erlang的进程有什么区别?

    在阅读了 Erlang 的轻量级进程之后 我非常确定它们是 绿色线程 直到我读到绿色线程和Erlang进程之间存在差异 但我不明白 实际差异是什么 绿色线程可以直接在它们之间共享数据内存 尽管当然需要同步 Erlang 不使用 绿色线程 而
  • 一次性计算精度、召回率和 F 分数 - python

    准确度 精确度 召回率和 f 分数是机器学习系统中系统质量的衡量标准 它取决于真 假阳性 阴性的混淆矩阵 给定一个二元分类任务 我尝试了以下方法来获得返回准确度 精确度 召回率和 f 分数的函数 gold 1 0 9 predicted 1
  • .unsubscribe 和 .take(1) 之间的区别

    我想知道 使用之间的性能是否有任何差异 take 1 and unsubscribe when unsubscribe订阅后立即使用 var observable Rx Observable interval 100 First var s
  • Express:从内容类型“application/json; charset=utf-8”中删除 charset=utf-8

    我有一个基于 NodeJS 和 Express 的应用程序 每次我试图获取响应时 我都会得到Content Type application json charset utf 8 我无法在前端解析它 因为我期待带有标头的响应Content
  • 声纳想要关闭流[重复]

    这个问题在这里已经有答案了 我有下一个代码 private Stream
  • 如何在 Spring 3.1 应用程序中声明 JSF 托管 bean?

    这是我第一次开发基于 Java EE 架构的应用程序 我正在使用 JSF 2 0 春季3 1 JPA 2 0 我想请教您一个我有点困惑的问题 我想声明我的 JSF 托管 bean 但有很多解决方案可以处理此约束 在 faces config
  • PHP(文件夹)文件按字母顺序列出?

    我不确定这有多简单 但我正在使用一个显示特定文件夹中的文件的脚本 但是我希望它们按字母顺序显示 这样做会很难吗 这是我正在使用的代码 if handle opendir mainframe gt getCfg absolute path i
  • 为什么在 dll 内不调用 threadTerminate

    我有一个问题 与正常应用程序中的相同代码相比 我的 dll 中的代码的行为不同 经过一些调试后 我发现 dll 中从未调用线程的 OnTerminate type TTest class private public procedure t
  • 将 conda 包安装到 google colab

    我尝试将 anaconda 中的软件包安装到 google 的 colab 中 但这不起作用 整件事都是巫毒魔法 以下代码位于一个单元格中 笔记本的电池 wget https repo anaconda com miniconda Mini
  • 如何在 Objective C 中调用 +class 方法而不引用该类?

    我有一系列 策略 对象 我认为将它们作为一组策略类上的类方法来实现很方便 我为此指定了一个协议 并创建了符合的类 下面仅显示一个 protocol Counter NSInteger countFor Model model end int
  • 处理 JAXB 集合

    我正在尝试使用 JAXB 解组以下 XML
  • JavaQuartz 作业持久化

    我对 Java Quartz 不太熟悉 我们只是使用了每天安排的测试作业 对于我们的 Struts2 Web 应用程序 我们希望运行一些安排在一天中不同时间的日常作业 这些作业应该处于持久状态 这样即使作业由于服务器关闭 应用程序失败而失败
  • Wordpress - 使用媒体库获取图像

    我正在创建一个插件 并且有一个管理页面 在该页面的选项中 我想添加一个按钮 允许我打开 Wordpress 媒体库并从中选择图像 之后获取所选图像的 URL 和alt属性 如果可以的话 我该如何使用 AJAX 来做到这一点 首先 您需要将
  • 查询中 Group by 的奇怪行为需要优化

    谁能帮我优化这个查询 SELECT debit side account code CODE GROUP CONCAT DISTINCT accounts name AS DebitAccount GROUP CONCAT debit si
  • 水平居中时,li 被切断

    我正在尝试布局li s using flexbox 我将它们设置为列 其中 3li s在每一列中 问题是当我想要ul居中 我以ul using align content center 当我这样做并且拥有更多li s超出页面可以显示的范围