diff --git a/packages/stats/app/src/routes/compare/[firstLab]/[firstModel]/[secondLab]/[secondModel].tsx b/packages/stats/app/src/routes/compare/[firstLab]/[firstModel]/[secondLab]/[secondModel].tsx index 104b0ebb1e..34fda33146 100644 --- a/packages/stats/app/src/routes/compare/[firstLab]/[firstModel]/[secondLab]/[secondModel].tsx +++ b/packages/stats/app/src/routes/compare/[firstLab]/[firstModel]/[secondLab]/[secondModel].tsx @@ -150,6 +150,8 @@ export default function ModelComparePair() { const [themePreference, setThemePreference] = createSignal("system") const [highlightBest, setHighlightBest] = createSignal(true) const [addingModel, setAddingModel] = createSignal(false) + let comparisonHeadingScroll: HTMLDivElement | undefined + let comparisonBodyScroll: HTMLDivElement | undefined const models = createMemo( () => modelSelections().map((model, index) => @@ -188,6 +190,9 @@ export default function ModelComparePair() { if (typeof window === "undefined" || next.length < 2) return window.location.href = comparisonModelsHref(next) } + const syncComparisonScroll = (source: HTMLDivElement, target: HTMLDivElement | undefined) => { + if (target && target.scrollLeft !== source.scrollLeft) target.scrollLeft = source.scrollLeft + } const structuredData = createMemo(() => JSON.stringify({ "@context": "https://schema.org", @@ -260,8 +265,18 @@ export default function ModelComparePair() { data-model-count={models().length} style={`--compare-detail-grid: ${comparisonDetailGridTemplate(models().length)}`} > -
+
(comparisonHeadingScroll = element)} + onScroll={(event) => syncComparisonScroll(event.currentTarget, comparisonBodyScroll)} + > +
+
(comparisonBodyScroll = element)} + onScroll={(event) => syncComparisonScroll(event.currentTarget, comparisonHeadingScroll)} + >