从现有样式继承CSS。Extjs4沙箱

从现有样式继承CSS。Extjs4沙箱,css,extjs,extjs4,extjs3,Css,Extjs,Extjs4,Extjs3,我已经设法将我的extjs4面板嵌入到现有的extjs3应用程序中 我想继承面板标题等现有的css颜色方案 但是我的extjs4组件是“沙盒”的,因此使用.x4-*名称空间作为css 如何能够: my-styles.css .x4-tab { some-stuff } 继承自: existing-styles.css .x-tab { foo: #FFF } 这可能吗?干杯您可以获取选择器中包含“.x-”的所有现有css规则,并使用“.x4-”创建新规则 var newRules =

我已经设法将我的extjs4面板嵌入到现有的extjs3应用程序中

我想继承面板标题等现有的css颜色方案

但是我的extjs4组件是“沙盒”的,因此使用.x4-*名称空间作为css

如何能够:

my-styles.css

.x4-tab { some-stuff }
继承自:

existing-styles.css 

.x-tab { foo: #FFF }

这可能吗?干杯

您可以获取选择器中包含“.x-”的所有现有css规则,并使用“.x4-”创建新规则

var newRules = [];
Ext.Object.each(Ext.util.CSS.getRules(), function(selector, rule) {
    if (/\.x-/.test(selector)) {
        newRules.push(rule.cssText.replace(/\.x-/g, '.x4-');
    }
});

Ext.util.CSS.createStyleSheet(newRules.join(' '))

虽然这在技术上是可行的,但除非您手动遍历每个组件并重写类以获得正确的css引用(如果它们存在的话)(并且您必须手动创建其他引用),否则结果实际上是没有意义的。这是因为Extjs 4在技术意义上与Extjs 3在css名称空间和类方面的工作方式不同。您可以通过覆盖组件类来手动更改组件正在使用的所有css类,但这不值得花时间。你想要做的事情需要付出巨大的努力,这是不值得的。

谢谢,这正是我想要的,它没有抓住所有的颜色,但它改变了足够多的样式,看起来很相似。