有人可以解释为什么在此菜单的父级中使用[HttpPost]
public IActionResult AddMainMenu(MainMenuItems mainMenuItems)
{
string userEmail = User.Identity.Name;
return Json("success");
}
display: flex;
会弄乱子元素中两个绝对定位的叠加层吗?
这是一个小提琴,您可以在有无align: center;
的情况下尝试获得我的意思。 (取消注释/ * align:center; * /在.menu中)
https://jsfiddle.net/Hastig/wmtr87gc/
align: center
body { background-color: gray;}
.menu {
display: flex;
justify-content: center;
/* align-items: center; */
width: 100%;
padding: 5px 0;
background-color: hsl(0, 0%, 30%);
}
.menu-item {
position: relative;
display: flex;
justify-content: center;
align-items: center;
flex: 1;
font-size: 13px;
color: hsl(0, 0%, 70%);
}
.menu-item.progress {
background-color: gray;
}
.progress-bar {
position: absolute;
top: 0; bottom: 0; left: 0;
width: 83%;
background-color: hsla(191, 58%, 46%, 1);
}
.progress-value {
position: absolute;
top: 50%; left: 50%;
transform: translate(-50%, -50%);
color: hsl(0, 0%, 90%);
}
答案 0 :(得分:1)
因为中间元素仅包含绝对元素,因此内部没有流入内容来定义其高度。然后默认的align-items
为stretch,因此默认情况下将拉伸您的元素,并且其高度将等于其父高度,但如果更改对齐方式,则该元素将考虑其内容来定义高度,并且没有流入元素,它将具有height:0
,这意味着top:0;bottom:0
定义的进度条的高度也将为0
。
为避免这种情况,请保持至少一个未放置位置的元素(包含文本的元素),以便中间元素具有一定的流入内容,并且其高度将与0
不同会。
body {
background-color: gray;
}
.menu {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
padding: 5px 0;
background-color: hsl(0, 0%, 30%);
}
.menu-item {
position: relative;
z-index:0;
display: flex;
justify-content: center;
align-items: center;
flex: 1;
font-size: 13px;
color: hsl(0, 0%, 70%);
}
.menu-item.progress {
background-color: gray;
}
.progress-bar {
position: absolute;
z-index:-1;
top: 0;
bottom: 0;
left: 0;
width: 83%;
background-color: hsla(191, 58%, 46%, 1);
}
.progress-value {
color: hsl(0, 0%, 90%);
}
<div class="menu">
<div class="menu-item">Stuff</div>
<div class="menu-item progress">
<div class="progress-bar"></div>
<div class="progress-value">83</div>
</div>
<div class="menu-item">Things</div>
</div>