为什么我的a:hover css在Firefox中的工作方式不同?

时间:2013-11-07 20:13:20

标签: css google-chrome firefox cross-browser

我无法弄清楚这一点。我已经完成了研究,请不要评论我做更多的研究。此外,我是一个菜鸟,所以要好;)

这是我的网站:http://library.skybundle.com/

将鼠标悬停在主蓝色导航栏(标题区域)中的两个黑色矩形上。 a:悬停应该使颜色变为灰色。问题是在Chrome中,这看起来很完美。但是,在Firefox中,填充权限不够长或者其他东西,所以“教育课程”按钮的最右侧总是有一个小的黑色矩形(只有当光标悬停在按钮上时才会显示)。换句话说,鼠标悬停时灰色框不会一直到按钮区域的右侧端。我只是不明白为什么这在Chrome中看起来效果很好,但在Firefox中却有问题......

当我说我已尝试使用Firebug在Firefox中修复它时,请相信我。如果您使用浏览器中的编辑器来玩它,您会看到如果您尝试为Firefox填充更长时间,它会将整个按钮弹出一个新行。因此,为了解决这个问题,你必须使容器更宽,但原来的问题又回来了。这是一个问题圈,我相信你们中的一个天才会看到一个我想念的简单解决方案。

请帮忙。谢谢!

编辑:

这是我的JSFiddle和代码。请注意它在Chrome中看起来很棒但在Firefox中看起来不是很好吗?

http://jsfiddle.net/S4st8/

HTML:

<div id="navigation">
  <div id="navigation-inner">
    <div id="page-nav">
      <div id="primary-nav">
        <ul id="top-menu">
          <li id="li-left"><a href="#">Product Training Videos</a></li>
          <li id="li-right"><a href="#">Educational Courses</a></li>
        </ul>
      </div>
    </div>
  </div>
</div>

CSS:

#navigation {
  background: url(http://library.skybundle.com/wp-content/themes/business-services/library/styles/colour-images/mu-nav.jpg) repeat-x;
  margin: 0px;
  padding: 0px;
  height: 40px;
  width: 100%;
}

#navigation-inner {
  margin: 0px auto;
  padding: 0px;
  height: 48px;
  width: 960px;
}

#page-nav {
  margin: 0px;
  padding: 0px;
  height: 40px;
  width: 960px;
}

div#primary-nav {
  position: relative;
  display: block;
  float: left;
  margin: 0;
  padding: 0;
}

ul#top-menu {
  margin: -5px 0.325em 0 0.325em;
  position: absolute;
  padding: 0;
  z-index: 100;
  top: 0;
  left: 3em;
  width: 367px;
}

ul#top-menu li {
  line-height: 3em;
  list-style-type: none;
  height: 49px;
  background-color: #2C2C2C;
  float: left;
}

li#li-right {
  list-style-position: inside;
  border-left: 2px solid #5E5E5E;
}

ul#top-menu li a {
  font-weight: bold;
  font-size: 11pt;
  text-decoration: none;
  padding: 15px 10px 16px 10px;
  color: #ffffff;
}

ul#top-menu li a:hover {
  text-decoration: none;
  width: auto;
  color: #ffffff;
  background-color: #505354;
  padding: 15px 10px 17px 10px;
}

3 个答案:

答案 0 :(得分:5)

因为 a 标记(锚标记)具有内嵌的默认显示属性

由于 CSS Box Model ,您需要调整填充并将锚标记显示属性设置为display:block;

显示块允许锚标记填充LI标记的整个空间

ul#top-menu li a 更改为:

ul#top-menu li a{
    color: #FFFFFF;        
    font-size: 11pt;
    font-weight: bold;

    display: block; /* add this */
    padding: 0 10px; /* add this */
}

CSS Box模型添加内容+填充+边框+边距

https://developer.mozilla.org/en-US/docs/Web/CSS/box_model

答案 1 :(得分:1)

看看这个CSS规则:

li#li-right {
  border-left: 2px solid #5E5E5E;
  list-style-position: inside;
}

删除list-style-position: inside似乎可以解决您在Firefox中的问题(并且仍在Chrome中运行),但我还没有在其他浏览器中测试其含义。 CSS规则记录在案here

答案 2 :(得分:1)

原因:如果您没有指定浏览器,浏览器会应用自己的css。 Firefox为您的子弹添加了空间(不知何故)

FF:

  • list-style-image none
  • list-style-position outside
  • list-style-type disc

GooChrome:

  • list-style-image:none;
  • list-style-position:inside;
  • list-style-type:none;

用户JasonSperske为您提供了修复解决方案, 我邀请你重置你的CSS。

PS。与此同时,我们邀请您参加:https://stackoverflow.com/helphttp://sscce.org/

阅读和理解这些页面会给你很少的声誉点