如何使用 Javascript 加载 CSS 文件?

新手上路,请多包涵

是否可以使用 Javascript 将 css 样式表导入 html 页面?如果是这样,怎么办?

PS javascript 将托管在我的网站上,但我希望用户能够放入他们网站的 <head> 标记,并且它应该能够将托管在我的服务器上的 css 文件导入当前网页。 (css 文件和 javascript 文件都将托管在我的服务器上)。

原文由 Ali 发布,翻译遵循 CC BY-SA 2.5 许可协议

阅读 1k
2 个回答

这是“老派”的做法,希望它适用于所有浏览器。理论上,你会使用 setAttribute 不幸的是 IE6 并不始终支持它。

 var cssId = 'myCss'; // you could encode the css path itself to generate id..
 if (!document.getElementById(cssId))
 {
 var head = document.getElementsByTagName('head')[0];
 var link = document.createElement('link');
 link.id = cssId;
 link.rel = 'stylesheet';
 link.type = 'text/css';
 link.href = 'http://website.example/css/stylesheet.css';
 link.media = 'all';
 head.appendChild(link);
 }

此示例检查 CSS 是否已添加,因此仅添加一次。

将该代码放入 JavaScript 文件,让最终用户简单地包含 JavaScript,并确保 CSS 路径是绝对路径,以便从您的服务器加载。

香草JS

下面是一个示例,它使用纯 JavaScript 根据 URL 的文件名部分将 CSS 链接注入到 head 元素中:

 <script type="text/javascript">
 var file = location.pathname.split( "/" ).pop();

 var link = document.createElement( "link" );
 link.href = file.substr( 0, file.lastIndexOf( "." ) ) + ".css";
 link.type = "text/css";
 link.rel = "stylesheet";
 link.media = "screen,print";

 document.getElementsByTagName( "head" )[0].appendChild( link );
 </script>

在结束 head 标记之前插入代码,CSS 将在页面呈现之前加载。使用外部 JavaScript ( .js ) 文件将导致出现无样式内容 ( FOUC ) 的 Flash。

原文由 user58777 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果你使用 jquery:

 $('head').append('<link rel="stylesheet" type="text/css" href="style.css">');

原文由 BoumTAC 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题