【问题标题】:CSS expressions vs Filters and Javascript for internet explorer用于 Internet Explorer 的 CSS 表达式与过滤器和 Javascript
【发布时间】:2011-01-29 19:19:42
【问题描述】:

CSS 表达式和 CSS 过滤器有什么区别?

都对页面速度不利吗?

如果可以在其他浏览器中使用纯 CSS 实现某些功能,但对于 IE,则只能通过 CSS 表达式或 CSS 过滤器或 Javascript 实现。如果我们关心页面速度,那么我们是否应该始终使用 Javascript。

Javascript 在渲染方面会比 CSS FilterExpression 解决方案更快吗?


Pekka 回答后更新

好的,所以应该避免使用 CSS 表达式,这很清楚。

现在我想了解过滤器

过滤器示例

#myElement {
    opacity: .4; /* other browsers */
    filter: progid:DXImageTransform.Microsoft.Alpha(opacity=40); /* this works in IE6, IE7, and IE8 */
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=40)"; /* this works in IE8 only */
}

要在 IE6 中获得 PNG 透明度,在 IE 6、7、8 中获得一些 CSS 3 效果,我们可以使用 CSS IE Filters

http://www.smashingmagazine.com/2010/04/28/css3-solutions-for-internet-explorer/

还有一些可用的 Javascript 替代方案。

Javascript 在渲染方面会比 CSS 过滤器更快吗?

注意:filter 属性不是有效的 CSS

【问题讨论】:

    标签: javascript css internet-explorer cross-browser css-expressions


    【解决方案1】:

    在旧版本的 IE 中,如果您可以选择使用 CSS 过滤器或 CSS 表达式,则过滤器是更好的选择。

    但是,我想不出一个场景,您可以选择过滤器表达式。

    您应该更喜欢纯 Javascript 而不是表达式,因为表达式会不断地进行评估,例如在 mousemove 上。使用纯 Javascript,您可以控制代码何时运行,例如 onloadonresize

    见谷歌document on the subject

    CSS 表达式会降低渲染 表现;将它们替换为 替代品将改善浏览器 为 IE 用户呈现。

    注意:此最佳实践在此 部分仅适用于互联网 Explorer 5 到 7,支持 CSS 表达式。 CSS 表达式是 在 Internet Explorer 8 中已弃用,并且 其他浏览器不支持。


    IE中过滤器的作用,很多时候没有办法替代。

    没有办法改为“使用 Javascript”,因为 Javascript 只会动态应用过滤器。透明度就是这种情况,而 rgba 渐变过滤器解决方法就是这种情况。


    回应您的修改:

    还有一些 Javascript 可用的替代方案。

    Javascript 会更快吗 比 CSS Filter 渲染?

    在您链接到的article 中,没有一个解决方法有filter 解决方案 Javascript 解决方案(那些只是自动应用相同的filter,为方便起见) .

    【讨论】:

    • 我也为过滤器找到了这个gtmetrix.com/avoid-alphaimageloader-filter.html
    • PNG8 是一个很好的解决方案,如果它适用于您的问题实例(如果您需要 PNG24 的全色深度怎么办?),但它需要额外的工作来导出图像的 PNG8 版本(s ) 这可能只用于较旧的 IE。 DD_belatedPNG 是另一种透明度解决方案,它使用 VML 来处理问题。
    • 您写道“在您链接到的文章中,没有一种解决方法有过滤器解决方案”,但它有很多过滤器解决方案。我没找到你
    • @JitendraVyas:我说“没有一种解决方法有过滤器解决方案 JavaScript 解决方案”。这意味着您别无选择,只能使用过滤器解决方案(如果 JavaScript 解决方案确实 存在,它无论如何都会应用相同的过滤器解决方案,因此不会提高速度)。
    【解决方案2】:

    如果你指的是 IE6 的 CSS 表达式,你应该完全放弃那些并使用 jQuery。

    IE CSS 表达式

    • 以前只能在 IE 7 中工作
    • 已经discontinued by Microsoft
    • 没有jQuery做不到的,只是更方便一点
    • 根据this,他们曾经要求启用JavaScript
    • 总之,这是个坏主意。

    【讨论】:

    • @Jitendra 好吧,它们是 IE7 中某些效果的唯一解决方案,因此您可能需要它们。但它们显然很烂,因为它们在 IE 中得到支持
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 2011-07-07
    • 1970-01-01
    • 2013-03-26
    • 2012-01-22
    • 2017-12-18
    相关资源
    最近更新 更多