Недавно я пытался создать эффект анимации, где я использую переполнение, скрытое в родительском диапазоне, а затем преобразую его в представление. Мой текущий код кажется немного сложным, и мне интересно, есть ли какой-либо другой способ обойти это, учитывая эффект, который я собираюсь использовать на веб-сайте.
$(".in1").addClass("error").delay(125).queue(function(next){
$(this).addClass('in1-active');
});
$(".in2").addClass("error").delay(250).queue(function(next){
$(this).addClass('in2-active');
});
$(".in3").addClass("error").delay(375).queue(function(next){
$(this).addClass('in3-active');
});.inwrap {
overflow: hidden;
display: block;
-webkit-font-smoothing: antialiased;
}
.in1, .in2, .in3{
display: block;
transition: transform 1s cubic-bezier(0,1,.82,1);
transform: translateY(101%);
}
.in1-active, .in2-active , .in3-active {
display: block;
transform: translateY(0px);
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "introduction">
<h2>
<span class = "inwrap"><span class = "in1"><a href = "#about-me">Graphic designer</a> that </span></span>
<span class = "inwrap"><span class = "in2">specializes in <a href = "#days-of-ux">interactive</a></span></span>
<span class = "inwrap"><span class = "in3"> design and <a href = "#struggle-magazine">print</a></span></span>
</h2>
</div>


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Нет необходимости обрабатывать отдельный клик. Вы можете использовать подстановочный знак и обрабатывать все клики по одному.
$('[class^=in]').addClass("error").delay(125).queue(function(next) {
var cls = $(this).attr('class');
cls = cls + "-active";
$(this).addClass(cls);
});.inwrap {
overflow: hidden;
display: block;
-webkit-font-smoothing: antialiased;
}
.in {
display: block;
transition: transform 1s cubic-bezier(0,1,.82,1);
transform: translateY(101%);
}
.in-active{
display: block;
transform: translateY(0px);
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "introduction">
<h2>
<span class = "inwrap"><span class = "in1"><a href = "#about-me">Graphic designer</a> that </span></span>
<span class = "inwrap"><span class = "in2">specializes in <a href = "#days-of-ux">interactive</a></span></span>
<span class = "inwrap"><span class = "in3"> design and <a href = "#struggle-magazine">print</a></span></span>
</h2>
</div>Вместо этого нашел способ использовать setTimeout.
$('.in').each(function(i){
var row = $(this);
setTimeout(function() {
row.addClass('in-active');
}, 150*i);
});.inwrap {
overflow: hidden;
display: block;
-webkit-font-smoothing: antialiased;
}
.in {
display: block;
transition: transform 1s cubic-bezier(0,1,.82,1);
transform: translateY(101%);
}
.in-active{
display: block;
transform: translateY(0px);
}<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class = "introduction">
<h2>
<span class = "inwrap"><span class = "in"><a href = "#about-me">Graphic designer</a> that </span></span>
<span class = "inwrap"><span class = "in">specializes in <a href = "#days-of-ux">interactive</a></span></span>
<span class = "inwrap"><span class = "in"> design and <a href = "#struggle-magazine">print</a></span></span>
</h2>
</div>
Фрагмент кода не работает. Что-то мне здесь не хватает?