css - 删除 display:flex 会在链接周围添加空格。为什么?
问题描述
我创建了一个 html 错误页面。它有 2 行显示错误。第二行有链接到主页。为了将 2 条线保持在中心,我创建了一个顶层css-grid
并将网格的每一行设为 a flex
。我注意到,如果我display:flex
用于第二行,则here
链接周围没有任何空间,但如果我删除display:flex
,空间会被添加,即 html 会从 更改Clickhereto
为Click here to
。小提琴位于https://jsfiddle.net/manuchadha/qL6pz0nd/
flex
如果我删除属性,为什么会添加空格?
代码
html
<div id="invalid-page-grid-container">
<h1 id="invalid-page-h1">Oops!</h1>
<h6 id="invalid-page-para">The Page you are looking for does not exist! Click <a [routerLink]="homepageRouterLink"> here </a> to go back to home page of the application !</h6>
</div>
css
#invalid-page-grid-container{
display:grid;
justify-content:center;
}
#invalid-page-h1{
display:flex;
justify-content:center;
grid-row: 1/2;
}
#invalid-page-para{
/*display:flex;*//*UNCOMMENT THIS AND YOU'LL SEE SPACE GETTING ADDED AROUND <a> of the html*/
justify-content:center;
grid-row: 2/3;
}
解决方案
inline
这是因为 flexbox 删除了orinline-block
元素之间的默认空白。
这是一个没有 flexbox 的代码,其中我们有空格:
.box {
font-size:30px;
}
<div class="box">
<a>click</a>
<a>here</a>
</div>
我们可以通过将其从标记中删除或使用任何常用方式来删除此空白:
.box {
font-size:30px;
}
<div class="box">
<a>click</a><a>here</a>
</div>
或者通过使 div 成为 flexbox 容器:
.box {
display:flex;
font-size:30px;
}
<div class="box">
<a>click</a>
<a>here</a>
</div>
如果我们检查规范:
flex 容器的每个流入子项都成为一个 flex 项,并且每个连续的子文本运行序列都包装在一个匿名块容器 flex 项中。但是,如果整个子 文本运行序列仅包含空格(即可能受 white-space 属性影响的字符),则它不会被渲染(就像它的文本节点是 display:none 一样)。
所以在我们的代码中,我们有两个子项和一个未渲染的空白序列。
推荐阅读
- excel - 使用 VBA 插入公式
- python - OperatorNotAllowedInGraphError:不允许使用 `tf.Tensor` 作为 Python `bool`:(tf Cycle GAN 中的错误)
- python - 通过 python throwing [IBM] [CLI Driver] SQL1598N 从 docker 连接 IBM DB2
- c++ - 并行类层次结构 c++ 以抽象类结束
- firefox - 内容安全策略 (CSP) 在 Firefox 中阻止有效随机数
- firebase - 如何隐藏多个收件人电子邮件地址 Firebase 扩展触发电子邮件
- php - 匹配PHP中两个数组的索引以配对数据
- scala - 使用折叠的 Akka 流程未完成
- javascript - 这个例子中的 Promise.reject 和 throw 有区别吗
- .htaccess - htaccess 重定向到pdf的路径