开启样式隔离后,是否可以在主应用中配置忽略子应用样式文件中的某些 className?
场景
主应用中会检查浏览器宽度,将不同宽度定义成2个 css class: mobile tablet, 并将这个 class 放在 body 上。
子应用中通过写添加 .mobile 前缀来为移动端写样式。
问题
但是开启样式隔离后,该方法会失效 子应用样式
.card {
width: 300px;
}
.mobile .card {
width: 100%;
}
Output
micro-app[name=xxx] .card {
width: 300px;
}
micro-app[name=xxx] .mobile .card {
width: 100%;
}
版本[1.0.0-rc.3]之前,仅会给子应用的组件中明确 scoped 的样式添加 micro-app[name=xxx],如果是子应用的全局样式不会添加 micro-app[name=xxx] 前缀,所以还是可以工作的。
版本[1.0.0-rc.4] 之后,子应用中的所有样式都会被添加 micro-app[name=xxx] 前缀,导致完全无法工作了
目前的解决方案
通过官方文档中了解到,可以使用注释的方式来突破隔离,但是效果并不理想
.card {
width: 300px;
}
/*! scopecss-disable */
.mobile .card {
width: 100%;
}
/*! scopecss-enable */
Output
micro-app[name=xxx] .card {
width: 300px;
}
.mobile .card {
width: 100%;
}
此时 .mobile .card 依然可以影响到主应用,并且这种依赖注释的方式在开发过程中非常麻烦
需求
希望可以在主应用中配置一些 className,让子应用在做样式隔离时忽略这些 class,期望效果如下:
配置子应用忽略 .mobile
.card {
width: 300px;
}
.mobile .card {
width: 100%;
}
Output
micro-app[name=xxx] .card {
width: 300px;
}
.mobile micro-app[name=xxx] .card {
width: 100%;
}
升级1.0.0-rc.4的问题可以举例描述一下吗
升级1.0.0-rc.4的问题可以举例描述一下吗
升级后还没有遇到其他问题,样式隔离貌似是修复了 1.0.0-rc.3 覆盖不到 import 进来的全局样式的问题,根据文档说明,全部样式都被隔离应该是预期行为才对。 现在只是需要一个通过主应用配置,来让所有子应用中的某些class突破隔离的功能