javascript - 如何使 jQuery 动画在主要浏览器上工作?

标签 javascript jquery html css internet-explorer

除了 Internet Explorer 和仅在 Firefox 中有效的动画效果外,我有一些适用于所有主要浏览器的代码。我不确定如何开始解决这个问题,因为它是相当基本的代码。我将发布代码片段,首先是原始渲染中的 html,然后是用于动态修改 html 的 jquery 代码。

加载的 html 从可见性隐藏开始。

<h3 class="infobox" name="infobox"><p>text</p><p>text</p></h3>

接下来的 2 个来自悬停(进入和离开)的 jquery 用于鼠标相关行为。

输入:

$(".infobox").css("visibility", "initial");
$(".infobox").html("<p>Location: " + 
        "<span style=\"color: " + (possiblemove[x] ? "green" : "red") +     "\">" + indexcoords[x] + "</span></p>" + 
        "<p>Number of possible moves: " + possiblemoves + "&nbsp;&nbsp;&nbsp;Move count: " + nummoves + "</p>");

离开:

$(".infobox").html("<p>text</p><p>text</p>");
$(".infobox").css("visibility", "hidden");

动画:

for (var x = 0; x < 8; x++)
    if (x % 2 == 0)
        $(square).animate({backgroundColor: color}, 50);
    else
        $(square).animate({backgroundColor: 'red'}, 50);

$(square).animate({backgroundColor: color}, 50);

存在可疑行为的网页:

http://freethecube.com/kt/

如您所见,棋盘位的突出显示效果适用于所有主流浏览器。顶部的信息框适用于除 Internet Explorer 之外的所有浏览器。并且错误 Action 的动画闪烁仅适用于 firefox(尚未在 safari 中专门对此进行测试)。

这些元素之间的一般共同点是明确的 css 修改。通过查看页面的源代码并单击顶部的 css 文件和底部的 js 文件,可以轻松查看正在使用的完整 css 和 jquery。

那么我需要做些什么才能让这些看似很小的 css 问题在所有主流浏览器上都能正常工作?

附注 我在 html 中写了这个特别简单的原因有两个:

It is trust worthy code that anyone can see. It is actually a game and nothing else.
And easy portability into my wordpress site.

正在使用的 Jquery 文件:

jquery.js

jquery-animate.js

如果有更新版本的动画,请告诉我。

谢谢


附录

我遇到的上述问题并不像我最初认为的那样源于 CSS 操作。这确实是我使用的 CSS 钩子(Hook)。修复各种版本的 backgroundcolor 是一个较老的 hack。如:var bg = elem.currentStyle["backgroundColor"];var bg = document.defaultView.getComputedStyle(elem, null).getPropertyValue("background-color");。我的整个问题只是不同浏览器处理 RGBRGBA 颜色格式的差异。我的功能在 RGBA 之前可以正常运行,但之后就不行了。

我使用的完整的 css 钩子(Hook)函数:

$.cssHooks.backgroundColor = 
{
    get: function(elem) 
    {
        if (elem.currentStyle)
            var bg = elem.currentStyle["backgroundColor"];        
        else if (window.getComputedStyle)
            var bg = document.defaultView.getComputedStyle(elem, null).getPropertyValue("background-color");

        if (bg.search("rgb") === -1)
            return bg;
        else 
        {
            bg = bg.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);

            function hex(x) 
            {
                return ("0" + parseInt(x).toString(16)).slice(-2);
            }
            return "#" + hex(bg[1]) + hex(bg[2]) + hex(bg[3]);
        }
    }
};

新的和改进的版本:可能仍然不完美,但已经更接近了。

$.cssHooks.backgroundColor = 
{
    get: function(elem) 
    {
        if (elem.currentStyle)
            var bg = elem.currentStyle["backgroundColor"];        
        else if (window.getComputedStyle)
            var bg = document.defaultView.getComputedStyle(elem, null).getPropertyValue("background-color");

        if (bg.search("rgb") === -1)
            return bg;
        else 
        {
            bg = bg.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);

            return (bg && bg.length === 4) ? "#" +
                ("0" + parseInt(bg[1],10).toString(16)).slice(-2) +
                ("0" + parseInt(bg[2],10).toString(16)).slice(-2) +
                ("0" + parseInt(bg[3],10).toString(16)).slice(-2) : '';
        }
    }
};

请对 Strelok 的回答投赞成票,因为他一语中的。 :)

最佳答案

一些事情:

  1. Bootstrap 之前包含 jQuery
  2. IE(任何版本)不支持 visibility css 属性的 initial 值。只需使用visible即可。
  3. 至少在 Chrome 中,game.js 的第 209 行存在问题,其中正则表达式不匹配任何内容且 bg 为空,因此您需要处理这种情况并返回颜色或妥善处理案件。当属性值为 rgba(0, 0, 0, 0) 您需要处理 rgba 时会发生这种情况。

关于javascript - 如何使 jQuery 动画在主要浏览器上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31128736/

相关文章:

javascript - 使用 Jquery 定位页面上 Div 的第一次和第二次出现

jquery - 带有传入变量的 SlideUp 回调?

负责返回和更新数据的 JavaScript 函数

javascript - 如何将用户输入的输入保存为 React 中的数组状态

jquery - 使用 ASP.NET 和 MVC 提交表单以执行正确操作

javascript - 使用 ajax 和 jQuery 提交表单

html - Bootstrap 3 : Thumbnail caption text wrapping to second line makes container height stretch

javascript - 如何在 Ajax 响应后从 select 标签中获取 html 格式的值?

javascript - 在 onload 事件中使用 Javascript 添加两个数字

javascript - 在具有Redux Thunk的React Redux应用程序中保持异步调用的DRY