Flexbox 使用align-items: flex-start 和align-content: center

2024-01-10

再会。

我正在尝试使用 Flex 框在横轴上包含多余空间的 Flex 容器中强制执行以下行为:

  1. 如果所有弹性项目都适合一行,那么它们应该在横轴的顶部对齐;但
  2. 一旦它们包裹起来,柔性项目应该凝结在横轴的中心。

为此,我尝试了以下标记https://jsfiddle.net/ht5bue6s/ https://jsfiddle.net/ht5bue6s/

* {
  box-sizing: border-box;
  font-size: 1.5rem;
}

html {
  background: #b3b3b3;
  padding: 5px;
}

body {
  background: #b3b3b3;
  padding: 5px;
  margin: 0;
}

.flex-container {
  height: 500px;
  background: white;
  padding: 10px;
  border: 5px solid black;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: space-evenly;
  align-items: flex-start;
  align-content: center;
}

.item-1 {
  background: #ff7300;
  color: white;
  padding: 10px;
  border: 5px solid black;
  margin: 10px;
}

.item-2 {
  background: #ff9640;
  color: white;
  padding: 10px;
  border: 5px solid black;
  margin: 10px;
}

.item-3 {
  background: #ff9640;
  color: white;
  padding: 10px;
  border: 5px solid black;
  margin: 10px;
}

.item-4 {
  background: #f5c096;
  color: white;
  padding: 10px;
  border: 5px solid black;
  margin: 10px;
}

.item-5 {
  background: #d3c0b1;
  color: white;
  padding: 10px;
  border: 5px solid black;
  margin: 10px;
}

.item-6 {
  background: #d3c0b1;
  color: white;
  padding: 10px;
  border: 5px solid black;
  margin: 10px;
}
<div class="flex-container">
  <div class="item-1">1</div>
  <div class="item-2">2</div>
  <div class="item-3">3</div>
  <div class="item-4">4</div>
  <div class="item-5">5</div>
  <div class="item-6">6</div>
</div>

正如您将看到的,弹性项目总是压缩到中心。也就是说,即使 Flex 项目不换行,也始终应用“align-content: center”。

我读过 MDN 引用,“要使对齐内容正常工作,您的 Flex 容器中需要比显示项目所需的高度更高的高度。然后它会作为一组对所有项目起作用,并且决定了该自由空间会发生什么,以及其中整组项目的对齐方式”。

这样看来,如果 Flex 容器内的横轴上有多余的空间,您就无法将align-items 与align-content 一起应用。相反,align-content 将始终覆盖align-items。

所以我的问题是:是否有任何容器或项目 CSS 属性的组合可以产生上面#1 和#2 要求中描述的行为?

谢谢。


为了获得所需的结果,您可以使用媒体查询。

要使其工作,请删除flex-wrap and align-content属性来自.flex-container元素。我们只会将这些属性添加到.flex-container浏览器窗口特定宽度的元素。

例如,以下媒体查询

@media (max-width: 450px) {
  .flex-container {
    flex-wrap: wrap;
    align-content: center;
  }
}

当浏览器窗口的宽度等于或小于时,将使 Flex 容器成为多行 Flex 容器450px。我们还添加align-content: center确保弹性线在弹性容器的中心对齐。

这确保了宽度大于450px,Flex 容器只有一个 Flex 行,并且 Flex 项目在该单个 Flex 行的开头对齐。对于宽度小于或等于450px,我们使 Flex 容器成为多行 Flex 容器,并使用以下命令将这些 Flex 线对齐在 Flex 容器的中心align-content: center.

工作演示

* {
  box-sizing: border-box;
  font-size: 1.5rem;
}

html {
  background: #b3b3b3;
  padding: 5px;
}

body {
  background: #b3b3b3;
  padding: 5px;
  margin: 0;
}

.flex-container {
  height: 500px;
  background: white;
  padding: 10px;
  border: 5px solid black;
  display: flex;
  justify-content: space-evenly;
  align-items: flex-start;
}

.flex-container div {
  color: white;
  padding: 10px;
  border: 5px solid black;
  margin: 10px;
}

.item-1 { background: #ff7300; }
.item-2 { background: #ff9640; }
.item-3 { background: #ff9640; }
.item-4 { background: #f5c096; }
.item-5 { background: #d3c0b1; }
.item-6 { background: #d3c0b1; }   

@media (max-width: 450px) {
  .flex-container {
    flex-wrap: wrap;
    align-content: center;
  }
}
<div class="flex-container">
  <div class="item-1">1</div>
  <div class="item-2">2</div>
  <div class="item-3">3</div>
  <div class="item-4">4</div>
  <div class="item-5">5</div>
  <div class="item-6">6</div>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flexbox 使用align-items: flex-start 和align-content: center 的相关文章

  • 如何使用 tablesorter Stickyheaders 小部件 - 不起作用?

    我在尝试将 StickyHeaders 小部件实现为 tablesorter 插件的一部分时遇到问题 我已按照通过 Stackoverflow 和其他网站找到的教程中的说明进行操作 但似乎没有任何效果 这是我的header code
  • 如何在加载ajax内容和javascript时加载gif图像[重复]

    这个问题在这里已经有答案了 我一直在尝试加载 gif 图像 直到 ajax 加载数据并显示它 但我对此感到安慰 我希望你能帮助我 这是我的高级搜索代码 现在我想为此添加加载 gif ajax type POST url base rul s
  • Bootstrap 4.1 中悬停时的下拉菜单

    我有一个网站 我在其中创建了下拉菜单引导程序4 1 https getbootstrap com docs 4 1 dist css bootstrap min css 此时 下拉菜单正在点击 我用来创建下拉列表的 HTML 代码是 div
  • 在 CSS 选择器中转义双引号

    我有一个 html 标签 div style background image url div images test jpg gt 我想使用 CSS 选择器来定位这个元素 我尝试了下面的选择器 但它抛出错误 document queryS
  • 在使用 jQuery 拖动时向元素添加 CSS 类

    是否可以在元素被拖动到特定区域时向其添加 CSS 类 并在元素被删除后替换该类 我并不是到处寻找这个功能 而是只在特定区域寻找这个功能 是的 这当然有可能 jQuery UI 提供了一些方便的选项和事件来执行此操作 对于初学者来说 可拖动元
  • 如何创建一个对角分割的页面,两半是可点击的链接

    我需要创建一个对角分割的登陆页面 像这样的东西 我需要页面的两个区域都是可单击的 并且在最好的情况下 所有内容都应该动态地适应用户的显示器 以便显示器始终分成两半 我该怎么做 我应该使用画布吗 欢迎任何建议 以及如果我使用画布可能的后备方案
  • 仅使用 HTML 正确填充电子邮件

    对于作业 我需要放置一个form在我的网页中 并让表单填充一封电子邮件供用户发送 我在四处搜寻后写下了这个
  • 位置:粘性滚动仍在移动的元素

    我需要显示类似于表格的内容 其中第一列可以水平滚动 该列会粘滞一段时间 但是当您滚动太多时 它会开始与其余部分一起移动 wrapper width 250px overflow auto display flex flex directio
  • 如何强制网络浏览器不缓存图像

    背景 我正在为两个公益网站编写并使用一个非常简单的基于 CGI Perl 的内容管理工具 它为网站管理员提供了事件的 HTML 表单 他们可以在其中填写字段 日期 地点 标题 描述 链接等 并保存 在该表格上 我允许管理员上传与该活动相关的
  • 方向改变后的javascript最大视口高度Android和iOS

    目标 查找设备的最大视口高度 包括设备的空间address bar这样我们就可以动态调整 min body 的大小并将内容向上推 问题 移动浏览器处理方向状态的方式不同 方向变化时更新 DOM 属性的方式也不同 使用 JavaScript
  • 提交表单时显示警告框

    所以我有这两页 pageOne php and pageTwo php 表格在pageOne php
  • MP4 视频无法在 Firefox 上播放

    我有一个小型家庭服务器 可以托管多个项目 其中包括一些 MP4 示例视频 我一直在使用一个简单的
  • 我什么时候应该使用内联和外部 Javascript?

    我想知道什么时候应该包含外部脚本或将它们与 html 代码内联编写 就性能和易于维护而言 这方面的一般做法是什么 真实场景 我有几个需要客户端表单验证的 html 页面 为此 我使用了一个包含在所有这些页面上的 jQuery 插件 但问题是
  • 标记内的值发生变化时调用函数

    JavaScript 有没有什么方法可以在段落标记的值更改时调用函数 概述 HTML p 00 00 p
  • CSS 属性名称中的“font-”与“text-”

    CSS 属性名称中使用的术语 文本 和 字体 有什么区别 它们的含义是否相同 或者以以下开头的 CSS 属性名称之间是否存在语义差异font 和一个开头text 例如 为什么我们有这些 CSS 属性 font size 34px text
  • 'DOMException:使用'option:selected'选择器时无法在'Element'上执行'querySelectorAll'

    我正在运行一个页面 该页面在以下行中引发错误 var label select find option selected html select find option first html 为了完整起见 这里是完整的 jQuery 函数
  • 单击时突出显示文本(javascript jquery html)

    当您在所有浏览器中双击某个单词时 它们会自动突出显示单击下的单词 但是否有可能找到一种方法exact单击一下就会发生同样的事情吗 我想这涉及到的事情可能是 TextRange 的东西 对所有段落 或整个正文或 div 的 onclick 做
  • 按钮导致页面重新加载

    我在我的页面上使用 html 和 jquery 在我的 html 中 我有一个按钮 单击该按钮将触发一个功能 当页面加载时 我调用文档准备中的主函数 这是我的代码 div div
  • onClick 事件适用于触摸屏设备上的触摸吗?

    我用过onclick我的网站上的活动 但是 当我在谷歌浏览器的开发人员模式移动视图中打开它时 触摸使用鼠标单击的元素没有任何反应 所以我的问题是 我还必须添加吗ontouch事件连同onclick事件或 onClick 事件适用于所有触摸屏
  • 具有相等宽度和高度 TD 的响应式表格

    如何创建每个单元格 TD 具有相同宽度和高度的响应式 HTML 表格 因此 当我调整浏览器窗口的大小或调整表格容器的大小时 表格将调整大小 但每个单元格将具有相同的高度和宽度 基金会不关心这个 当我用固定宽度和高度 以像素为单位 初始化 T

随机推荐

  • 注释 @EnableSpringDataWebSupport 不适用于 WebMvcConfigurationSupport?

    我已经使用 WebMvcConfigurerAdapter 一段时间了 由于我无法使用 getInterceptors 方法获取所有已注册的拦截器 因此我已切换到 WebMvcConfigurationSupport 它有很多默认注册的 S
  • SSL 安全 SaaS 应用程序的 URL 设计

    我正在使用 ASP NET MVC 平台开发一个应用程序 它将作为一项服务通过网络公开 SaaS http en wikipedia org wiki Software as a Service模型 我正在尝试确定为每个用户帐户划分 URL
  • 将静态库添加到同一解决方案中的项目 (Visual Studio 2012)

    我正在尝试创建一个将在项目中使用的静态库 该库编译良好并为其创建 lib 文件 为了测试我的代码 我向同一解决方案添加了另一个项目 当我尝试构建测试项目时 出现以下错误 错误 LNK1120 4 个未解析的外部 错误 LNK2019 函数
  • Mysql 慢查询日志正在记录更快的查询

    我在数据库服务器上设置了mysql慢查询日志 并将长查询时间设置为5 刚刚检查了日志及其日志查询 只需几毫秒 有人知道为什么会这样吗 这是一些日志 最后一个查询并不是最优化的 它说它检查了 450000 行 所以我在日志中看到它不会感到惊讶
  • 为 Jboss 启用 gzip 压缩

    Jboss 5 1 0 的 gzip 压缩是如何启用的 在 tomcat http 连接器内对吗 我不记得这个文件存储在哪里 server xml 编辑 jboss server default deploy jbossweb sar se
  • Go Flush() 不起作用

    请检查一下这个要点并告诉我 出了什么问题 为什么我看不到我的消息 要旨 https gist github com cnaize 895f61b762a9f5ee074c https gist github com cnaize 895f6
  • 如何在 Android 中使用 Intent 拨打电话?

    我正在使用以下代码在 Android 中拨打电话 但它给了我安全异常 请帮助 posted by 111 333 222 4 String uri tel posted by trim Intent intent new Intent In
  • 如何在 SQL 中找到连续的活跃周?

    我想做的是找到某人在周日活跃的连续周数并为其分配一个值 他们每天必须参加至少 2 场比赛才能算作本周的活跃比赛 如果它们连续 2 周活跃 我想指定值为 100 连续 3 周指定为 200 连续 4 周指定为 300 并持续最多连续 9 周
  • JUunit 测试用例中内部图形尚未初始化

    我正在使用 JavaFx 制作一个轻量级绘画应用程序 我的一些问题LayerController类及其方法addLayer所以我认为编写一些 JUnit 测试用例来检查我的方法的正确性是一个好主意 简而言之 我正在画一个Canvas使用它的
  • 如何创建具有格式的字符串?

    我需要创建一个String具有可以转换的格式Int Int64 Double等输入String 使用 Objective C 我可以通过以下方式做到这一点 NSString str NSString stringWithFormat d f
  • MySQL 类似断言的约束

    我是MySQL新手 我刚刚发现它不支持断言 我得到了这张表 CREATE TABLE guest ssn varchar 16 NOT NULL name varchar 200 NOT NULL surname varchar 200 N
  • UIImage 上的圆角

    我正在尝试使用圆角在 iPhone 上绘制图像 就像联系人应用程序中的联系人图像一样 我的代码通常可以工作 但它偶尔会在 UIImage 绘图例程中崩溃EXEC BAD ACCESS KERN INVALID ADDRESS 我认为这可能与
  • 为什么新的 AKSequencer 不发出任何声音?

    我有一个相当复杂的应用程序 到目前为止一直在使用 AKAppleSequencer 但由于该定序器时不时出现一些奇怪的行为和错误 我一直希望迁移到较新的 AKSequencer 不幸的是 新的音序器似乎没有在 Playgrounds 或太多
  • On Key Down 限制用户输入一些特殊字符

    我想限制用户在工具栏搜索中不允许他 她使用一些特殊字符 例如 gt tblFundComp bind keydown function e if e keyCode gt 48 e keyCode lt 57 return false el
  • Spring Security 配置 anyRequest().authenticated() 未按预期工作

    我对spring security配置的理解http anyRequest authenticated 是任何请求都必须经过身份验证 否则我的 Spring 应用程序将返回 401 响应 不幸的是 我的 spring 应用程序不会以这种方式
  • 如何解析命令行参数?

    我想解析 perl 脚本中的参数列表 例如我有这种情况 script pl h 127 0 0 1 u user p pass arg1 arg2 arg3 我该如何解析数组中不是选项的参数列表以及标量值中的选项参数 Thanks 好吧 如
  • 升级 3.0.3 -> 3.2.2 后,NServiceBus 端点寻找 RavenDB 超时

    使用 NuGet 我将项目中的所有 NServiceBus 引用从 3 0 3 升级到 3 2 2 对于此解决方案中的 4 个服务 我还为它们提供了对 NuGet 中的 NServiceBus Host 的引用 我将二进制文件部署到测试环境
  • formik中的submit Form、handleSubmit、onSubmit有什么区别?

    福米克医生说 https jaredpalmer com formik docs guides form submission https jaredpalmer com formik docs guides form submission
  • 从 Roslyn 方法调用中的相应参数获取方法参数的名称

    我想知道是否有一些现有的逻辑可以通过查看该特定方法 构造函数的调用来获取有关其包含的方法 构造函数签名中的参数定义的名称 或任何其他相关信息 基本上 我只是希望能够获得一个变量的默认名称 该名称将作为参数传递给调用 因此 如果一个方法定义如
  • Flexbox 使用align-items: flex-start 和align-content: center

    再会 我正在尝试使用 Flex 框在横轴上包含多余空间的 Flex 容器中强制执行以下行为 如果所有弹性项目都适合一行 那么它们应该在横轴的顶部对齐 但 一旦它们包裹起来 柔性项目应该凝结在横轴的中心 为此 我尝试了以下标记https js