我创建了一个html错误页面。它有2行显示错误。第二行链接到主页。为了使两行保持在中心,我创建了一个顶层css-grid并将网格的每一行都设为a flex。我注意到,如果我display:flex用于第二行,则here链接周围没有任何空格,但是如果删除display:flex,该空格将被添加,即html从Clickhereto变为Click hereto。
css-grid
flex
display:flex
here
Clickhereto
Click hereto
如果删除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; }
这是因为flexbox删除inline或inline-block元素之间的默认空白。
inline
inline-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属性影响的字符) ,则不会呈现该 空格(就像其文本节点显示为:none一样)。
因此,在我们的代码中,我们有两个子项和一个不带空格的空白序列。