首页 > 解决方案 > 为 a 设置垂直对齐

标记为导航栏项目以居中

问题描述

我知道这种类型的问题经常被问到,但我在搜索结果中找不到我的答案。所以在我的 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>

问题是“注销用户”标签没有居中垂直对齐,并且比“主页”标签略高。

剃刀视图

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

标签: htmlcsstwitter-bootstrap

解决方案


使用强大的 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()


推荐阅读