Анимация вычеркивания после клика

256
11 января 2019, 05:10

Хочу добавить анимацию плавного вычеркивания для элемента 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

Answer 1

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>

READ ALSO
Работа с таблицами в FireBase

Работа с таблицами в FireBase

Как я могу редактировать/добавлять записи в таблицах Firebase? Официальные документация предлагает делать так:

220
помогите тотальному новичку

помогите тотальному новичку

когда я навожу несколько раз на элемент ul то при клике на любой элемент li выводится не конкретный элемент в consolelog а дублирвоанное количество...

237
Как правильно записать алгоритм на JS

Как правильно записать алгоритм на JS

подскажите как правильно записать алгоритм без переменной 'pro'

240