【问题标题】:Fire event if the CSS style is changed by the user?如果用户更改了 CSS 样式,则触发事件?
【发布时间】:2011-10-08 14:00:46
【问题描述】:

我正在为 IE 9 (Javascript) 编写一个轻量级的 htc 程序。 CSS3 有一个名为 transition 的新属性,但它在 IE 9 中不起作用。我正在尝试实现这一点,但我需要知道属性何时发生变化。我对DOMAttrModifiedonpropertychange 很熟悉,但是如果CSS 更改了属性,它们不会触发:

a {
color:#FFF;
}

a:hover {
color:#000;
}

如果您将鼠标悬停在锚点上,DOMAttrModified 不会做任何事情。我可以使用mouseovermouseoutblurfocusactivatedeactivate 并在每次发生时检查属性是否更改,但如果:

div:hover a {
color:#FFF;
}

用户没有悬停锚标记,但 CSS 还是改变了颜色。我认为 pie.htc 有同样的问题。我只需要兼容 IE 9 的解决方案...

【问题讨论】:

    标签: javascript css hover dom-events


    【解决方案1】:

    我认为没有“onCSSChange”事件

    如何每 50 毫秒运行一个子程序并检查当前样式。如果 CSS 发生变化,您可以触发自己的事件。

    【讨论】:

    • 这很粗鲁,但我认为如果没有其他人回答,这是唯一的解决方案。我会等几天...
    【解决方案2】:

    我认为matrix filter 可能会对您有所帮助。

    另外,我推荐Cross-Browser Animated CSS Transforms — Even in IE

    【讨论】:

      【解决方案3】:

      一个更简单和更跨浏览器的用户Modernizr或类似的javascript应用程序来测试浏览器是否能够执行transition,如果不能,它将添加一个类名到根元素,您可以使用 jQuery 或类似框架轻松定位它:

      $('.notransition div').hover(function() {
          $a = $(this).find('a');
          //Then animate $a.
      }, function() { ... });
      

      如果可能,您可以使用本机属性,如果没有,则回退到 jQuery。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-30
        • 1970-01-01
        • 2019-01-12
        • 1970-01-01
        • 1970-01-01
        • 2018-03-09
        相关资源
        最近更新 更多