首页 > web前端 > css教程 > 正文

在css中异步加载样式如何处理

P粉602998670
发布: 2025-11-21 09:33:26
原创
784人浏览过
通过JavaScript动态插入link标签、预加载CSS并延迟应用、使用media属性延迟非关键CSS加载,结合load事件优化体验,实现CSS异步加载,避免阻塞渲染,提升性能。

在css中异步加载样式如何处理

在 CSS 中实现异步加载样式,主要是为了解决传统 link 标签阻塞页面渲染的问题,从而提升页面加载性能。虽然原生 CSS 加载是阻塞的,但可以通过一些技巧实现“异步”加载效果。

使用 JavaScript 动态插入 link 标签

通过 JavaScript 创建 <link> 标签并插入到页面中,可以让浏览器在 DOM 构建完成后才开始加载 CSS,避免阻塞关键渲染路径。

  • 动态创建 link 元素,设置 rel="stylesheet"href 属性
  • 添加到 <head><body> 中触发下载
  • 这种方式不会阻塞 HTML 解析

示例代码:

const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'styles.css';
document.head.appendChild(link);
登录后复制

预加载 CSS 并延迟应用

利用 rel="preload" 提前加载资源,等需要时再切换为样式表,实现预加载 + 异步应用。

立即学习前端免费学习笔记(深入)”;

  • <link rel="preload"> 告诉浏览器提前获取 CSS 文件
  • 此时不解析也不应用样式
  • 通过 JS 监听加载完成,再创建真正的 link[rel=stylesheet] 来激活

示例代码:

<link rel="preload" href="async-style.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
登录后复制

或手动控制:

知我AI
知我AI

一款多端AI知识助理,通过一键生成播客/视频/文档/网页文章摘要、思维导图,提高个人知识获取效率;自动存储知识,通过与知识库聊天,提高知识利用效率。

知我AI 101
查看详情 知我AI
const preloadLink = document.createElement('link');
preloadLink.rel = 'preload';
preloadLink.as = 'style';
preloadLink.href = 'async-style.css';
preloadLink.onload = () => {
  const styleLink = document.createElement('link');
  styleLink.rel = 'stylesheet';
  styleLink.href = 'async-style.css';
  document.head.appendChild(styleLink);
};
document.head.appendChild(preloadLink);
登录后复制

使用 media 属性延迟非关键 CSS

将非关键 CSS 的 media 设置为一个默认不匹配的条件,使其异步加载。

例如:

<link rel="stylesheet" href="print.css" media="print">
<link rel="stylesheet" href="non-critical.css" media="not all" onload="this.media='all'">
登录后复制

页面加载后通过 JS 将 media 改为 all,触发样式应用。这样初始渲染不受影响。

结合 load 事件优化用户体验

为了避免样式突然变化(FOUC),可以在 CSS 加载完成后再显示相关内容。

  • 给 body 或容器加一个 loading-styles
  • 在 CSS 加载完成后移除该类,启用样式
  • 可配合骨架屏或过渡动画提升体验

示例:

link.onload = () => {
  document.body.classList.remove('loading-styles');
};
登录后复制

基本上就这些方法。核心思路是:不让 CSS 阻塞 HTML 解析,通过 JS 控制加载时机和应用时机,尤其适用于非首屏、主题、第三方组件等非关键样式。注意权衡异步带来的 FOUC 风险,合理使用 media、preload 和动态注入策略。不复杂但容易忽略细节。

以上就是在css异步加载样式如何处理的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号