width: 300px; height: 120px)。CSS 無「內容感知」能力,無法根據子元素總寬高反推 font-size。必須借助 JavaScript 計算。
<div id="station-board" class="board">
<div class="station-row"><span>北京西站</span><span>北京南站</span></div>
<div class="station-row"><span>石家莊站</span></div>
...
</div>
.board {
width: 300px; height: 120px;
font-size: calc(12px + 2vw); /* 根據視口寬度縮放,非內容感知 */
}
@media (max-width: 400px) { .board { font-size: 14px; } }
缺點:無法保證任意數據量下完美填滿,需人工調試斷點。
.station { width: 80px; } .board { display: flex; flex-wrap: wrap; width: auto; } → 綠色區域寬度隨站點數變化,高度固定或自適應。animation: marquee 20s linear infinite。requestAnimationFrame 包裹 fitText,避免佈局抖動。clientWidth/Height,減少重排。「固定盒子 + 任意內容 + 文字自適應填滿」是典型的需 JS 參與的佈局。採用二分查找字號演算法,兼容動態數據更新、窗口縮放,體驗最佳。若業務允許,調整佈局策略(容器自適應)可完全 CSS 化,維護成本更低。