ExtJS4太优雅了...需要帮助ie8组件渲染

时间:2012-11-03 00:05:41

标签: extjs extjs4 sass

我正在开发一个ExtJS4应用程序 - 自定义报告应用程序。

ExtJS4使用图像和表格(修改后的标记)自动回退所有css3,使用可怕的优雅降级原则。因此,它会使已经臃肿的标记膨胀,并使用默认图像更改所有渐变/边框。

我不确定除了css3元素之外还有什么变化,但这里是应用截图。

这是IE8: Bad - IE8

这是Google Chrome: Good - Chrome

...

  1. 除了必须检查所有标记并撤消这些可怕的设计决策外
  2. 除了必须重新创建所有图像以匹配现有设计
  3. 除了必须修改核心文件以强制适用于不支持x-nlg,x-nbr等的浏览器 NOT
  4. 更新2012-11-23

    Sencha切片: Bad - IE8

    ExtJS核心覆盖: Good - IE8

    是否有其他方法或设置(javascript或sass)可以更轻松地处理所有这些兼容性问题?

1 个答案:

答案 0 :(得分:5)

因此,如果没有答案,我将提供我所采用的实施方案。

如您所见,这个复杂的ExtJS 4.1应用程序具有复杂的设计。 sencha切片工具无论如何都不起作用(但是如果你想保留所有的sencha默认值并且只是改变应用程序的基色,可能是基础SASS变量吗?)。

另一方面,你可以看到Ext覆盖结果的美妙程度。一个相当稳固的过渡,看起来相同95%(或者克里斯科伊尔会说,“好吧,足够好”)。

以下是我的实施:

Ext.application({
    ...
    init: function () {
        // Override CSS3BorderRadius value which caused render problems in <IE9 when false.
        Ext.supports['CSS3BorderRadius'] = true;

        // Hack-ish remove class sniffers from Ext.EventManager (which attaches modrnizer type classes onto the body)
        Ext.getBody().removeCls('x-nbr x-nlg');
    }
    ...
});

这种实现方式很优雅:

  1. “我”将编写可以工作的跨浏览器CSS。我不需要sencha用它的“更聪明”,更可怕的CSS来覆盖我的CSS。
  2. 我了解旧版浏览器无法处理圆角 - 我不想要它们。
  3. 我知道IE无法处理线性渐变 - 我不希望默认使用图像。我想使用filter:progid。
  4. 我不想让SENCHA用自定义图像的手柄,嵌套的容器和桌子GALORE打开我的标记
  5. gg希望这有助于某人

相关问题