CSS EM测量搞乱了吗?

时间:2014-03-23 15:30:38

标签: html css margin em

我遇到了em单元的问题,我已经将导航列表宽度设置为相当于100px的6.250em并且工作正常。当我将每个li的宽度更改为6.250em时,它将不会拉伸到与navlist相同的宽度。为什么会发生这种情况?如何解决?

CSS代码:

.navlist {
  width: 100px;
  height: auto;
  float: left;
  margin: 0;
  padding: 0;
  list-style-type: none;
  background-color: #000; }
 .navlist li {
  font-weight: bold;
  font-family: sans-serif;
  font-size: 14px;
  text-align: center;
  text-transform: uppercase;
  text-shadow:0px 1px #14161A; }
i {
  font-size: 26px;
  padding-bottom: 6px;}
a.nav-buttons {
  width: 6.250em;
  height: 60px;
  display: block;
  display: table-cell;
  vertical-align: middle;
  color: #CCC;
  text-decoration: none;
  background-color: #666;
  border-top: 1px solid #2E3139;
  border-bottom: 1px solid #14161A; }
 a.nav-buttons:hover, a.nav-buttons:focus {
  color: #fff;}

HTML代码:

<ul class="navlist">
    <li><a href="#" class="nav-buttons"><i class="fa fa-home"></i> Home</a></li>
    <li><a href="#" class="nav-buttons"><i class="fa fa-info-circle"></i> About</a></li>
</ul>

JSFiddle Here:http://jsfiddle.net/2ZT9w/1/

1 个答案:

答案 0 :(得分:0)

ems是相对于他们的父母,所以li是相对于nav而不是nav的父母。您重置li上的字体大小。假设它与导航中的不同,那么也会将li上的em值更改为1em = 14px。

如果导航列表的字体大小从未改变,并且等于16px的主体的默认大小,那么你的问题是因为导航列表中的1em等于16px而li上的1em等于14px