- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我似乎在观察 flexbox 的一些令人困惑的行为,特别是在尝试使用 align-self: baseline
时。基本问题是它根本行不通;以下片段演示了该问题:
.flex-form {
display: flex;
}
.flex-form label {
align-self: baseline;
}
input[type=text] {
border: 1px solid black;
font-size: 16px;
margin: 0 10px;
padding: 5px;
}
button {
background-color: white;
border: 1px solid black;
margin: 0;
}
<form class="flex-form">
<label>Label: </label>
<input type="text" placeholder=" " />
<button type="submit">Submit</button>
</form>
这是输出的截图:
如您所见,标签的基线未与其他表单元素对齐,尽管设置了align-self: baseline
。但是,如果我在父容器上使用 align-items: baseline
,我会得到不同的结果:
.flex-form {
display: flex;
align-items: baseline;
}
input[type=text] {
border: 1px solid black;
font-size: 16px;
margin: 0 10px;
padding: 5px;
}
button {
align-self: stretch;
background-color: white;
border: 1px solid black;
margin: 0;
}
<form class="flex-form">
<label>Label: </label>
<input type="text" placeholder=" " />
<button type="submit">Submit</button>
</form>
根据规范,这是正确的行为,还是一个错误?如果是这样,为什么?有解决方法吗?作为引用,我在 macOS 10.11.6 上的 Chrome 54、Safari 9.1.2 和 Firefox 50 上进行了测试,它们似乎都显示出相同的结果。
最佳答案
如果您想要所有元素的基线对齐,请应用 align-self: baseline
到每个,或者更简单地说,设置 align-items: baseline
在容器上。
flex 容器的初始设置是 align-items: stretch
.
这意味着所有 flex 元素都会扩展容器的整个横轴长度。
这就是您的布局中发生的事情。 EXCEPT,您已覆盖 align-items: stretch
在一个 flex 元素( label
)上,通过应用 align-self: baseline
.
当其他 flex 元素拉伸(stretch)时,标签有一个 baseline
说明——但没有引用点。
来自规范:
8.3. Cross-axis Alignment: the
align-items
andalign-self
properties
baseline
If the flex item’s inline axis is the same as the cross axis, this value is identical to
flex-start
.Otherwise, it participates in baseline alignment: all participating flex items on the line are aligned such that their baselines align, and the item with the largest distance between its baseline and its cross-start margin edge is placed flush against the cross-start edge of the line.
好吧,让我们分解一下:
第一行不适用。在这种情况下, flex 元素的内联轴与主轴(水平)相同,而不是交叉轴(垂直),所以baseline
没有解析为 flex-start
.
“...该行中所有参与的 flex 元素都对齐,以便它们的基线对齐...” 好吧,只有一个元素具有基线对齐。没有其他基准可供引用。显然,浏览器回退到 flex-start
在这种情况下(但我还没有看到这种行为的官方引用)。
规范语言的其余部分与这个问题无关,但在这篇相关文章中有详细介绍: What's the difference between flex-start and baseline?
关于html - Flexbox align-items : baseline works, 但 align-self : baseline doesn't. 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40727657/
我正在尝试将我的 xcode 应用程序存档到 Itunes,但我得到了 following errors : 1.) “配置文件不支持推送通知。” 2.) “配置文件不包含 aps-environme
我正在尝试为我们的组织构建一个 Web 应用程序,它将使用我们的 O365 进行身份验证。在尝试使用管理员帐户连接到域时,我遇到了这个错误,其中提到 admin..onmicrosoft.com(全局
当我尝试构建 MUAI 项目时,它给出错误“该项目不知道如何运行配置文件 sample.WinUI”。项目已构建但无法运行。我使用的是 Visual Studio 2022 Preview(17.0
当某项包含在列表中时,有一个查询要搜索,但当某项不在列表中时,则没有查询。 此查询查找在给定列表 cdiffnums 中没有 ContactNum 的 customer 对象。我该怎么做才能仅返回此列
我们有一个黑盒第三方 Java 程序,可以从某个位置获取输入文件并制作 PDF。每次输入时,它都会将 list 文件放在同一位置,这需要我们以受控方式提供文件。 list (或 .xen/.que)是
我看到这个has选择器,hasnt 选择器在哪里?我想查找不包含图像的表格。 最佳答案 类似$("table:not(:has(img))")? 关于jQuery: "Doesn' t 有“选择器?,
为什么?这让我发疯??? $(document).ready(function () { $('#slides1').bxSlider({ prev_
我是 kubernetes 的新手。 我无法使用 kubectl 进行部署,但我可以在 kubernetes 仪表板上看到所有部署。我该如何解决这个问题? user@master:~$ kubectl
这个问题已经有答案了: What do querySelectorAll and getElementsBy* methods return? (12 个回答) 已关闭 6 年前。 HTML JS
我有两个数组,一个包含字符串值,另一个包含整数值,尽管这可能很愚蠢,但我陷入了困境,我需要一点帮助,我想遍历两者,如果 arr1 包含 arr2 中不存在的项目,它将被推送到 newArray 这是我
我一直在尝试为我的网站安装一个 PHP 脚本,设置所有内容,通过脚本附带的 phpMyAdmin 导入 SQL 文件,但我面对的是一个空白页面,错误如下所示: File /home/user/publ
我正在努力将站点的服务器从 PHP 5.2.17 升级到 5.5,以使其在未来的升级中保持新鲜,并安装其他需要 PHP 5.4+ 的软件。 数据库有一个我正在测试的表,其中有许多列在初始 INSERT
我一直收到这个错误: Object doesn't support this property or method 每当我在 IE7 和 IE8 中运行我的代码时。这是它停止的代码: _renderU
我想使用正则表达式排除某些单词。 输入文本: aaa1234 cc bbb1234 c1234 cc dd aacc cccc ccadf cc 输出文本: aaa1234 bbb1234 c1234
我有一个名为 adjust_status 的存储函数和一个包含 status 列的表 users。 select adjust_status(status) as adjusted_status
我有一个表,其中有一列由插入前触发器填充,该列设置为 NOT NULL 并且没有DEFAULT VALUE。 当我执行 INSERT TABLE 而不传递此列时,我收到错误:1364 - Field
这个问题已经有答案了: Modify the value of each textfield based on original value using jQuery (3 个回答) 已关闭去年。 使
我正在阅读 this , 它说 @keyframes rules don't cascade, so animations never derive keyframes from more than
编辑:我解决了问题,请参阅答案中的链接。 我正在使用 XMLHttpRequest AJAX API 将来自不同网站的数据发送到我们在 PythonAnywhere 中的服务器。奇怪的事情发生了:根据
我已经阅读了 Linux 调用 dlopen() 和 dlsym() 的文档,它们分别打开一个动态库并在库中加载一个符号。 这些调用似乎等同于 Windows 的 LoadLibrary() 和 Ge
我是一名优秀的程序员,十分优秀!