动态加载css的方法

2024-06-12

我很早就知道,您可以使用 addRule() 和 insertRule() 动态地将样式规则加载到页面中,具体取决于它是 IE 还是兼容标准的浏览器。但我刚刚发现,在 Chrome 上,一种更通用(对我来说)的方法效果很好:创建一个 style 元素,用任意 css 文本向其添加一个 texnode(它可以是 css 文件的内容),然后将其添加到文档中。您还可以通过从文档中删除该样式节点来删除它。例如,当我向它发送字符串“div {background-color: red; }\n p {font-family: georgia; }”时,该函数工作正常:

var applyCss = function (cssString) {
  var scriptNode = document.createElement('style');
  scriptNode.appendChild(document.createTextNode(cssString));
  document.getElementsByTagName('head')[0].appendChild(scriptNode);
  return scriptNode;
};

虽然我了解在某些情况下基于规则执行此操作的好处,但这种快捷方式(类似于使用innerHTML,而不是使用 DOM 技术逐部分构建元素)在很多情况下对我特别有用,如果我可以指望它能发挥作用。

是否始终得到支持?这种方法有什么缺点吗?我特别好奇,因为我从未在任何地方看到过这种方法的建议。


您不会在任何地方看到这种方法被提及或建议的主要原因是因为它是不必要的。而不是不断尝试编辑style元素,您应该有一组动态添加和从元素中删除的类。

根据我的经验,动态添加带有文本的样式元素可以跨浏览器工作。到目前为止,我还没有找到一个不能使用以下内容的浏览器:

//jQuery for brevity
$('<style>p{margin:0}</style>').appendTo('head');

The only我曾经需要这个的情况是添加一大组非常特定的样式以与书签一起使用。否则,我将动态添加样式表:

$('<link rel="stylesheet" type="text/css" href="path/to/stylesheet.css />').appendTo('head');

但实际上,样式表应该已经存在于 HTML 中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态加载css的方法 的相关文章

  • CSS 粘性位置在移动设备上无法正常工作

    我的 OpenCart 2 3 0 2 网站上有一个带有粘性购物车按钮的按钮 这个想法是只有一个页面可以订购 只有几个三明治 不需要类别和产品页面 所以我添加了一个位于页面右上角的购物车按钮 cart position fixed top
  • 网页CSS覆盖ckeditor 3样式

    我有一个加载 screen css 的页面 其中包含evil规则 由于各种原因我无法删除或修改 a background red important I use CK编辑器3 x http ckeditor com 在同一页面上 问题是 无
  • 停止倒数计时器 Javascript onClick

    给出以下代码 myButton02 click function myButton02 hide counter animate width toggle var count 65 var counter setInterval timer
  • 我们可以为 border-bottom 属性设置渐变颜色吗? [复制]

    这个问题在这里已经有答案了 我们可以添加渐变颜色吗border bottomhtml块元素的属性 边框应该与此类似 谁能告诉我这在 CSS3 中是可能的吗 我像这样尝试过 但无法让它工作 border gradient border bot
  • JavaScript - babel-preset-env 不为 IE11 转换箭头函数

    我很难尝试配置 Babel 来转译 IE11 可以理解的代码 特别是箭头函数 跑步npx webpack mode development使用我的配置不会转换我的代码中的箭头函数 在eval 在生成的代码中的语句中 我可以看到所有实例都未转
  • 按周将对象数组拆分为组

    我有一个包含这样的数据的对象数组 date 01 01 2017 00 00 00 dataField1 dataField2 date 01 02 2017 00 00 00 dataField1 dataField2 date 01 1
  • 在浏览器开发工具中看不到SignalR流量

    我构建了使用 SignalR 的服务器和客户端代码 该网站运行完美 但我无法在任何浏览器 chrome IE Firefox 中看到网络流量 我知道网络流量在那里 因为该网站正在运行 有没有办法在浏览器中查看 SignalR 流量 如果不是
  • Chrome 扩展程序导致 DOM 闪烁,该扩展程序会在页面加载之前删除 DOM 元素

    我正在编写一个 chrome 扩展 我想在页面加载之前删除内容 例如this http tech blog tomchambers me 2016 01 13 How to write a simple page rewriting Chr
  • 多个模板槽的相同槽内容

    在vuejs中 有没有一种方法可以为多个插槽设置相同的内容 而无需复制粘贴 So this
  • 我以为我了解范围

    有人可以告诉我为什么 x 的最后一次记录等于0而不是1 我想因为它是在函数之外声明的 所以它具有全局范围 然后在函数中它的值设置为1并且该值将保持原样一个全球性的 我知道函数内的第一个 x 值是全局的 因为没有 var 关键字声明的任何变量
  • 将变量从一个 jsp 发送到另一个 jsp

    我有一个 JSP 文件jsp 1 jsp和另一个 JSP 文件jsp 2 jsp 我已经包括了jsp 2 jsp in jsp 1 jsp using 现在我需要某个元素上的单击事件 在该事件中 我想将字符串变量传输到包含的 jsp 中 假
  • Netlify 正在显示我的 Gatsby 网站的 html 版本

    网站建设位于https 5efbc255ca51be00080b5219 epic raman 086510 netlify app https 5efbc255ca51be00080b5219 epic raman 086510 netl
  • Twitter Bootstrap:按钮下拉列表中的图标

    Here http jsfiddle net DjHyQ 是 jsfiddle 上的链接 其中包含一些演示 它在 Chrome 甚至 IE 中运行良好 但在 FF 中图标会下降 我怎样才能解决这个问题而不用负边距或类似的东西来提升它们 我不
  • 如何使 :focus, :active 与 :hover 相同

    有没有简单的方法使 focus 和 active 表现得像 hover 通常我写 class a hover class a active class a focus 但我只想写一个 hover 规则 并且 focus active 看起来
  • 使用预先存在的数据库创建 PhoneGap iOS 应用程序

    我最近开始开发一个使用 PhoneGap 版本 2 8 0 作为药物查找器的应用程序 过去 我创建了该工具的 Web 版本 它使用 jQuery Mobile 和 PHP 来访问远程 SQL 数据库 PhoneGap 似乎是一个很有吸引力的
  • jQuery 分钟和秒倒计时器

    我想创建一个 jquery 倒计时器 我尝试了以下代码 但它不起作用 我该怎么办 DEMO https jsfiddle net tbosn210 https jsfiddle net tbosn210 var interval setIn
  • 如何使用 $.ajax 发送 JSON 而不是查询字符串?

    有人可以简单地解释一下如何让 jQuery 发送实际的 JSON 而不是查询字符串吗 ajax url url dataType json I was pretty sure this would do the trick data dat
  • Javascript 或 Coffeescript 中的“Bucket Fill”算法

    我正在编写一个小coffeescript js应用程序 允许用户设计图标 16x16像素或32X32像素 该图标实际上是一个带有颜色单元的二维数组 单元格可以有颜色或为空 我希望用户能够使用 桶油漆 工具填充空白单元格 代表着 如果用户单击
  • Chrome 开发工具准确计算 CSS 规则值

    无论如何 例如我可以获取要在 Chrome 开发工具中显示的字体的确切像素值 带小数位 吗 In Firebug 如下 当我定义 value 它显示精确的计算值 以像素为单位 最多 4 位小数 In Chrome 开发工具 如下 它仅显示整
  • 删除移动设备上的 adsense

    我正在研究响应式设计 但在使用 adsense 时遇到了问题 我有一个广告应该显示在桌面设计上 但不能显示在移动设计上 因此 只有在桌面上查看网站时 才应将广告代码放置在 html 中 css 可以使用 display none 但这违反了

随机推荐

  • SmartGIT 不要求 ssh 密钥

    切换到新计算机后 我必须再次安装 Windows 版 SmartGIT 现在尝试克隆我的 fedorahosted org repository 密钥存储在 C User myusername ssh SmartGIT 附带了全新安装 并且
  • 安装 Pillow 和 PIL

    I have Ubuntu 12 04 http en wikipedia org wiki List of Ubuntu releases Ubuntu 12 04 LTS 28Precise Pangolin 29 Precise Pa
  • sonar project.properties 忽略包含正则表达式的文件

    我试图排除声纳 project properties 文件中包含生成代码的文件 我已添加以下内容project properties sonar issue ignore allfile generated GeneratedCodeAtt
  • ES6 中 const 对象键的命名约定

    es6 中 const 对象内的键名是否有推荐的命名约定 我无法找到说明它们应该是大写还是小写的资源 const COLOR CODES BLUE 1 RED 1 vs const COLOR CODES blue 1 red 1 例子 h
  • Chart.JS 中缺失数据的虚线(spanGaps 样式)

    我有一个图表 其中的数据点为空 Chart js 做了正确的事情并跳过了这些数据点 但我希望用 虚线 填充缺失的部分 例如 在下面的代码中 该线应该像 CodePen 链接中那样是实线 但应该是从 蓝色 到 黄色 的虚线 我知道spanGa
  • 将 PostgreSQL 扩展安装到所有模式

    我在 PostgresQL 9 1 1 上尝试扩展unaccent http www postgresql org docs 9 1 static unaccent html适用于所有模式 所以我运行了命令CREATE EXTENSION
  • AttributeError:模块“keras.engine”没有属性“Layer”

    当我试图运行时Parking Slot mask rcnn py文件我收到如下错误mrcnn model py文件我该如何解决 gt 2021 06 17 08 25 18 585897 W tensorflow stream execut
  • 通过 C# 的 Symbian

    是否可以使用 C 为 Symbian 构建程序 答案是肯定的 如果您使用 Net60 应用程序https www red Fivelabs com default aspx https www redfivelabs com default
  • 有没有办法使用 win API 获取 HRESULT 值的字符串表示形式?

    win API 中是否有函数可用于提取 HRESULT 值的字符串表示形式 问题是 MSDN 中并未记录所有返回值 例如执行默认应用程序域 http msdn microsoft com en us library ms164411 asp
  • 是否有与 Java 的 IdentityHashMap 等效的 Python 版本?

    我正在遍历一个数据结构 想要构建一个映射 X gt Y 的字典 其中 X 是我正在遍历的数据结构中的一个字段 Y 是我正在动态构建的数据结构中的一个字段 X 是不可散列的类型 Java的IdentityHashMap的目的是模拟动态字段 由
  • EF 中的 GUID COMB 策略

    有没有办法使用 CodeFirst 设计为新的 Entity Framework 4 1 中的对象实现 Guid COMB 身份策略 我想设置StoreGeneratedPattern可以 但它仍然给我正常的 GUID 为什么要担心数据库中
  • iphone facebook app 如何修复导航栏

    我是 iPhone 开发新手 想询问有关导航控制器的问题 如何使导航控制器固定在整个应用程序上 例如 Facebook 导航栏 它始终在导航栏中显示通知 好友和消息 我试图将自定义视图放入 titleView 但每次导航推送新视图时它都会消
  • Pandas 中的索引如何工作?

    我是Python新手 这似乎是一个需要问的基本问题 但我真的很想了解这里发生了什么 import numpy as np import pandas as pd tempdata np random random 5 myseries on
  • 单元测试:独立测试与代码重复(DRY)

    我正在迈出单元测试的第一步 并且不确定在单元测试中似乎相互矛盾的两个范式 即 每个单元测试都应该是独立的 不依赖于其他单元测试 不要重复自己 更具体地说 我有一个要测试的导入器 导入器具有 导入 功能 获取原始数据 例如 从 CSV 中取出
  • 模板化递归数据类型

    我有一个像这样的递归数据类型 template
  • 如何从 Javascript 访问 Oracle Apex 变量?

    我正在使用 Oracle APEX 但不确定如何从外部 javascript 文件访问以下变量 该文件可能位于应用程序服务器上或存储在共享组件 gt 静态文件中 APP ID APP PAGE ID APP SESSION 如何从 java
  • Solr 7.x 支持 Java 11 吗?

    目前我们的应用程序使用 Spring Data Solr Apache Solr 5 3 Java 8 运行 我们正在将系统升级到 Java 11 Spring Data Solr 和 Apache Solr 最新版本是否支持 Java 1
  • 如何获取 bson 文档的大小(以字节为单位)

    bson文档的size 函数返回的int值是字节数吗 无法找到此 API 的详细信息 如何获取 bson 文档的大小 以字节为单位 这是我的代码 import org bson Document MongoDatabase db Mongo
  • 直观地执行不同的排序算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 动态加载css的方法

    我很早就知道 您可以使用 addRule 和 insertRule 动态地将样式规则加载到页面中 具体取决于它是 IE 还是兼容标准的浏览器 但我刚刚发现 在 Chrome 上 一种更通用 对我来说 的方法效果很好 创建一个 style 元