* {font-family:'Lato'}和js

时间:2018-02-06 13:37:08

标签: javascript css

我想用JS设置全局字体。

目前css:

* {
    font-family: 'Lato'
}

只有在我使用*时才有效。使用身体而不起作用

如果对于这样的身体,我可以改变:

document.body.style.fontFamily = "Lato"

但我想要一个*选择器的js版本。

1 个答案:

答案 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的“类数组对象”部分。)