简述:请跳过到问题部分
背景
我们有一个非常大的旧应用程序。我们正在将功能剥离出来创建一个新的应用程序。
这两个应用程序具有截然不同的UI,采用不同的架构和技术构建。由于用户将在两者之间自由导航,因此我们需要在一定程度上统一UI,以使过渡不那么突兀。
决定使用一个大型CSS覆盖样式表,将其加载到旧应用程序的顶部(这样我们可以更多地关注新应用程序)。尽管这个样式表非常庞大,但它有效。
我们的旧应用程序有一个根CSS文件,无论如何(某些是经典ASP,某些使用主控页,某些是手动的),都会在每个页面中包含。
问题
因此,我们决定在根样式表中使用@import标签引入重新定义的样式。
尽管我们承认阻止页面呈现是一种可怕的反模式,但我们需要这种行为来防止旧UI的闪烁,直到覆盖样式表接管为止。
我们认为,在head中使用CSS会阻止页面呈现,直到其加载完成,但它似乎没有等待导入的CSS。这种行为是否符合预期?有没有办法让用户代理等待?如何实现这一点的任何信息将不胜感激。
谢谢
@import
起作用,它必须在 CSS 文件的顶部,因此要在瀑布流中首先出现。但是您正在使用覆盖操作,这实际上是否起作用呢? - JakeParis@import
样式表可能在瀑布流中位于顶部,但是每个异步加载的样式表都会重新渲染CSS。等待重新渲染还是不等待是浏览器的决定,无法关闭或同步。您只能通过使用JS(例如XHR)同时加载和应用它们或按所需顺序加载它们来加载它们,但我不建议对基本样式表这样做。 - Niklas E.