Хочу добавить анимацию плавного вычеркивания для элемента li после клика по нему, но не могу понять где нужно устанавливать transition чтобы это сделать, т.к не в дочерним, ни в родительском элементе это не работает. Как можно это сделать?
<ul class="todo-list">
<li class="task"
id="breakfest"
onclick="deleteItem('breakfest')">
Позавтракать</li>
<li class="task"
id="teeth"
onclick="deleteItem('teeth')">
Почистить зубы</li>
<li class="task"
id="call"
onclick="deleteItem('call')">
Перезвонить Геннадию</li>
</ul>
function deleteItem(item) {
document.getElementById(`${item}`).style.textDecoration = "line-through";
}
.task {
transition: 1s;
}
jsbin
text-decoration, который выполняет роль перечёркивания текста, вроде как, с анимацией не дружит.
По этому есть вот такой вариант, для "вычёркивания" текста использовать псевдо-элемент.
function deleteItem(item) {
document.getElementById(`${item}`).className = 'task del';
}
.task {
display: inline-block;
position: relative;
}
.task::after {
content: '';
display: block;
width: 0;
height: 2px;
background: #07f;
position: absolute;
left: 0;
top: calc(65% - 2px);
right: 0;
opacity: 0;
transition: all linear .2s;
}
.task.del::after {
opacity: 1;
width: 100%;
}
<ul class="todo-list">
<li class="task" id="breakfest" onclick="deleteItem('breakfest')">
Позавтракать</li><br>
<li class="task" id="teeth" onclick="deleteItem('teeth')">
Почистить зубы</li><br>
<li class="task" id="call" onclick="deleteItem('call')">
Перезвонить Геннадию</li>
</ul>
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости