在表单开发中,我们往往会因为label字数不同而无法保证不换行的情况下还要对齐。怎么解决呢?当然是上脚本来处理。
function adjustNodesWidthToBeSame(selector) { const getTextWidth = (text, font) => { const canvas = document.createElement('canvas'); const context = canvas.getContext('2d'); context.font = font; const dism = context.measureText(text); return dism.width; }; const labels = document.querySelectorAll(selector); const items = Array.from(labels); let maxWidth = 0; items.forEach((item) => { const text = item.innerText; const { font } = window.getComputedStyle(item); const width = getTextWidth(text, font); maxWidth = Math.max(maxWidth, width); }); items.forEach((item) => { /* eslint-disable no-param-reassign */ item.style.width = `${maxWidth}px`; }); }
将这个函数在整个界面上的label发生变化的时候执行,它就会自动调整label的宽度来适配最长的那一个。