通过JavaScript调用CSS时防止FOUC

问题描述 投票:0回答:1

我有一个从模板更改而来的网页。我患有 FOUC(无风格内容闪现)。

我尝试了这里的解决方案:https://docs.google.com/presentation/d/1jt_VQC5LDF-e9j8Wtxu4KZPa8ItlmYmntGy5tdcbGOY/present?slide=id.p

但无法让它工作。这是我头脑的主要部分,脚本正在调用我的 CSS(我认为!)。

<head>
    <!--[if lte IE 8]><script src="js/html5shiv.js"></script><![endif]-->
    <script src="js/jquery.min.js"></script>
    <script src="js/skel.min.js"></script>
    <script src="js/skel-layers.min.js"></script>
    <script src="js/init.js"></script>
</head>

<body id="top">
            bunch of stuff to hide until style has loaded. 
</body>

这个解决方案的想法是暂停内容的加载,直到CSS加载完毕,但我不确定它在使用java脚本调用时是否有效。

这是我尝试过的:

<head>

    <style type="text/css">
        #fouc { display: none; }
    </style>

    <script type="text/javascript">
        document.documentElement.className = 'js';
    </script>

    <!--[if lte IE 8]><script src="js/html5shiv.js"></script><![endif]-->
    <script src="js/jquery.min.js"></script>
    <script src="js/skel.min.js"></script>
    <script src="js/skel-layers.min.js"></script>
    <script src="js/init.js"></script>

</head>

<body id="top">

    <div id="fouc">
            bunch of stuff to hide until style has loaded. 
    </div>

    <script type="text/javascript">
        document.getElementById("fouc").style.display="block";
    </script>

</body>

这不起作用。在这种情况下,有人可以建议一种方法来阻止 FOUC 吗?

感谢您的耐心等待,感谢您的帮助,

J

javascript html css fouc
1个回答
1
投票

这是我的解决方案:

    <script src="js/jquery.min.js"></script>
    <script src="js/skel.min.js"></script>
    <script src="js/skel-layers.min.js"></script>
    <script src="js/init.js"></script>

     <style type="text/css">
       .no-fouc {display: none;}
     </style>

    <script type="text/javascript">
      document.documentElement.className = 'no-fouc';
     $(window).on("load", function() {
        $('.no-fouc').removeClass('no-fouc');
     });    
    </script>

这整件事都进入了 ,没有对 进行任何更改。

它不是在主体部分中使用类和 id,而是使用 $(window).on("load", function() 来仅在加载内容后加载页面。请务必在脚本块之前加载 jQuery

© www.soinside.com 2019 - 2024. All rights reserved.