【问题标题】:IE8, positioning and hover not workingIE8,定位和悬停不起作用
【发布时间】:2010-09-02 10:08:06
【问题描述】:

我设置了一个伪图库来显示缩略图并在将鼠标悬停在缩略图上时显示放大的图像。放大的图像相对于其父缩略图定位。

这适用于 Google chrome 和 Mozilla Firefox,但不适用于 IE8。

我在这件事上做了一些研究,但没有任何进展。在 IE8 中,缩略图和放大图像都显示。 “可见性:隐藏”、“悬停”或“绝对位置”在 IE8 中似乎都不起作用。

不胜感激。以下是sn-p的代码:

.main{
     float:right;
     display: block;
     Background-color:transparent;
     Margin: 20px 55px 20px 10px;
}

.main img{
     display: block;
     border:0;
}

.main:hover{
     background-color:#ffffff;
     position: relative;
     visibility:visible;
     z-index: 1400;
}

/*for bigger images*/
.main bigger {
     width: 500px;
     height: 500px;
     position: absolute;
     left: -2000px;
     visibility: hidden;
     overflow: hidden;
     background-color:transparent;
     border:0;
}

.main:hover img{
     z-index: 1400;
     position: relative;
}

.main:hover bigger{
     z-index: 1500;
     display:block;
     width: 500px;
     height: 500px;
     top: -100px;
     left: 200px;
     overflow: visible;
     visibility: visible;
     background-color: transparent;
     clear: none;
}

谢谢

【问题讨论】:

  • HTML 是什么样的?不应该是.bigger 而不是bigger
  • 它看起来像这样:

标签: css internet-explorer-8 hover position


【解决方案1】:
/*for bigger images*/ 
.main bigger { width: 500px; height: 500px; position: absolute; left: -2000px; visibility: hidden; overflow: hidden; background-color:transparent; border:0; }

.main:hover img{ z-index: 1400; position: relative; }

.main:hover bigger{ z-index: 1500; display:block; width: 500px; height: 500px; top: -100px; left: 200px; overflow: visible; visibility: visible; background-color: transparent; clear: none; }

更大应该是一个元素或一个类。如果是类,应该是 .bigger 吧?

【讨论】:

  • 没想到。应该是两者.... 一个类来覆盖像这样包装的元素:。您可能会遇到一些问题,因为我已经通过 w3w xhtml 验证器验证了页面,并且 MSDN 描述的错误之一涉及未声明的 。如果代码在 Chrome 和 Firefox 中运行,我无法想象为什么这会是一个问题。
  • 嗯,这取决于文档类型。 Chrome 和 Firefox 在标记方面更加宽容。 w3schools.com/tags/tag_DOCTYPE.asp
  • 我的文档类型曾经是严格的 xhtml 1.0,直到我验证了页面并返回了有关框架的错误。然后,我将其更改为 xhtml 1.0 过渡。这没有任何区别。任何其他建议都会有所帮助。
  • 使用其他合法的 HTML 标签,如 SPAN 或 DIV。
【解决方案2】:

看起来像这样:<a class="main" href="#"><img src="" /><bigger><img src="" /></bigger></a>

不要那样做。

<bigger> 元素不存在。即使在 XHTML 中,您也不能只制作自己的元素;无论如何都要创建一个自定义 DTD,这可能仍然无法在 IE 中工作,因为 IE 并不真的支持 XHTML。

Chrome 和 Firefox 在处理无法识别的元素方面比 IE8 更宽松一些,这就是它在这些方面工作的原因。

我建议您将 bigger 类添加到图像中:<img src="" class="bigger" /> 并去掉 <bigger> 元素。

【讨论】:

  • 嗯......尝试创建一个图像类,适用于 Chrome 和 Firefox,但不再适用于 IE8。能见度也失败了。在这一点上,不使用图像类可能符合我的兴趣。有了一个,IE8 就不会像某些人所说的那样“优雅地”失败。
  • 请告诉我,我用开发者工具检查了 IE8 中的渲染代码,较大的元素嵌套在 中,显示为 />。也做了更多的研究和测试,Chrome 和 Firefox 仅在将更大的类声明为 a.main.bigger 时复制 IE8 错误。这样一来,Chrome 和 Firefox 中的可见性也会失败。
  • 这让我相信 IE8 可能只是将我的元素(而不是类)读取为伪元素类。当更大被声明为类或伪元素时,Chrome 和 Firefox 类似地失败:a.main.bigger 或 a.main::bigger。
  • @Rosemary,应该是.main .bigger(注意.bigger前面的空格)。或者那是你在做什么?如果这不能解决问题,请在您的问题中添加一个最小的工作示例(HTML + CSS)或将其放在网上某处,因为我认为我无法重现这种情况,所以我不知道它应该是什么看起来以及 IE8 以何种方式失败。我不认为它像你说的那么神秘。 IE8 只是没有应用 bigger 样式...
  • 好吧,我认为我没有多余的空间。我想知道这如何改变 IE8 呈现代码的方式。此外,我认为 chrome 和 firefox 将 Visibility 和 Positioning 应用于类存在问题。我想按照您的建议进行操作将需要大量更改我的代码。我会尝试,但我希望有一个更简单的解决方案。
猜你喜欢
  • 2013-02-05
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
相关资源
最近更新 更多