.btn::after {
transition-duration: 1s;
...
}
.btn:hover::after {
transform: translateX(30px) translateY(-40px);
}
.panel {
padding: 0 15px;
transition: all 0.4s;
height: 0;
overflow: hidden;
}
.faq-item.active .panel {
padding: 15px 15px 20px;
}
.faq-item.active .cross {
transform: rotate(45deg);
}
const containerSelector = '.faq-list';
const itemSelector = '.faq-item';
const headerSelector = '.accordion';
const contentSelector = '.panel';
const activeClass = 'active';
const toggle = item => item
?.closest(containerSelector)
?.querySelectorAll(itemSelector).forEach(n => {
const state = n === item && !n.classList.contains(activeClass);
const content = n.querySelector(contentSelector);
n.classList.toggle(activeClass, state);
content.style.height = `${state ? content.scrollHeight : 0}px`;
});
document.addEventListener('click', e => {
toggle(e.target.closest(headerSelector)?.closest(itemSelector));
});
// или
document.querySelectorAll(headerSelector).forEach(n => {
n.addEventListener('click', toggle.bind(null, n.closest(itemSelector)));
});
Время, которое я задаю, применяется к fadeOut, а вот к runProgress нет
this.fadeOut = `fadeOut ${this.time}s linear forwards`, this.runProgress = `runProgress ${this.time}s liner forwards`,
v-for
. Если изменить значение свойства time и добавить в messages новый элемент, то у тех, что были добавлены раньше, изменится длительность анимации. Наверное, стоит вырезать свойства fadeOut и runProgress, элементам messages при создании добавлять актуальное значение свойства time, типа time: this.time
, и использовать его при задании стилей:methods: {
getStyle: (name, { time }) => ({
animation: `${name} ${time}s linear forwards`,
}),
...
:style="getStyle('fadeOut', message)"
:style="getStyle('runProgress', message)"
когда нажимаю на другой блок, то цвет кнопки не становится прежним
transition: background 9999999s;
:active
вы, очевидно, не разобрались.:checked
. li:not(:first-child, :last-child)
li:not(:first-child):not(:last-child)
li {
/* тут стили для всех элементов */
}
li:first-child,
li:last-child {
/* здесь сбрасываете стили, установленные выше */
}
<div className="todoListMain"> <div className="header">
.todoListMain.header input {
.todoListMain
и .header
куда потерялся? Ну и с остальными стилями косяк тот же. .active {
background: red;
}
document.querySelector('table').addEventListener('change', ({ target: t }) => {
t.closest('tr').classList.toggle('active', t.checked);
});
// или
document.querySelectorAll('table tr').forEach(function(n) {
n.addEventListener('change', this);
}, e => e.currentTarget.classList.toggle('active', e.target.checked));
tr:has(.form-check-input:checked) {
background: red;
}
transition-duration: 0ms;
.transition: none;
.true
, не нужна анимация - false
. Как-то так. .frame {
на .slider /deep/ .frame {
.mounted() { for (let i = 0; i < 3; i++) { let frame = document.createElement("div"); frame.classList.add("frame"); //класс присваивается но стили не применяются this.$refs.slider.appendChild(frame); } },