首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以动态创建一个CSSStyleSheet对象并插入它吗?

我可以动态创建一个CSSStyleSheet对象并插入它吗?
EN

Stack Overflow用户
提问于 2011-11-21 16:31:17
回答 6查看 12.4K关注 0票数 22

我知道document.styleSheets,它由页面中所有有效的样式表组成。我想知道我是否可以创建一个新的,并通过javascript将其附加到present list中。

我试过document.styleSheets[0].constructordocument.styleSheets[0].__proto__.constructornew CSSStyleSheetCSSStyleSheet(),我从Chrome上得到的都是TypeError: Illegal constructorCSSStyleSheet.constructor()返回了一个纯对象,可我需要一个CSSStyleSheet对象。

我知道我可以创建一个链接/样式元素并附加它,然后修改它。我想知道的是,我能用javascript直接创建这样的对象吗?

EN

回答 6

Stack Overflow用户

发布于 2014-06-18 20:44:11

我知道你说你不想创建一个元素,但这是真正做到这一点的唯一方法。上面有一些人详细介绍了这种方法,但我注意到没有人提到HTMLStyleElementHTMLLinkElement都有一个整洁的sheet property来直接访问他们的CSSStyleSheet

代码语言:javascript
运行
复制
var style = document.createElement("style");
document.head.appendChild(style); // must append before you can access sheet property
var sheet = style.sheet;

console.log(sheet instanceof CSSStyleSheet);

比通过document.styleSheets搜索简单得多

票数 19
EN

Stack Overflow用户

发布于 2019-01-13 02:27:32

有了a brand new proposal,就可以直接调用CSSStyleSheet构造函数。做你想做的事情看起来像这样:

代码语言:javascript
运行
复制
// Construct the CSSStyleSheet
const stylesheet = new CSSStyleSheet();

// Add some CSS
stylesheet.replaceSync('body { background: #000 !important; }')
// OR stylesheet.replace, which returns a Promise instead

// Tell the document to adopt your new stylesheet.
// Note that this also works with Shadow Roots.
document.adoptedStyleSheets = [stylesheet];

请注意,目前这只适用于Chrome Canary,但希望其他浏览器很快就能实现这一功能。

票数 15
EN

Stack Overflow用户

发布于 2011-11-21 16:41:44

如果您尝试在javascript中编写css,请执行以下操作:

代码语言:javascript
运行
复制
var s = document.createElement('style');
s.type = 'text/css';
s.innerText = 'body { background: #222; } /*... more css ..*/';
document.head.appendChild(s);

然而,如果您正在尝试从服务器加载样式表:

代码语言:javascript
运行
复制
var s = document.createElement('link');
s.type = 'text/css';
s.rel = 'stylesheet';
s.href = '/url/to/css/file.css';
document.head.appendChild(s);
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8209086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档