1

我正在开发一个带有自定义字体的菜单,并且在 chrome(和 safari)中,它的间距完全符合我的要求。

http://american-motorsports.net/2012/

当我在 Firefox 中查看它时,字体的字距有点不同,导致最右边的菜单项上有一点黑色间隙。我可以看到FABRICATIONFA之间的区别

HTML 现在非常简单:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="resources/css/reset.css" />
<link rel="stylesheet" href="resources/css/main.css" />
<title><?php echo date('M d, Y') . ' | '; ?>American Motorsports - Off-Road Fabrication</title>
</head>
<body>
<div id="wrap">
    <div id="header">
        <div id="logo">
            <img src="resources/images/logo.png" width="291" height="150" alt="American Motorsports - Off-Road Fabrication" />
        </div>
        <div id="menu">
            <a href="#"><span class="item">HOME</span></a><a href="#"><span class="item">SUSPENSION</span></a><a href="#"><span class="item">FABRICATION</span></a><a href="#"><span class="item">PROJECTS</span></a><a href="#"><span class="item">MEDIA</span></a><a href="#"><span class="item">CONTACT</span></a>
        </div>
    </div>
    <div id="main"></div>
</div>
</body>
</html>

到目前为止,CSS 由这些组成

@font-face {  
    font-family: bebas;  
    src: url("../fonts/bebas.ttf") format("truetype");  
    font-weight: normal;
    font-style: normal;
}

body {
    font-size: 14px;
    color: #ccc;
    line-height: 20px;
    margin: 0;
    padding: 0;
    background: url("../images/bg.png") #202020;
}

#wrap {
    background: url("../images/bg_main.jpg") no-repeat center top;
    min-height:800px;
}

#header {
    border-top: 5px solid #3a3a3a;
    height:150px;
    width:970px;
    background-color:#000000;
    margin: 50px auto;
}

#logo {
    width:324px;
    height:179px;
    background-color:#121212;
    border-top: 5px solid #3a3a3a;
    border-bottom: 5px solid #ffffff;
    margin-top:-22px;
    float:left;
}

#logo img {
    margin-left:13px;
    margin-top:17px;
}

#menu {
    width:646px;
    height:150px;
    float:right;
    margin:0;
    padding:0;  
}

#menu a {
    margin:0;
    padding:0;
}

.item {
    font-family:bebas;
    font-size:18px;
    height:150px;
    display:inline-block;
    text-align:center;
    line-height:8em;
    color:#fff;
    cursor:pointer;
    padding-left:20px;
    padding-right:20px;
    margin:0;
    text-shadow: 0 3px 3px #111;
}

.item:hover {
    background: -moz-linear-gradient(top,  #3a3a3a 0%, #101010 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#3a3a3a), color-stop(100%,#101010));
    background: -webkit-linear-gradient(top,  #3a3a3a 0%,#101010 100%);
    background: -o-linear-gradient(top,  #3a3a3a 0%,#101010 100%);
    background: -ms-linear-gradient(top,  #3a3a3a 0%,#101010 100%);
    background: linear-gradient(to bottom,  #3a3a3a 0%,#101010 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3a3a3a', endColorstr='#101010',GradientType=0 );
}

#main {
    width:970px;
    /*background-color:#ffffff;*/
    margin: 0 auto;
}

所以问题是如何消除差距,使其看起来像 chrome 和 safari 或修复字距调整问题..我只是不希望 Firefox 中的那个差距

4

3 回答 3

2

您必须将 a 包裹在有问题span的字母周围并调整 CSSletter-spacing:属性,直到获得您想要的。

良好的排版技巧,尤其是在自定义字体方面,还没有为浏览器的黄金时段做好准备。

计划 B:使用图像。

于 2012-10-16T16:46:43.217 回答
0

一个快速肮脏的解决方案是

#menu{
  white-space: nowrap;
  overflow: hidden; /* means you don't get a dirty edge, but the last link may be smaller on the right */
}

不过,理想情况下,您不应该依赖字体的宽度来使您的菜单看起来正确。如果你有时间,给每个链接一个类和一个自定义宽度。或者更好的是,在每个项目中使用带有链接的列表,以获得更好的控制。

例如,如果您添加:

.item{
  padding: 0;
  width: 16.66%; /* assuming you always have 6 links */
}

...它们总是合适的,但有些看起来很垃圾。为了获得最专业的外观,您需要为每个人指定一个类和自定义宽度。

于 2012-10-16T16:48:19.160 回答
0

我看不出您要消除什么差距,但您所描述的是 Firefox(现代版本)默认应用字距调整(如果在字体中定义)的问题。其他浏览器没有。所以这是字距调整与无字距调整的问题,而不是字距调整的差异。字距调整通常被认为是印刷上可取的。但是,如果您真的想阻止 Firefox 进行字距调整,可以使用字体功能设置,例如在这种情况下使用

#menu  { -moz-font-feature-settings: "kern" 0; }
于 2012-10-16T18:08:10.137 回答