水平li - 垂直对齐元素

时间:2016-05-15 07:17:55

标签: html css

我使用<ul>设置css display: inline;作为页面顶部的工具栏/菜单,如下所示:

enter image description here

正如您所看到的,文本垂直对齐,但左侧的img太高,右侧的输入框略低。我努力移动它们,使它们完全垂直对齐。

以下是我的CSS:

.mynav {
    font-weight: 300;
    border: 1px solid #ccc;
    border-width: 1px 0;
    list-style: none;
    margin: 0;
    padding: 0;
    text-align: center;
    background-color: #0067b1;
}

.mynav li {
    display: inline;
      align-items: center;
        vertical-align:middle;
  line-height:35px;
}

.mynav a {
    color: white;
    display: inline-block;
    padding: 15px;
    font-size: 14pt;
    text-decoration: none;
}

.mynav input {
    margin-left: 25px;
    font-family: 'Open Sans', sans-serif;
    font-weight: 300;
    font-style: italic;
    -moz-border-radius: 10px;
    border-radius: 10px;
    border: none;
    padding: 5px;
    width: 200px;
    height: 25px;
    margin-top: 0px;
}

.mynav i
{
    font-weight: 300;
    color: white;
    font-size: 24px;
    margin-left: 15px;
}

我的HTML(如果需要):

<ul class="mynav">
    <li><img src="http://www.advancegroupholdings.com.au/my_logo_nav.png" style="width: 100px; height:25px; padding-right:25px;" /></li>
    <li><a href="/">My Jobs</a></li>
    <li><a href="/about/">Obtain a Quote</a></li>
    <li><a href="/work/">Submit New Instruction</a></li>
    <li><a href="/clients/">Settings</a></li>
    <li><a href="/contact/">Help</a></li>
    <li><input type="text" placeholder="Enter Your Ref or Job Number"/><i class="fa fa-search"></i></li>
</ul>

至于输入框,它有一个5的填充,我试图删除没有运气。我还在输入上设置了margin-top: 0px,但仍然没有运气。

至于徽标,我也很难过。我已尝试添加margin-top: 5px,但它无效。

我也在StackOverflow上找到了这两个问题:

<ul> horizontal nav bar... vertically-align element

css - verticaly align horizontal li

第一个没有效果,第二个想要将CSS更改为display: flex,这对我来说摆脱了水平条,不是吗?

任何人都可以帮助我将徽标和输入框(和放大镜)垂直居中吗?提前谢谢!

Plunker here

3 个答案:

答案 0 :(得分:1)

向图片添加下两条规则会使其正确居中。

display: inline-block;
vertical-align: sub; /* or text-bottom */

至于输入,它看起来正确地以我为中心。

答案 1 :(得分:1)

我根据您的需要创建了一个小型bootstrap示例。与您所拥有的不同,但或多或​​少地提供所需的输出。如果这个解决方案适合你,希望你可以从这里继续。

<强> HTML          

  <div class="col-md-2"><img src="http://www.advancegroupholdings.com.au/my_logo_nav.png"  /></div>
    <div class="col-md-1">My Jobs</div>
    <div class="col-md-2">Obtain a Quote</div>
    <div class="col-md-2">Submit a New Instruction</div>
    <div class="col-md-1">Settings</div>
    <div class="col-md-1">Help</div>
    <div class="col-md-3"><input class="inputHeight" type="text" placeholder="Enter Your Ref or Job Number"/><i class="fa fa-search"></i></div>
  </div>
</div>

<强> CSS

 .navbar {
  width:80%;
   font-weight: 300;
    border: 1px solid #ccc;
    border-width: 1px 0;
    margin: 0;
    padding: 0;
    text-align: center;
    background-color: #0067b1;
    vertical-align:middle;
    line-height:50px;
}

.inputHeight {
    margin-left: 25px;
    font-family: 'Open Sans', sans-serif;
    font-weight: 300;
    font-style: italic;
    -moz-border-radius: 10px;
    border-radius: 10px;
    border: none;
    padding: 5px;
    width: 200px;
    height: 25px;
    margin-top: 0px;

}

Plunker Example

答案 2 :(得分:1)

在您的具体示例中,它足以添加vertical-align:middle;到<img><a><i>元素!另外,我建议将<li>元素作为内联块,而不是内联以获得更大的灵活性。

  

一般情况下,要垂直对齐,图像高度必须等于   行中的其他元素line-heightvertical-align:middle必须设置。

如果图像高度为25像素,则设置为:

.mynav li, .mynav i {
    vertical-align:middle;
    line-height:25px;
}
img {
    vertical-align:middle;
    height: 25px;
    line-height:25px;
}

在这里:https://plnkr.co/edit/Xf3uvvjuqykQMjnhVxes?p=preview