Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';为支持JS的浏览器添加CSS的最佳方式是什么?_Javascript_Html_Css - Fatal编程技术网

Javascript 什么';为支持JS的浏览器添加CSS的最佳方式是什么?

Javascript 什么';为支持JS的浏览器添加CSS的最佳方式是什么?,javascript,html,css,Javascript,Html,Css,仅在支持JS的浏览器上,在HTML页面中包含CSS文件的最佳做法是什么?我听说不鼓励使用document.write 文件。写(“”); 当然可以。您可以做与文档相同的工作。通过创建新元素并将它们附加到中来编写 我还建议将此代码放在中,以确保已正确加载。您需要的解决方案是: 基本上,在“noJS”的body标签上设置一个类。然后使用Javascript删除该类。从主体添加css和异步添加css都是确保FOUC…@dandavis正确的方法。理想情况下,您不会动态添加CSS文件,但如果您愿意

仅在支持JS的浏览器上,在HTML页面中包含CSS文件的最佳做法是什么?我听说不鼓励使用document.write


文件。写(“”);
当然可以。您可以做与
文档相同的工作。通过创建新元素并将它们附加到
中来编写


我还建议将此代码放在
中,以确保
已正确加载。

您需要的解决方案是:


基本上,在“noJS”的body标签上设置一个类。然后使用Javascript删除该类。

从主体添加css和异步添加css都是确保FOUC…@dandavis正确的方法。理想情况下,您不会动态添加CSS文件,但如果您愿意,这是一种很好的方法。CSS应该在加载之前加载,而动态加载的唯一方法是通过document.write()。添加一个普通的DOM链接标记可能在JS方面更为简洁,但它也是异步的,这可能会导致FAUC。实际上,最好的方法(平衡理论和现实世界)是将您需要的任何工作表硬编码为中的标记,然后通过JS禁用/取消禁用某些工作表。
var stylesheet = document.createElement('link');
stylesheet.rel = 'stylesheet';
stylesheet.href = 'assets/stylesheets/layout_js-only.css';
document.querySelector('head').appendChild(stylesheet);