#javascript #html #css #scroll
#javascript #HTML #css #прокрутка
Вопрос:
У меня есть #outer
div, который можно прокручивать по горизонтали. Я хочу, чтобы, когда пользователь прокручивает каждый из своих дочерних div, его дочерний div становился розовым. Прямо сейчас, только когда пользователь передает последний дочерний div, все они становятся розовыми. как я могу это исправить?
Спасибо!
Моя функция:
function makeVisible () {
let outer = document.getElementById('outer');
let outers = document.querySelectorAll('#outer div');
for (let i = 0; i < outers.length; i ) {
if (outer.scrollLeft > outers[i].offsetWidth) {
outers[i].style.background = 'pink';
}
}
}
Пример:
function makeVisible() {
let outer = document.getElementById('outer');
let outers = document.querySelectorAll('#outer div');
for (let i = 0; i < outers.length; i ) {
if (outer.scrollLeft > outers[i].offsetWidth) {
outers[i].style.background = 'pink';
}
}
}
#outer {
width: 500px;
height: 100px;
white-space: nowrap;
position: fixed;
top: 20%;
overflow-x: scroll;
overflow-y: hidden;
-webkit-overflow-scrolling: touch;
}
#outer div {
transition: 1s ease;
width: 24.5%;
vertical-align: middle;
background: #eee;
float: none;
height: 90%;
margin: 0 0.25%;
display: inline-block;
zoom: 1;
}
#outer div img {
vertical-align: middle;
display: inline-block;
width: 20px;
height: 20px;
}
<div id='outer' onscroll='makeVisible()'>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
</div>
Комментарии:
1. Должно ли это быть
if (outer.scrollLeft > outers[i].offsetLeft)
илиif (outer.scrollLeft > outers[i].offsetLeft outers[i].offsetWidth)
2. @CraftedPod оба «если» заканчиваются тем, что несколько ячеек слева становятся розовыми. Что именно OP хочет здесь иметь? Я не уверен.