s24344,
возможный вариант...
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.section__container {
max-width: 1366px;
margin: 0 auto;
display: flex;
}
.section__col-1 {
width: 60%;
}
.section__col-2 {
width: 40%;
}
.section__reverse-order {
display: flex;
justify-content: flex-end;
background-color: #61bfad;
padding: 20px;
border-bottom: 1px solid #167c80;
}
.section__reverse-order-btn {
min-width: 184px;
border: 1px solid #52526c;
background-color: transparent;
color: #ffffff;
border-radius: 100px;
cursor: pointer;
padding: 8px;
}
.section__weather-panel {
background-color: #61bfad;
padding: 20px;
color: #ffffff;
}
.section__groups {
max-height: 1200px;
overflow-y: auto;
}
.section__groups-section {
min-height: 200px;
transition: 1s .6s;
}
.section__groups-section:nth-child(odd) {
background-color: #eeeeee;
}
.section__groups-section:nth-child(even) {
background-color: #e0e0e0;
}
.section__col-2 {
background-color: #167c80;
}
.section__groups-section.red{
background-color: #FF0000;
}
</style>
</head>
<body>
<div class="app">
<div class="app__inner">
<main class="main">
<section class="section" data-component="section">
<div class="section__container">
<div class="section__col-1">
<div class="section__reverse-order"></div>
<div class="section__weather-panel" data-section-ref="weather-panel">
<div class="section__weather-panel-data">
data
</div>
</div>
<div class="section__groups" data-section-ref="groups">
<div class="section__groups-section" data-section-ref="groups-section">
<div class="section__groups-data">
07.15
</div>
</div>
<div class="section__groups-section" data-section-ref="groups-section">
<div class="section__groups-data">
07.30
</div>
</div>
<div class="section__groups-section" data-section-ref="groups-section">
<div class="section__groups-data">
07.45
</div>
</div>
<div class="section__groups-section" data-section-ref="groups-section">
<div class="section__groups-data">
08.00
</div>
</div>
<div class="section__groups-section" data-section-ref="groups-section">
<div class="section__groups-data">
08.15
</div>
</div>
<div class="section__groups-section" data-section-ref="groups-section">
<div class="section__groups-data">
08.30
</div>
</div>
<div class="section__groups-section" data-section-ref="groups-section">
<div class="section__groups-data">
08.45
</div>
</div>
<div class="section__groups-section" data-section-ref="groups-section">
<div class="section__groups-data">
09.00
</div>
</div>
<div class="section__groups-section" data-section-ref="groups-section">
<div class="section__groups-data">
09.15
</div>
</div>
<div class="section__groups-section" data-section-ref="groups-section">
<div class="section__groups-data">
09.30
</div>
</div>
<div class="section__groups-section" data-section-ref="groups-section">
<div class="section__groups-data">
09.45
</div>
</div>
<div class="section__groups-section" data-section-ref="groups-section">
<div class="section__groups-data">
10.00
</div>
</div>
</div>
</div>
<div class="section__col-2">
<div class="section__table">
</div>
</div>
</div>
</section>
</main>
<footer class="footer">
footer
</footer>
</div>
</div>
<script>
class Section {
constructor(element) {
this.element = element;
this.weatherPanel = this.element.querySelector('[data-section-ref="weather-panel"]');
this.groups = this.element.querySelector('[data-section-ref="groups"]');
this.groupsSection = [...this.element.querySelectorAll('[data-section-ref="groups-section"]')];
this.init();
this.temp = this.groupsSection[0]
}
init() {
this.groups.addEventListener('scroll', this.move.bind(this));
}
checkDistance(elem){
let posParent = this.groups.getBoundingClientRect();
let posElem = elem.getBoundingClientRect();
if(posElem.top + posElem.height >= posParent.top && posElem.top < posParent.bottom ) elem.classList.add("act");
else elem.classList.remove("act");
}
move(event) {
this.groupsSection.forEach(this.checkDistance.bind(this));
let first = this.element.querySelector('.act') //первый видимый
if (first != this.temp ) {
this.temp.classList.remove("red");
this.temp = first;
this.temp.classList.add("red");
}
}
}
const section = new Section(document.querySelector('[data-component="section"]'));
</script>
</body>
</html>