我正在开发一个带有自定义字体的菜单,并且在chrome(和safari)中,它的间距与我想要的完全相同。
http://american-motorsports.net/2012/
当我在firefox中查看它时,字体的字距有点不同,在最右边的菜单项上产生一点黑色间隙。我可以在 FABRICATION
中看到 F 和 A 之间的区别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中的那个差距
答案 0 :(得分:2)
你必须在有问题的字母周围包裹span
并调整CSS letter-spacing:
属性,直到得到你想要的为止。
良好的排版技巧,特别是在自定义字体方面,在浏览器黄金时段尚未做好准备。
计划B :使用图片。
答案 1 :(得分: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 */
}
......它们总是适合,但有些看起来很垃圾。 对于最专业的外观,您需要为每个人提供一个班级和自定义宽度。
答案 2 :(得分:0)
我没有看到您要删除的差距,但您所描述的是Firefox(现代版本)默认情况下应用字距调整的问题,如果以字体定义的话。其他浏览器没有。所以这是一个字距调整与没有字距调整的问题,而不是字距调整的差异。 Kerning通常被认为是印刷上合乎需要的。但是如果你真的想阻止Firefox进行字距调整,可以使用font feature settings,例如在这种情况下
#menu { -moz-font-feature-settings: "kern" 0; }