@jianghujs/jianghu
Version:
Progressive Enterprise Framework
51 lines (49 loc) • 1.9 kB
HTML
<!-- fixedTableColV4.html >>>>>>>>> -->
<script>
async function reFixedTableCol() {
// 阻塞等待 100ms
const delay = (ms) => {
return new Promise(resolve => setTimeout(resolve, ms));
}
await delay(100);
// remove old style
let fixedTableColStyle = document.getElementById('fixedTableColV4Style');
if(fixedTableColStyle) {
fixedTableColStyle.remove();
}
// generate new style
let fixedTableColStyleSheet = '<!-- generated by fixedTableColV4.html >>>>>>>>> --><style id="fixedTableColV4Style">';
let tables = document.getElementsByTagName('table');
for(let tableIndex = 0; tableIndex < tables.length; tableIndex++) {
let table = tables[tableIndex];
const className = 'table-fixed-' + (tableIndex + 1);
table.classList.add(className);
let tableThList = table.getElementsByTagName('th');
let left = 0;
for(let tableThIndex = 0; tableThIndex < tableThList.length; tableThIndex++) {
let tableTh = tableThList[tableThIndex];
if(!tableTh.classList || !tableTh.classList.contains('fixed')) {
continue;
}
fixedTableColStyleSheet += `
table.${className} thead th.fixed:nth-child(${tableThIndex + 1}),
table.${className} tbody td.fixed:nth-child(${tableThIndex + 1}) {
position: sticky !important;
position: -webkit-sticky !important;
left: ${left}px !important;
z-index: 10!important;
background: white;
border-right: none;
}
`;
left += tableTh.offsetWidth;
}
}
fixedTableColStyleSheet += '</style><!-- <<<<<<<< generated by fixedTableColV4.html -->';
document.body.insertAdjacentHTML('beforeend', fixedTableColStyleSheet);
}
onload = function() {
reFixedTableCol();
}
</script>
<!-- <<<<<<<<<< fixedTableColV4.html -->