Internet Explorer (IE) 中的 JQuery 圆角搞砸了
Posted
技术标签:
【中文标题】Internet Explorer (IE) 中的 JQuery 圆角搞砸了【英文标题】:JQuery Rounded Corners in Internet Explorer (IE) messed up 【发布时间】:2010-09-18 04:10:32 【问题描述】:我正在使用 JQuery 的 jquery.corner.js 在一些 td 标签上创建圆角,它们在 IE 中看起来很好,除了
-
如果您打开一个新标签,然后返回该页面
如果您转到另一个选项卡,请单击一个链接,然后返回该页面
如果您将鼠标悬停在执行 javascript 的 div/菜单上(我认为)。
圆角被水平线替换,td 标签内的文本被下推。然而,一旦页面被刷新,渲染就会恢复正常。在所有情况下,它都可以在 Firefox 中完美运行。
有什么想法吗?
作为参考,我使用的 Javascript 代码如下(这是 MOSS 2007 页面):
$(document).ready(function()
$("table.ms-navheader td").corner("top");
);
这是一个完美显示问题的示例 html 页面:
<html>
<head>
<script type="text/javascript" src="jquery-1.2.6.js"></script>
<script type="text/javascript" src="jquery.corner.js"></script>
<script type="text/javascript">
<!--
$(document).ready(function()
$("div").corner("top");
$("td").corner();
);
//-->
</script>
</head>
<body>
<table>
<tr>
<td style="background-color: blue">
TD that will be messed up.
</td>
</tr>
</table>
<div style="background-color: green">
divs don't get messed up.
</div>
</body>
</html>
在上面的代码中,一旦你打开一个新标签,TD 就会被弄乱,而不是 div。我对 MOSS 发出的 HTML 没有太多控制权,否则我可能会咬紧牙关,在这里使用 DIV 而不是表格。
【问题讨论】:
有多个 jquery.corner.js-plugins。您正在使用的链接会有所帮助。 :) 【参考方案1】:在 IE 中,我使用 DD_Roundies 库获得了更好的结果。不过只能在 IE 中使用。对于 Firefox,您需要添加 -moz-border-radius 样式。
【讨论】:
你不需要向 Firefox/Webkit 添加任何东西,脚本自己添加,它可以跨浏览器运行 这是迄今为止效果最好的。所有其他人都有一点点不太对劲。 DD_Roundies 的想法是合理的,但是它的 IE8 支持很粗略而且速度很慢(作者在网站上这样说),这让我无法开始。 请注意,此库(以及任何其他使用 VML 的 IE 库)存在问题,在某些情况下,jQuery 可能会在包含此库的页面中崩溃。 github.com/jquery/jquery/pull/13【参考方案2】:我同意 RichH 的观点,我认为所有流行的 JavaScript 库在尝试创建圆角时都有一些不足之处。
我总是发现自己在使用cornershop:http://wigflip.com/cornershop/,它是一个图像/css 生成器,可以消除手动制作圆边的痛苦。
【讨论】:
就个人而言,我很高兴他们没有添加一堆额外的图像、标签、CSS 或任何需要为不支持 CSS 属性的浏览器创建圆角的东西。当不支持时,我宁愿不使用圆角(在大多数情况下)。【参考方案3】:您可能想试试这个插件,而不是 jquery.curvycorners.js。
我们在我们的项目中使用它完全没有问题 - 您可能需要附加/前置跨度,但它非常简单。
最好的 -> 默认消除锯齿。
http://blue-anvil.com/jquerycurvycorners/test.html
【讨论】:
这东西很棒。我也遇到了其他插件的问题。 效果很好,但在 IE8 中崩溃了!【参考方案4】:我在圆角 Javascript 库(尤其是 IE6 和 7)方面遇到了麻烦
最后,我回到了涉及图像的更传统的方法。设置起来有点麻烦,但效果很好。
【讨论】:
【参考方案5】:curvycorners.js 和 jquery.curvycorners.js 仅在您不想使用任何过渡时才有效。
如果您有手风琴或淡入/淡出标签效果,则圆角元素在更改后无法正确呈现。
【讨论】:
【参考方案6】:要让jquery curvy corners 在IE 中工作,只需给元素一个背景色。 不知道为什么会这样......就像魔术一样!
【讨论】:
【参考方案7】:很难想象您遇到的问题,链接会非常有帮助。确保为表格的每个单元格定义了高度和宽度属性。可能是 hasLayout 问题。
【讨论】:
【参考方案8】:我已经搜索并没有找到 jquery UI 选项卡中圆角的解决方案。 jquery themeroller 支持圆角,但文档说它们在 IE 中不起作用。
这是一个很好的页面,有 25 种不同的圆角方法 http://www.cssjuice.com/25-rounded-corners-techniques-with-css/
【讨论】:
【参考方案9】:我也遇到过类似的问题,即使在 Firefox 中,我发现如果将“角”应用于具有设置背景颜色的类的元素,则角永远不会被应用。在我的例子中,我添加了一个名为“selected”的类,它为 UL 中选定的“选项卡”提供了不同的背景颜色。为了防止这种情况,我在添加角后使用 js 而不是 css 应用背景颜色:
$('.selected').css('background-color', '#3296C0');
此外,您还添加了一个 :hover ,它会更改背景颜色,在悬停时角会变回方形。到目前为止,我的解决方案是使用重新应用角落的 onhover 事件(您也可以在此处设置颜色)。
$('#top-nav li a').hover(function()
$(this).corners('top');
);
至于 IE6 - 一场噩梦 - 如果我能检测到 IE6 并且不添加让它们成正方形的角,那就不会那么糟糕了。甚至还没有尝试过 IE 7...
【讨论】:
以上是关于Internet Explorer (IE) 中的 JQuery 圆角搞砸了的主要内容,如果未能解决你的问题,请参考以下文章
Telerik asp.net mvc datepicker Internet Explorer (IE) 8 中的“无效参数”
IE9 - 主页中的怪癖模式和特定 iframe 中的“Internet Explorer 9 标准”
导航栏中的徽标在 Internet Explorer 中未正确居中
SMIL:t:Internet Explorer 8 中的音频问题