<!DOCTYPE html>
<html>
<head>
<style>
* {
box-sizing: border-box;
}
.container {
display: grid;
grid-template-rows: 80px 1fr;
grid-template-columns: 240px 1fr;
height: 400px;
overflow: auto;
}
.head1,
.head2 {
position: sticky;
top: 0;
height: 80px;
background-color: green;
border: 1px solid red;
}
.head1 {
z-index: 1;
}
.head1,
.body1 {
position: sticky;
left: 0;
}
.item {
height: 80px;
background-color: red;
border: 1px solid green;
scroll-margin-top: 80px;
}
.body2 {
width: 1200px;
}
</style>
</head>
<body>
<div class="container">
<div class="head1">1</div>
<div class="head2">2</div>
<div class="body1">
<div class="item" id="target">0</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
</div>
<div class="body2">
<div class="item">0</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
</div>
</div>
<script>
window.scroll = () => {
window.current = document.getElementById('target');
window.current.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
};
</script>
</body>
</html>