不用给我爱,不用给我钱,不用给我声誉,给我真理吧。——梭罗的《瓦尔登湖》
一般可以使用vw
或者em
一类的属性来适配,但如果还需要更小,就只能使用scale
缩放了,例如使用js
function scaleMemberName(memberElement: Element | null, reset: boolean) {
if (!memberElement) {
return;
}
const nameElement = memberElement.querySelector('.name');
if (!(nameElement instanceof HTMLDivElement)) {
return;
}
if (reset) {
nameElement.style.scale = String();
return;
}
const boundingBox = nameElement.getBoundingClientRect();
const actualWidth = boundingBox.width;
const scale = 84 / actualWidth;
console.log({ [`${nameElement.textContent}`]: actualWidth, scale });
if (scale >= 1) {
return;
}
nameElement.style.scale = String(scale);
}
onMounted(() => {
document
.querySelectorAll('.member')
?.forEach((d) => scaleMemberName(d, false));
});
效果如下: