更新稍微探讨一下后,我找到了一种方法,将span
文字替换为div
并设置此样式:
.navItem div {
display: inline-block;
vertical-align: middle;
}
不确定这是不是最好的方式......一切都很麻烦
我一直在尝试创建此导航栏,但我遇到的问题是其中的文字并非完全垂直居中:
.navBar {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
height:54px;
background-color: #DADADA;
color: white;
}
.navItem {
display: inline;
float: left;
color: rgb(29, 29, 29);
font-size: 14px;
height: 54px;
}
.navItem a {
display: block;
height: 54px;
padding-left: 10px;
color: rgb(29, 29, 29);
text-align: center;
vertical-align: middle;
cursor: pointer;
transition: color .25s, background .25s;
text-decoration: none;
}
.navItem img {
vertical-align: middle;
}
.navIcon {
height: 34px;
width: 34px;
padding-top: 10px;
padding-bottom: 10px;
}

<ul class="navBar">
<li class="navItem">
<a>
<img class="navIcon" src="http://image.flaticon.com/icons/svg/297/297562.svg">
<span>About</span>
</a>
</li>
<li class="navItem">
<a>
<img class="navIcon" src="http://image.flaticon.com/icons/svg/297/297562.svg">
<span>Updates</span>
</a>
</li>
</ul>
&#13;
我也知道我的CSS可能看起来很滑稽。它包含至少3个不同来源的片段,介绍如何创建水平导航栏。
我在栏中以图标为中心时遇到了问题,所以你可以看到我只是手动将填充添加到图标以强制它到中心。
vertical-align: center
什么都没做
答案 0 :(得分:3)
如果你没有浮动li
,那么你可以从他们那里做vertical-align
。
.navBar {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
height: 54px;
background-color: #DADADA;
color: white;
line-height: 54px;
/* to set li in the middle*/
}
.navItem {
display: inline-block;
color: rgb(29, 29, 29);
font-size: 14px;
vertical-align: middle;
/* here it does what you look for */
line-height: 1.2em;
/* reset line-height to a nomal value */
}
.navItem a {
display: block;
/* whatever display you want */
padding-left: 10px;
color: rgb(29, 29, 29);
text-align: center;
/* why ? */
cursor: pointer;
transition: color .25s, background .25s;
text-decoration: none;
}
.navItem img {
vertical-align: middle;
/* aside text */
}
.navIcon {
height: 34px;
width: 34px;
}
/* eventually */
.navItem a span {
display: inline-block;
vertical-align: middle;
}
&#13;
<ul class="navBar">
<li class="navItem">
<a>
<img class="navIcon" src="http://image.flaticon.com/icons/svg/297/297562.svg">
<span>About</span>
</a>
</li>
<li class="navItem">
<a>
<img class="navIcon" src="http://image.flaticon.com/icons/svg/297/297562.svg">
<span>Updates</span>
</a>
</li>
<li class="navItem">
<a>
<img class="navIcon" src="http://image.flaticon.com/icons/svg/297/297562.svg">
<span>display on span <br/>can be useful too</span>
</a>
</li>
</ul>
&#13;
同样,不使用行高(@PhiterFernandes),而只使用伪来设置问题中所述的高度的初始54px。
.navBar {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
height: 54px;
background-color: #DADADA;
color: white;
}
.navBar:before {
content: '';
padding-top: 54px;
}
/* commun style */
.navBar:before,
.navItem,
.navItem img,
.navItem a span {
vertical-align: middle;
display: inline-block;
}
.navItem {
color: rgb(29, 29, 29);
font-size: 14px;
}
.navItem a {
padding-left: 10px;
color: rgb(29, 29, 29);
transition: color .25s, background .25s;
text-decoration: none;
}
.navIcon {
height: 34px;
width: 34px;
}
&#13;
<ul class="navBar">
<li class="navItem">
<a>
<img class="navIcon" src="http://image.flaticon.com/icons/svg/297/297562.svg">
<span>About</span>
</a>
</li>
<li class="navItem">
<a>
<img class="navIcon" src="http://image.flaticon.com/icons/svg/297/297562.svg">
<span>Updates</span>
</a>
</li>
<li class="navItem">
<a>
<img class="navIcon" src="http://image.flaticon.com/icons/svg/297/297562.svg">
<span>display on span <br/>can be useful too</span>
</a>
</li>
</ul>
&#13;
答案 1 :(得分:3)
这是一个更干净的版本,包括CSS和HTML。当你拥有一个非常好的选择器(可能应该是一个ID,但这是另一个问题)时,没有理由在内部项目上使用类。它还使用变量大小调整,因此即使人们没有完全按照您希望它们用于缩放,大小调整等的方式使用它也能正常工作。
.navBar {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
height:3.5em;
background-color: #DADADA;
color: white;
}
.navBar li {
display: inline-block;
color: rgb(29, 29, 29);
font-size: 0.9em;
margin: 0.2em;
}
.navBar li a {
display: block;
padding-left: 0.8em;
color: rgb(29, 29, 29);
text-align: center;
cursor: pointer;
transition: color .25s, background .25s;
text-decoration: none;
}
.navBar li img {
height: 2.5em;
width: 2.5em;
vertical-align: middle;
}
.navBar li span {
line-height: 3.5em;
margin-left: .5em;
}
&#13;
<ul class="navBar">
<li>
<a>
<img src="http://image.flaticon.com/icons/svg/297/297562.svg"><span>About</span>
</a>
</li>
<li>
<a>
<img src="http://image.flaticon.com/icons/svg/297/297562.svg"><span>Updates</span>
</a>
</li>
</ul>
&#13;