我想用JS设置全局字体。
目前css:
* {
font-family: 'Lato'
}
只有在我使用*时才有效。使用身体而不起作用
如果对于这样的身体,我可以改变:
document.body.style.fontFamily = "Lato"
但我想要一个*选择器的js版本。
答案 0 :(得分:3)
您需要附加style
元素才能合理地执行此操作。 (要合理地执行 un ,请浏览页面上的每个元素并通过.style
进行设置。请参阅下文。)
这很容易做到:
var style = document.createElement("style");
style.type = "text/css";
style.appendChild(
document.createTextNode("* { font-family: 'Lato' }")
);
document.head.appendChild(style);
当然,所有正常的CSS规则都适用。具有更具体的规则设置font-family
或.style
属性设置的元素仍将使用该更具体的设置。
这样做的好处是它适用于完成后添加的新元素以及现有元素。
如果 您希望访问页面上的每个元素以在每个元素上明确设置.style.fontFamily
,那么现代浏览器上的快速和脏版本是:
Array.prototype.forEach.call(document.getElementsByTagName("*"), function(el) {
el.style.fontFamily = "Lato";
});
getElementsByTagName("*")
将访问浏览器中文档中所有元素的列表(如果已有);并建立它,如果没有。 (这与querySelectorAll
形成对比,forEach
需要始终构建一个新的。)然后我们通过从Array.prototype
借用cell.imgPackage.sd_setImage(with: URL(string: "MY URL STRING")! as URL, placeholderImage: UIImage(named: "testPlaceholder.png"), options: .refreshCached)
来循环它。 (有关详细信息,请参阅my answer here的“类数组对象”部分。)