Css 不同字体的不同字体重量
我在我的网站上使用了Css 不同字体的不同字体重量,css,fonts,Css,Fonts,我在我的网站上使用了Bold、Medium和Normal字体权重,分别是700、500和400 我使用Helvetica Neue字体,作为未安装该字体的系统的备用方案,我希望使用Open SAN。问题是opensans没有Medium样式 如果浏览器使用Open Sans,我希望以前定义为font-weight:500的元素具有font-weight:600。有可能吗 堆栈溢出也有一个类似的问题:但我无法使用公认答案中描述的技术获得所需的结果 我需要像这样的东西 @font-face {
Bold
、Medium
和Normal
字体权重,分别是700
、500
和400
我使用Helvetica Neue
字体,作为未安装该字体的系统的备用方案,我希望使用Open SAN
。问题是opensans
没有Medium
样式
如果浏览器使用Open Sans
,我希望以前定义为font-weight:500
的元素具有font-weight:600
。有可能吗
堆栈溢出也有一个类似的问题:但我无法使用公认答案中描述的技术获得所需的结果
我需要像这样的东西
@font-face {
font-family: 'semibold';
src: 'Helvetica Neue':500, 'Open Sans':600;
}
但不知道该怎么做。您不能在字体声明中真正定义权重。相反,
font-weight
在那里使用,而不是将样式传递给元素
这似乎有些过分,但您可以以此为起点来查看字体是否可用,然后根据最适合您特定需求的逻辑有条件地修改字体的重量
对于仅使用这两种字体的简化示例,您可以如下设置CSS:
@font-face {
font-family: h-semibold;
src: local('Helvetica Neue');
}
@font-face {
font-family: os-semibold;
src: local('Open Sans');
}
.semibold {
font-family: h-semibold, os-semibold;
}
.w5 {
font-weight: 500;
}
.w6 {
font-weight: 600;
}
然后,使用上面链接的函数,在JS中放入类似的内容,根据字体支持有条件地加载权重类:
var semibold = document.querySelectorAll('.semibold');
if (isFontAvailable('h-semibold')) {
semibold.forEach(result => {
result.className += ' ' + 'w5';
});
} else {
semibold.forEach(result => {
result.className += ' ' + 'w6';
});
}
如果你真的需要执行它,你无疑会找到一个更优雅的解决方案。但是没有JS代码有什么办法可以做到吗?我认为它在SPA中不会很好地工作,在SPA中,页面的某些部分可以动态添加,但仍然有不正确的css类。