Я создаю веб-сайт с помощью WordPress, поэтому контент создается динамически. Элементы идентификатор также динамически генерируемыеИзменение стиля нескольких объектов с помощью javascript
Каждый контейнер может иметь эти элементы (контейнер может иметь несколько - но не то же самое):
t_1
f_1
f_2
F_3
Я также добавить количество контейнеров в конце идентификатора элементов, поэтому каждый элемент будет иметь уникальный идентификатор
Предположим, PHP создаст такой HTML-код:
<div id="container_1">
<div id=f_1_1>
//content
</div>
<div id=f_2_1>
//content
</div>
</div>
<div id="container_2">
<div id=t_1_2>
//content
</div>
</div>
<div id="container_3">
<div id=f_1_3>
//content
</div>
</div>
Я хотел бы, чтобы оживить положение этих элементов как прокрутке, я добавил Javascript, чтобы сделать это:
var scroll = window.pageYOffset;
window.addEventListener('scroll', function() {
scroll = window.pageYOffset;
requestAnimationFrame(scroll)
}, false)
function scroll() {
document.getElementById("f_1_1").style.top = scroll * 10 + 'px';
}
Так вот проблема, я не знаю, какие элементы я должен получить по ID.
Я думал о создании цикла, где я проверяю каждый контейнер для элементов внутри, однако я думаю, что он будет использовать слишком много ресурсов и будет отставать, поскольку функция запускается каждый раз, когда пользователь прокручивает.
Другое решение, которое я пробовал, заключается в том, чтобы динамически добавлять javascript в каждый контейнер, чтобы я точно знал, какие элементы мне нужны для анимации. Он работал только для первого контейнера, как, когда я добавил следующий контейнер были множественные функции с тем же именем, и только последняя функция была выполнена
<div id="container_1">
<div id=f_1_1>
//content
</div>
<script type="text/javascript">
function scroll() {
document.getElementById("f_1_"+<?php echo $pagecounter?>).style.top = scroll * 10 + 'px';
}
</script>
</div>
Какую анимацию вы хотите сделать? Мне кажется, вы просто хотите, чтобы контент всегда был на экране, что совпадает с использованием позиции: исправлено с помощью css – juvian
. Вы можете просто добавить класс (https://codex.wordpress.org/Function_Reference/post_class) в каждый контейнер и нацелиться только на класс css. Никаких возиться с идами не требуется. – Shilly
Извините, я не могу отформатировать его. Я хотел бы, чтобы все t_1 имели это: 'document.getElementById (" t_1 "). Style.top = scroll * -0.2 + 'px'; ' все f_1: '' document.getElementById ("t_1"). Style.top = scroll * -0.4 + 'px'; ' Второй контейнер будет на следующей странице: 'document.getElementById (" t_1 "). Style.top = windowheight * 1 + прокрутка * -0.2 + 'px'; ' все f_1: 'document.getElementById (" t_1 "). Style.top = windowheight * 1 + прокрутка * -0.4 + 'px'; ' – iwan