gpt4 book ai didi

html - chrome 和 moz 中的垂直对齐问题

转载 作者:行者123 更新时间:2023-11-27 23:27:14 26 4
gpt4 key购买 nike

我唯一的问题是我想把菜单放在 div 的中间,然后我尝试插入垂直对齐,因为它已经具有 inline-block 样式属性,但老实说我不知道​​为什么。为什么另一个div是生效的,而不是我想生效的。

这是我的例子:

.content{

width: 100%;
height: 90%;
}

.middle{

position: fixed;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
}

.menu{

width: 70%;
height: 80%;
}

.three {

width: 30%;
}


.six{

width: 60%;
}

.inline {
display: inline-block;
}

.h-80{

height: 80%;
}

.h-100{

height: 100%;
}
<div class="content middle">

<div class="menu">
<div class="three inline h-80">
this is taking effect
</div>
<div class="six inline h-100" style="vertical-align: middle;">
while I inputing vertical align here
</div>
</div>
</div>

您可以运行代码片段来检查我的问题的真实性,哦,我尝试了 chrome 和 moz,两者都显示相同的结果。虽然我是菜鸟,但我知道发生了什么,直到尝试了 3 个小时..

最佳答案

vertical-align 是一个奇怪的 CSS 属性。我在 .inline 元素周围添加了边框以显示效果。

第二个 div 与父容器的基线居中对齐。第一个隐含了 vertical-align: baseline 并且它坚持了这一点。

.content{

width: 100%;
height: 90%;
}

.middle{

position: fixed;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
}

.menu{

width: 70%;
height: 80%;
}

.three {

width: 30%;
}


.six{

width: 60%;
}

.inline {
display: inline-block;
border: 1px solid;
}

.h-80{

height: 80%;
}

.h-100{

height: 100%;
}
<div class="content middle">

<div class="menu">
<div class="three inline h-80">
this is taking effect
</div>
<div class="six inline h-100" style="vertical-align: middle;">
while I inputing vertical align here
</div>
</div>
</div>

如果我将 vertical-align:middle 放在两个 div 上,您会看到容器都居中对齐,而 content那些 div 不是。

.content{

width: 100%;
height: 90%;
}

.middle{

position: fixed;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
}

.menu{

width: 70%;
height: 80%;
}

.three {

width: 30%;
}


.six{

width: 60%;
}

.inline {
display: inline-block;
border: 1px solid;
}

.h-80{

height: 80%;
}

.h-100{

height: 100%;
}
<div class="content middle">

<div class="menu">
<div class="three inline h-80" style="vertical-align: middle">
this is taking effect
</div>
<div class="six inline h-100" style="vertical-align: middle;">
while I inputing vertical align here
</div>
</div>
</div>

您还需要将内容的对齐方式设置为居中。唉,这不能用相同的技术来完成。为此,我将使用 flexbox 和 display: inline-flex;对齐元素:居中。对于替代方案,请查看以下问题:How do I vertically align text in a div?

.content{

width: 100%;
height: 90%;
}

.middle{

position: fixed;
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
}

.menu{

width: 70%;
height: 80%;
}

.three {

width: 30%;
}


.six{

width: 60%;
}

.inline {
display: inline-flex;
align-items: center;
border: 1px solid;
}
.inline span {
vertical-align: middle;
}
.h-80{

height: 80%;
}

.h-100{

height: 100%;
}
<div class="content middle">

<div class="menu">
<div class="three inline h-80" style="vertical-align: middle">
this is taking effect
</div>
<div class="six inline h-100" style="vertical-align: middle;">
while I inputing vertical align here
</div>
</div>
</div>

进一步调整:你可以完全放弃内联 block ,到处使用 flexbox

.middle, .menu, .three, .six {
display: flex;
align-items: center;
}

.content {
width: 100%;
height: 90%;
}

.middle, .menu, .three, .six {
display: flex;
align-items: center;
}

.middle {
position: fixed;
justify-content: center;
flex-direction: column;
}

.menu {
width: 70%;
height: 80%;
}

.three {
width: 30%;
background-color: gold;
}

.six {
width: 60%;
background-color: silver;
}

.h-80 {
height: 80%;
}

.h-100 {
height: 100%;
}
<div class="content middle">

<div class="menu">
<div class="three h-80" style="vertical-align: middle">
this is taking effect
</div>
<div class="six h-100" style="vertical-align: middle;">
while I inputing vertical align here
</div>
</div>
</div>

关于html - chrome 和 moz 中的垂直对齐问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57708156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com