const blocks = ref(Array.from({ length: 5 }, (_, i) => (-~i) ** 2));
const active = ref(0);
function next() {
active.value = (active.value + 1 + blocks.value.length) % blocks.value.length;
}
let intervalId = null;
onMounted(() => intervalId = setInterval(next, 500));
onUnmounted(() => clearInterval(intervalId));
<div
v-for="(n, i) in blocks"
v-text="n"
:class="[ 'box-item', { active: i === active } ]"
></div>
:nth-child
- не круто. Лучше сделать компонент, принимающий массив цветов и создающий блоки на его основе. Соответственно, вместо класса будет назначаться цвет фона напрямую, как-то так:<div
v-for="(n, i) in colors"
:style="{ backgroundColor: i === active ? n : '' }"
...
if (!$(e.target).hasClass('menu-click')) funk(false);
проверяете на класс .menu-click
, тк у бургера этого класса нет, он закрывается..comment-item.active .comment-item__form {
display: block;
}
const itemSelector = '.comment-item';
const buttonSelector = '.comment-item__reply';
const activeClass = 'active';
document.addEventListener('click', e => {
const item = e.target.closest(buttonSelector)?.closest(itemSelector);
if (item) {
document.querySelectorAll(itemSelector).forEach(n => {
n.classList.toggle(activeClass, n === item);
});
}
});
...
success: function(obj) {
send = true;
$article_list.append(obj);
// Сразу после добавления элементов
const players = Array.from(document.querySelectorAll('#videoPlay')).map(p => new Plyr(p));
const plyrs = Array.from(document.querySelectorAll('#plyrVideo')).map(plyrs => new Plyr(plyrs));
},
...
const rotues = [
{
// :user_input = "то что ввел пользователь"
path: '/:user_input',
name: 'UserPage',
component: UserPage
}
]
created() {
const user_input = this.$route.params.user_input
this.$api.getUser(user_input)
}