html - 将 <form> 标记的垂直对齐设置为导航栏元素以居中

标签 html css twitter-bootstrap

我知道这类问题经常被问到,但我在搜索结果中找不到我的答案。所以在我的 Razor View 中有一个导航栏,它包括两个元素:“主页”和“注销用户”:

<nav class="navbar navbar-inverse navbar-fixed-top"  >
    <div class="container">
        <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav navbar-left">
                <li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
            </ul>
            <ul class="nav navbar-nav pull-right">
                @if (SignInManager.IsSignedIn(User))
                {
                    <li>
                        <form method="post" asp-action="logout" asp-controller="Account">
                            <button type="submit" class="navbar-link btn btn-link" >
                                    Logout  @User.Identity.Name
                            </button>
                        </form>
                    </li>                     
                }
                else
                {
                    <li><a asp-area="" asp-controller="Account" asp-action="Register">Register</a></li>
                    <li><a asp-area="" asp-controller="Account" asp-action="Login">Login</a></li>
                }
            </ul>

        </div>
    </div>
</nav>

问题是“Logout User”标签没有居中垂直对齐,并且比“Home”标签高一点。

Razor View

如何将“注销用户”标签的垂直对齐设置为居中,以便此标签适应“主页”标签?

最佳答案

利用强大的 Flexbox。

您可能需要对此进行调整,使其适用于您所有的.container 选择器,但它应该给您一个想法:-)

nav{
  position:fixed;
  top:0;
  left:0;
  width:100%;
  height:80px;
  background:red;
}
.container{
  height:100%;
}
.navbar-collapse{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  height:100%;
}
ul{
  list-style:none;
}
ul:first-child{
  margin-left:25px;
}
ul:last-child{
  margin-right:25px;
}
*{
  margin:0;padding:0;
}
<nav class="navbar navbar-inverse navbar-fixed-top"  >
    <div class="container">
        <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav navbar-left">
                <li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
            </ul>
            <ul class="nav navbar-nav pull-right">

                    <li>
                        <form method="post" asp-action="logout" asp-controller="Account">
                            <button type="submit" class="navbar-link btn btn-link" >
                                    Logout  @User.Identity.Name
                            </button>
                        </form>
                    </li>                     
            </ul>
        </div>
    </div>
</nav>

为清楚起见,我删除了您的 .Net if()

关于html - 将 <form> 标记的垂直对齐设置为导航栏元素以居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59095000/

相关文章:

javascript - Uncaught ReferenceError : block is not defined

html - 词缀触发时轮播更改文本

Javascript - 斜杠被空格替换

css - ie7 float div高度

html - 我的问题是关于使用 Swiper http ://idangero. us 和 ionic 4

css - 有什么不同? #header.h1 与 : #header h1

css - 通过本地 css 设置页面样式

javascript - 如何在通过单击超链接打开 Bootstrap 模式后将值设置为 Bootstrap 模式上的文本框?

javascript - 使用 JavaScript 填充 <select>

css - 基于列单元格类型的样式标题