我该如何解决IE的问题,即当鼠标没有悬停在图像上时边框不会显示

时间:2020-03-05 18:53:43  来源:igfitidea点击:

我正在尝试在一组图像上创建一个相当简单的效果。当图像上没有鼠标时,我希望它具有简单的灰色边框。当它上面确实有图像时,我希望它具有不同的"选定"边框。

以下CSS在Firefox中非常有效:

.myImage a img
{
    border: 1px solid grey;
    padding: 3px;
}
.myImage a:hover img
{
    border: 3px solid blue;
    padding: 1px;
}

但是,在IE中,当鼠标没有悬停在图像上时,边框不会出现。我的Google-fu告诉我IE中存在一个导致此问题的错误。不幸的是,我似乎找不到解决该错误的方法。

解决方案

回答

尝试使用其他颜色。我不确定IE是否理解"灰色"(而是使用"灰色")。

回答

IE在锚元素以外的任何其他东西上都存在:hover伪类的问题,因此我们需要更改悬浮影响锚自身的元素。因此,如果我们在锚点中添加了"图像"之类的类,并将标记更改为以下形式:

<div class="myImage"><a href="..." class="image"><img .../></a></div>

然后,我们可以将CSS更改为如下所示:

.myImage a.image
{
    border: 1px solid grey;
    padding: 3px;
}
.myImage a.image:hover
{
    border: 3px solid blue;
    padding: 1px;
}

通过将边框放置在锚点而不是图像上,可以模拟出所需的效果。请注意,CSS中可能需要类似以下内容的图片,以消除图像的默认边框:

.myImage a img {
    border: none;
}

回答

以下在IE7,IE6和FF3中起作用。关键是使用a:link:hover。 IE6将A元素变成了block元素,这就是为什么我添加float内容以收缩包装内容的原因。

请注意,它处于"标准"模式。不知道在怪癖模式下会发生什么。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title></title>
    <style type="text/css">
      a, a:visited, a:link, a *, a:visited *, a:link * { border: 0; }
      .myImage a
      {
          float: left;
          clear: both;
          border: 0;
          margin: 3px;
          padding: 1px;
      }
      .myImage a:link:hover
      {
          float: left;
          clear: both;
          border: 3px solid blue;
          padding: 1px;
          margin: 0;
          display:block;
      }
    </style>
  </head>
  <body>
    <div class="myImage"><a href="#"><img src="http://stackoverflow.com/Content/Img/stackoverflow-logo-250.png"></a></div>
    <div class="myImage"><a href="#"><img src="http://stackoverflow.com/Content/Img/stackoverflow-logo-250.png"></a></div>
  </body>
</html>

回答

尝试使用背景而非边框。

它不一样,但是可以在IE中使用(请看一下我网站上的菜单:www.monex-finance.net)。

回答

以我的经验,IE无法与伪类一起很好地工作。我认为处理此问题的最通用方法是使用Javascript将CSS类应用于该元素。

CSS:

.standard_border
{
    border: 1px solid grey;
    padding: 3px;
}
.hover_border
{
    border: 3px solid blue;
    padding: 1px;
}

内联Javascript:

<img src="image.jpg" alt="" class="standard_border" onmouseover="this.className='hover_border'" onmouseout="this.className='standard_border'" />

回答

<!--[if lt IE 7]>
<script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE7.js" type="text/javascript"></script>
<![endif]-->

把它放在标题中,应该修复一些IE错误。