css需要在JS执行后再加载样式怎么办_通过js动态创建link标签引入css
发布时间 - 2026-01-26 00:00:00 点击率:次可通过 JavaScript 动态创建 标签并插入 实现 CSS 延迟加载,适用于按设备类型、用户偏好或异步数据动态选择样式;核心是 document.createElement('link') 设置 rel="stylesheet" 和 href 后追加至 document.head,支持 onload/onerror 监听,需注意重复插入、样式替换及缓存问题。
可以通过 JavaScript 动态创建 标签并插入到 中,实现 CSS 在 JS 执行完成后再加载。这种方式适用于需要根据 JS 运行结果(如设备类型、用户偏好、异步数据)来决定加载哪套样式的情况。
动态创建 link 标签引入 C

核心思路是用 JS 创建 link 元素,设置其 rel="stylesheet" 和 href,然后追加到 document.head。
- 确保 JS 执行完逻辑(比如判断环境、获取配置)后再创建 link
- 推荐使用
document.createElement('link'),避免 innerHTML 方式带来的解析风险 - 可监听
link.onload或link.onerror处理加载状态(注意兼容性,部分老浏览器不支持 onload)
基础示例代码
以下是最简可用写法:
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = '/path/to/your/style.css';
// 可选:添加加载完成回调
link.onload = () => {
console.log('CSS 加载成功');
};
link.onerror = () => {
console.error('CSS 加载失败');
};
document.head.appendChild(link);
加载前需 JS 判断的常见场景
比如根据屏幕宽度、主题模式或接口返回值加载不同 CSS:
立即学习“前端免费学习笔记(深入)”;
- 检测是否为深色模式:
if (window.matchMedia('(prefers-color-scheme: dark)').matches) - 读取 localStorage 中保存的主题:
localStorage.getItem('theme') === 'dark' - 等待某个异步配置加载完毕(如从 API 获取皮肤 ID)后拼接 CSS 路径
注意事项
动态插入的 CSS 是异步加载的,不会阻塞 JS 执行,但会影响后续渲染。要注意:
- 不要在
document.write已结束后再多次插入同名 CSS,可能重复生效 - 若需替换已有样式,建议先移除旧 link(通过 id 或 class 标识),再插入新 link
- 移动端注意缓存行为,可在 href 后加时间戳或版本号避免旧样式残留(如
style.css?v=1.2.0)
# css
# javascript
# java
# html
# js
# 浏览器
# app
# win
# 异步加载
# 延迟加载
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
详解jQuery中的事件
Laravel模型事件有哪些_Laravel Model Event生命周期详解
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
千库网官网入口推荐 千库网设计创意平台入口
手机软键盘弹出时影响布局的解决方法
利用python获取某年中每个月的第一天和最后一天
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
如何在IIS中配置站点IP、端口及主机头?
如何在自有机房高效搭建专业网站?
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
网站图片在线制作软件,怎么在图片上做链接?
英语简历制作免费网站推荐,如何将简历翻译成英文?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
移动端脚本框架Hammer.js
Internet Explorer官网直接进入 IE浏览器在线体验版网址
Laravel如何记录自定义日志?(Log频道配置)
如何在万网开始建站?分步指南解析
网站制作价目表怎么做,珍爱网婚介费用多少?
Laravel如何使用withoutEvents方法临时禁用模型事件
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
免费网站制作appp,免费制作app哪个平台好?
详解jQuery中基本的动画方法
nodejs redis 发布订阅机制封装实现方法及实例代码
微信小程序 闭包写法详细介绍
如何快速搭建支持数据库操作的智能建站平台?
潮流网站制作头像软件下载,适合母子的网名有哪些?
如何在腾讯云服务器快速搭建个人网站?
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
Swift中switch语句区间和元组模式匹配
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
C++时间戳转换成日期时间的步骤和示例代码
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
微信小程序 HTTPS报错整理常见问题及解决方案
常州企业网站制作公司,全国继续教育网怎么登录?
EditPlus中的正则表达式 实战(2)
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
Laravel怎么为数据库表字段添加索引以优化查询
实例解析angularjs的filter过滤器
如何在建站宝盒中设置产品搜索功能?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
如何制作一个表白网站视频,关于勇敢表白的小标题?
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
智能起名网站制作软件有哪些,制作logo的软件?
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Laravel如何集成Inertia.js与Vue/React?(安装配置)
网站建设整体流程解析,建站其实很容易!
如何在阿里云虚拟主机上快速搭建个人网站?

