2

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

两者都对页面速度不利吗?

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

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


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 IEFilters

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

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

Javascript 的渲染速度会比 CSS 过滤器快吗?

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

4

2 回答 2

1

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

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

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

请参阅有关该主题的 Google文档

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

注意:本节中的最佳实践仅适用于支持 CSS 表达式的 Internet Explorer 5 到 7。CSS 表达式在 Internet Explorer 8 中已弃用,其他浏览器不支持。


IE中使用过滤器的东西,通常没有办法替换它们。

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


回应您的编辑:

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

Javascript 的渲染速度会比 CSS 过滤器快吗?

在您链接到的文章中,没有一种解决方法有filter解决方案filterJavascript 解决方案(为了方便起见,这些解决方案只是自动应用相同的解决方案)。

于 2011-01-29T19:27:02.447 回答
0

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

IE CSS 表达式

  • 以前只能在 IE 中工作到 7
  • 已被微软停产
  • 没有 jQuery 做不到的事情,只是更方便一点
  • 据此他们过去需要启用 JavaScript 。
  • 总之,这是一个坏主意。
于 2011-01-29T19:24:14.070 回答