CSS text-select cursor ie7,奇怪的行为

CSS text-select cursor ie7, strange behavior

提问人:Jeff 提问时间:10/25/2009 最后编辑:CommunityJeff 更新时间:6/2/2012 访问量:5750

问:

这里很奇怪,希望得到一些反馈,为我指明正确的方向。

如果我或任何子 div 没有应用背景色,则当鼠标悬停在页面上时(无论是否悬停在文本上),ie7 会将正常的“指针”光标更改为“文本选择”光标。#wrapper

我以为我不久前已经解决了这个问题,但是当我从我或任何子div中删除背景色时,问题再次出现。#wrapper

只是在寻找一些提示或我应该检查的内容。

#wrapper {
    overflow: hidden;
    margin: 0 auto;
    width: 960px; /* using 960.gs */
}

#children {
    display: inline;
    float: left;
    margin: 0 10px;
    width: 940px;
}

编辑:

似乎是因为divs“hasLayout”,但我仍然不确定如何解决它。请参阅此链接。

编辑2:

我找不到有关此“ie7 错误”的更多信息。任何有任何想法的人,或者即使您知道这个错误并且可以让我知道,所以我知道我没有疯。我又对Microsoft感到非常沮丧。这周已经让我多花了几个小时的工作。似乎它永远不会结束。

编辑3:

这是遇到相同问题的人的另一个链接

编辑4:

STACKOVERFLOW.com 遭受这个错误!mashable.com 也是如此。我保证许多 Web 开发人员在他们的网站上都有这个错误,他们甚至不知道。

自己去看看吧......将光标悬停在任一站点的页面上。请注意,当不应该时,它会变成文本选择光标。

似乎使用该属性很容易修复,但问题是在需要时触发正确的文本选择光标行为。cursor

CSS 互联网浏览器-7

评论

0赞 Roberto Aloi 10/25/2009
你能举一个活生生的例子吗?我不确定问题出在这些行上......
0赞 Jeff 10/25/2009
是的,我刚刚发布的链接中的现场示例。在测试页面上下载文件,然后在 ie7 中打开“呃”以直接查看它。
0赞 tahdhaze09 10/31/2009
你没有疯。我发现了其他问题 hasLayout 导致,但还没有解决方案。
0赞 tahdhaze09 10/31/2009
我发现这个希望它有帮助:satzansatz.de/cssd/onhavinglayout.html
0赞 tahdhaze09 10/31/2009
尝试这些,做第一个(我不太喜欢它,因为它使用条件注释): bytesizecss.com/blog/post/fix-haslayout-with-one-line-of-css csscreator.com/node/25082 brunildo.org/test/BackgroundBorderLayout.html

答:

0赞 stephenhay 10/26/2009 #1

您是否尝试过显式设置?这有帮助吗?background-color:transparent;

评论

0赞 Jeff 10/26/2009
是的,试过了。不起作用。我想我希望有人能给我一些东西给“谷歌”。似乎很奇怪,以前没有多少人经历过这种情况。
0赞 stephenhay 10/26/2009
太糟糕了:我以为透明就足以阻止它发生。我假设你不想要任何背景?否则,您可以通过条件注释在 IE7 样式表中添加一个。似乎是那些没有像样的解决方法的渲染错误之一。(Javascript?对不起,我帮不上忙。
0赞 Jeff 10/26/2009
是的,到目前为止,我唯一的想法是搞砸我的 CSS 并放置一个与我网站的主要部分相匹配的 - 仅适用于 IE7,哈哈。background-color
0赞 Seb 10/30/2009 #2

这听起来像是一个丑陋的黑客,但你有没有尝试过将透明的 1x1 px GIF(又名垫片)设置为背景?

评论

0赞 Jeff 10/30/2009
没有尝试过,但如果涉及到这一点,我想我宁愿只设置背景色。不过,这是个好建议。
0赞 Nathan Fox 11/1/2009 #3

这并不完美,但对于这个小例子,它似乎适用于 IE 7。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<div style="overflow: hidden; margin: 0 auto; width: 140px;">
   <div style="position: relative; display: inline;">
      <p>
         Here is some test text that will wrap.
      </p>
   </div>
</div>
</body>
</html>

我不知道为什么这似乎有效,而且肯定不理想。出于某种原因,将 p 元素放在内联相对定位的 div 中会使鼠标光标的行为更像我所期望的。

我不确定这在更广泛的意义上是否有效,尽管存在元素层次结构。

我意识到这不是一个完美的答案,但它可能会激发其他想法。

1赞 mercator 11/4/2009 #4

我很确定我以前遇到过它,但在一些肤浅的浏览器测试中,它可能有点太微妙了,无法真正注意到。但我当然也通过设置背景颜色解决了问题。

据我所知,解决它的最佳方法是定位导致问题的元素,或在其周围添加一个定位的包装器 div。不过,您很可能会使用 ,并且也应该工作。position: relativeabsolutefixed

定位元素本身通常有效,但添加包装器 div 可能会更一致。

例如,添加到类中会将光标固定在此页面上的问题和答案上。position: relative.post-text

评论

0赞 Jeff 11/4/2009
增加我的 #wrapper 对我来说没有任何区别。至于包装我的包装器,好吧,我想我宁愿忍受光标的奇怪之处。=)position: relative;
0赞 mercator 11/5/2009
很公平。不过,我很好奇,添加额外定位的包装器可以解决它吗?
3赞 Zoe 11/4/2009 #5

明确说明什么光标应该去哪里是不是太笨拙了?

html {
    cursor: default;
}

h1, h2, h3, h4, h5, h6,
p, li, label, td, th {
    cursor: text;
}

a:link, a:visited, a:hover, a:active {
    cursor: pointer;
}

等。。

评论

0赞 mercator 11/4/2009
这仍然不能完全解决它。然后,文本光标将出现在整个块上,例如,包括部分填充的最后一行上的任何填充和空白区域,而不仅仅是实际文本。
0赞 Jeff 11/4/2009
同意。好主意,我已经尝试过了,但由于墨卡托引用的原因而没有削减它。
0赞 Zoe 11/5/2009
嗯,我们需要那么精确,是吗?哦,天哪..请参阅我对这个问题的评论,要求提供有关推理的更多信息。
0赞 puijob 8/14/2010 #6

Delilah 的解决方案,只是稍微简化了一点,对我来说效果很好,也解决了墨卡托的问题。

div { cursor: default; }
div * { cursor: auto; }

问题是你必须创建另一个css文件,并使用条件注释来处理它,而不是阻止其他浏览器。

PS:对于深色背景网站,此问题变得非常烦人。

1赞 Miroslav 2/22/2011 #7

透明的 1x1 px GIF 有效,也是对 IE 6 到 8 中 This 和其他错误的绝佳修复。我会将这样的东西添加到所有 IE 的条件注释中:

* {
    background: url('images/fix1.gif');
}