每次加载页面时如何更改 Web 元素的字体?

How can I change the font of a web element everytime the page is loaded?

我在一个网站上工作,我想弄清楚每次有人加载页面时如何更改字体。文本的内容是一样的,但是每次访问网站时字体都会不同。

有没有办法让特定的文本元素在网页上的 7-8 种字体之间随机循环?

我用了三种字体,但你可以用同样的想法使用七八种。首先,在 CSS:

中定义所有字体
@font-face {
    font-family: RandomFont1;
    src: url(./font1.woff);
}
@font-face {
    font-family: RandomFont2;
    src: url(./font2.woff);
}
@font-face {
    font-family: RandomFont3;
    src: url(./font3.woff);
}

然后创建 CSS 变量来存储(随机)选择的字体。还创建一个使用该字体的类名。

/* this stores the selected font */
:root {
    --randomFont: RandomFont1;
}

/* all elements that have this class will use the selected font */
.random-font {
    font-family: var(--randomFont);
}

最后添加一些 JavaScript 来随机选择一种字体来使用。

function randomInteger(min, max) {
    return Math.floor(Math.random() * (max-min+1) + min);
}

// if you have seven fonts, replace 3 in the next line with 7
var fontIndex = randomInteger(1, 3);
document.documentElement.style.setProperty("--randomFont", "RandomFont"+fontIndex);

这是我刷新网站时的结果:

你可以做的是有一个字体系列声明的列表,你可以从中选择,然后在加载时调用一些 Javascript 来获取一个随机数并选择其中一个。

然后 JS 可以设置一个 CSS 变量,比如 --font-family,这是您的样式 sheet(s).

中使用的变量

这是一个简单的例子:

const fontFamilies = ["Arial, Helvetica, sans-serif", "'Times New Roman', serif", "Courier, monospace" ];
const i = Math.floor(Math.random() * fontFamilies.length);
document.body.style.setProperty('--font-family', fontFamilies[i]);
body {
  font-family: var(--font-family);
}
 Some text to show change in font-family