К сожалению, вы не можете сделать это просто с помощью CSS.
Один из способов сделать это - дублировать дочерние элементы внутри прокручиваемого контейнера и прыгать назад влево, когда исходные дочерние элементы полностью невидимы.
Я добавил к вашему фрагменту код JS, который дублирует вашу таблицу и использует API-интерфейс Intersection Observer , чтобы определить, когда исходная таблица больше не видна, и прокрутить его влево .
const scroll = document.querySelector('.scroll');
const table1 = scroll.querySelector('table');
// Create a copy of the table and adds it to the scrollable element
const table2 = table1.cloneNode(true)
scroll.appendChild(table2);
const options = {
root: scroll,
rootMargin: '0px',
threshold: 0
}
const callback = (entries) => {
if (!entries[0].isIntersecting) {
// table1 is out of bounds, we can scroll back to it
scroll.scrollLeft = 0;
}
}
const observer = new IntersectionObserver(callback, options);
observer.observe(table1);
<style type="text/css">.auto-style1 {
border-width: 0px;
}
.pagewrap {
background-color: silver;
width: 150px;
margin: 0 auto;
}
.scroll {
overflow-x: scroll;
display: flex;
}
.auto-style2 {
border: 1px black solid;
}
</style>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="en-gb" http-equiv="Content-Language" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>
</head>
<body>
<div class="pagewrap">
<div class="scroll">
<table class="auto-style1" style="width: 90%;">
<tr>
<td class="auto-style2">1</td>
<td class="auto-style2">2</td>
<td class="auto-style2">3</td>
</tr>
<tr>
<td class="auto-style2">123456</td>
<td class="auto-style2">123456</td>
<td class="auto-style2">123456789</td>
</tr>
</table>
</div>
</div>
</body>
</html>