提问人:Jeff 提问时间:10/25/2009 最后编辑:CommunityJeff 更新时间:6/2/2012 访问量:5750
CSS text-select cursor ie7,奇怪的行为
CSS text-select cursor ie7, strange behavior
问:
这里很奇怪,希望得到一些反馈,为我指明正确的方向。
如果我或任何子 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
答:
您是否尝试过显式设置?这有帮助吗?background-color:transparent;
评论
background-color
这听起来像是一个丑陋的黑客,但你有没有尝试过将透明的 1x1 px GIF(又名垫片)设置为背景?
评论
这并不完美,但对于这个小例子,它似乎适用于 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 中会使鼠标光标的行为更像我所期望的。
我不确定这在更广泛的意义上是否有效,尽管存在元素层次结构。
我意识到这不是一个完美的答案,但它可能会激发其他想法。
我很确定我以前遇到过它,但在一些肤浅的浏览器测试中,它可能有点太微妙了,无法真正注意到。但我当然也通过设置背景颜色解决了问题。
据我所知,解决它的最佳方法是定位导致问题的元素,或在其周围添加一个定位的包装器 div。不过,您很可能会使用 ,并且也应该工作。position: relative
absolute
fixed
定位元素本身通常有效,但添加包装器 div 可能会更一致。
例如,添加到类中会将光标固定在此页面上的问题和答案上。position: relative
.post-text
评论
position: relative;
明确说明什么光标应该去哪里是不是太笨拙了?
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;
}
等。。
评论
Delilah 的解决方案,只是稍微简化了一点,对我来说效果很好,也解决了墨卡托的问题。
div { cursor: default; }
div * { cursor: auto; }
问题是你必须创建另一个css文件,并使用条件注释来处理它,而不是阻止其他浏览器。
PS:对于深色背景网站,此问题变得非常烦人。
透明的 1x1 px GIF 有效,也是对 IE 6 到 8 中 This 和其他错误的绝佳修复。我会将这样的东西添加到所有 IE 的条件注释中:
* {
background: url('images/fix1.gif');
}
评论