动态删除伪css类

时间:2017-07-14 10:23:40

标签: javascript css html5 extjs extjs4.2

我在我的项目中使用extjs 4.2.2.1144,它正在生成一个伪css类,如下所示

//从需要它的各个组件中删除轮廓而不是全局重置

.#{$prefix}webkit {
    * {
        &:focus {
            outline:none !important;
        }
    }
}

生成css如下:

.x-webkit *:focus {
  outline: none !important;
}

这在IE中的可编辑表格中导致性能问题,但对于Chrome工作正常,如果我删除它,性能会显着提高。

有没有办法在页面加载中使用简单的javascript或jquery卸载(不从css文件中删除)这个伪类?

2 个答案:

答案 0 :(得分:1)

您可以使用在组件级别应用类来限定css的范围 cls属性,然后让框架和浏览器为您完成工作。

http://docs.sencha.com/extjs/4.2.6/#!/api/Ext.form.field.Text-cfg-cls

以下是使用上面文档页面中的示例的示例:

在您的组件文件中(/ project_root / app / view /.../ MyComponent.js)

// My Component
Ext.create('Ext.form.Panel', {
  title: 'Contact Info',
  width: 300,
  bodyPadding: 10,
  renderTo: Ext.getBody(),
  items: [{
    xtype: 'textfield',
    name: 'name',
    fieldLabel: 'Name',

    cls: 'no-outline-on-focus' // <-- this will be applied to the component container 

    allowBlank: false 
  }, {
    xtype: 'textfield',
    name: 'email',
    fieldLabel: 'Email Address',
    vtype: 'email'  format
  }]

});

在你的sass文件中(/project_root/sass/etc/all.scss)

// the parent component with extjs generated styles
.no-outline-on-focus {

  // everything within this block is scoped to the element above. 
  *:focus {
     outline: none !important;
   }
}

如果您没有安装CLI,这里有一个链接: https://www.sencha.com/products/extjs/cmd-download/

听起来您可能已经拥有它或已经设置了项目,但是想要发送链接以防万一。

如果您不想下载CLI或不想要它,可以使用SASS生成您自己的CSS输出的链接: http://sass-lang.com/install

Sencha在文档中提供了大量的sass变量,使样式和主题变得更容易。 :)

答案 1 :(得分:0)

如果样式属性不在样式表中,则将样式属性设置为空字符串将删除该属性。

这可能有效

$(".x-webkit :focus").css("outline", "");