Я придумал что-то простое, что помогло мне с проблемой заполнения, основанной на размере шрифта. Я хотел сместить <td>
на основе строкового префикса в строке выше. Клифф отмечает версию, я добавляю текст, который представляет желаемое смещение в промежутке и делаю его невидимым и невыбираемым. Мое решение здесь:
.hiddenOffset {
opacity: 0;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
cursor: default;
}
<table>
<tr>
<td>NumElements</td>
</tr>
<tr>
<td><span class="hiddenOffset">Num</span>Offset Text</td>
</tr>
</table>
Это дает мне идеальное смещение, а префикс скрыт и недоступен для выбора. В моем реальном коде я использую чистый JavaScript, чтобы указать строку префикса, чтобы она не была жестко закодирована, и я использую prefix.repeat(n)
для установки вложенных отступов.
function processRepeatingGroupInstance(indent, group) {
let prefix = 'No';
let html = '';
for (let i = 0; i < group.length; i++) {
let field = group[i];
if (field.hasOwnProperty('msgvaluedesc'))
html += `<tr><td><span class="hiddenOffset">${prefix.repeat(indent)}</span>${field.name}</td><td class="num">${field.number}</td><td class="value tooltip">${field.msgvaluedesc}<span class="tooltiptext">${field.msgvalue}</span></td></tr>`;
else
html += `<tr><td><span class="hiddenOffset">${prefix.repeat(indent)}</span>${field.name}</td><td class="num">${field.number}</td><td class="value">${field.msgvalue}</td></tr>`;
if (field.hasOwnProperty('repeating_group')) {
for (let j = 0; j < field.repeating_group.length; j++)
html += processRepeatingGroupInstance(indent + 1, field.repeating_group[j]);
}
}
return html;
}
