jQuery、HTML 5 和 IE 给出错误的动画

发布于 2024-12-11 21:53:19 字数 1135 浏览 0 评论 0原文

我在 IE 中遇到 jQuery 动画问题(我在 IE 8 中进行了测试)。网站是用 HTML5 编写的,我的内部有带有 img 标签的figure标签。

单击时我想移动所有图形元素,因此在动画函数中我只需给出新的左侧位置。在 FF、Opera 和 Chrome 上运行良好,在 IE 上则有问题。

看起来 IE 每 200 毫秒重绘一次 HTML。如果我有“慢”动画,则从开始位置到结束位置有 3 次跳跃,而“快”则只有一次跳跃...

请帮助我。

这是我使用的一个简单代码:

这是一个创建图形的函数:

var createElement = function (w, h, left, id, photo, title, HTMLclass) {

var nid = Math.round(Math.random()*100)*1000 + (id*1);

var 图 = $("

").css({"z-index":1,"宽度":w+"px","高度":h+"px","左":左+"px","光标":"指针"}).attr("id",(nid+1)).attr("onclick","moveElements(this)").addClass(HTMLclass);

var img = $("").attr("src","photo/co/" + photo).attr("alt", 标题).css({"z-index":2,"width": w+"px","高度":h+"px"});

var Figcaption = $("

").text(caption); $("body").append(figure.append(img).append(figcaption));

};

这是一个带有 animate 的循环:

varfigures = $ (“图”).each(函数(索引){ $(this).animate({"left": newLeft}, "slow"); };

I have problem with jQuery animation in IE (I test it in IE 8). Site is written in HTML5 and I have figure tag with img tag inside.

On click I want to move all figure element, so in animate function I just give new left position. On FF, Opera and Chrome it works good, on IE is problem.

It looks like IE redraws HTML once on 200 ms. If I have animation with "slow", there are 3 jumps from start position to the end, with "fast there is only one jump...

Please help me.

Here is a simple code I use:

This is a function that creates figure:

var createElement = function (w, h, left, id, photo, caption, HTMLclass) {

var nid = Math.round(Math.random()*100)*1000 + (id*1);

var figure = $("<figure>").css({"z-index":1,"width":w+"px","height":h+"px","left":left+"px","cursor":"pointer"}).attr("id",(nid+1)).attr("onclick","moveElements(this)").addClass(HTMLclass);

var img = $("<img>").attr("src","photo/co/" + photo).attr("alt", caption).css({"z-index":2,"width":w+"px","height":h+"px"});

var figcaption = $("<figcaption>").text(caption);
$("body").append(figure.append(img).append(figcaption));

};

And here is a loop with animate:

var figures = $("figure").each(function(index) {
$(this).animate({"left": newLeft}, "slow");
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

涫野音 2024-12-18 21:53:19

这可能与 Internet Explorer 不知道如何处理较新的 HTML 5 标记有关。尝试将以下 Javascript 插入您的头脑中。 javascript 的作用是为文章、页脚、页眉等创建元素,因此较旧的浏览器可以通过 DOM 加载来使用这些元素。

document.createElement("article");  
document.createElement("footer");  
document.createElement("header");  
document.createElement("hgroup");  
document.createElement("nav");
document.createElement("feature"); 

如果这不起作用,请尝试在此处发布您的代码,以便我们可以更仔细地查看。跨浏览器问题似乎表明 IE 不知道如何处理这些元素。

It may have to do with Internet Explorer not knowing what to do with newer HTML 5 tags. Try inserting the following Javascript into your head. What the javascript does is creates elements for article, footer, header, etc. so older browsers have those elements to work with from the DOM load.

document.createElement("article");  
document.createElement("footer");  
document.createElement("header");  
document.createElement("hgroup");  
document.createElement("nav");
document.createElement("feature"); 

If that doesn't work, try posting your code in here so we can look more closely. The cross browser issue seems to point to IE not knowing how to handle those elements though.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文