代码之家  ›  专栏  ›  技术社区  ›  Julian

CSS EM测量混乱?

  •  0
  • Julian  · 技术社区  · 11 年前

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

    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此处: http://jsfiddle.net/2ZT9w/1/

    1 回复  |  直到 2 年前
        1
  •  1
  •   Rob    11 年前

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

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