У меня есть функция, которая затухает каждое слово по одному. Я пытаюсь вызвать эту функцию вместо вызова fadeIn для своих слайдов, но я теряю то, что я бы назвал функцией, чтобы сделать эту работу.Затухание каждого слова слайда по одному
Я создал скрипку http://jsfiddle.net/d6r7gffs/
Я хочу слайд перехода затем исчезает каждое слово один за другими, а не переход фейдера всего содержания затем исчезают в каждом слове по одному, как это в настоящее время функционирует ,
var $slider = $('.example ul'); // class or id of carousel slider
var $slide = 'li'; // could also use 'img' if you're not using a ul
var $transition_time = 1000; // 1 second
var $time_between_slides = 8000; // 8 seconds
function slides(){
return $slider.find($slide);
}
slides().fadeOut();
// set active classes
slides().first().addClass('active');
slides().first().fadeIn($transition_time, fadeWordsIn);
// auto scroll
$interval = setInterval(function() {
var $i = $slider.find($slide + '.active').index();
slides().eq($i).removeClass('active');
slides().eq($i).fadeOut($transition_time);
if (slides().length == $i + 1) $i = -1; // loop to start
slides().eq($i + 1).fadeIn($transition_time, fadeWordsIn);
slides().eq($i + 1).addClass('active');
}, $transition_time + $time_between_slides
);
function fadeWordsIn() {
var $el = $('.example ul li.active span'), text = $.trim($el.text()),
words = text.split(" "), html = "";
for (var i = 0; i < words.length; i++) {
html += "<span>" + words[i] + ((i+1) === words.length ? "" : " ") + "</span>";
};
$el.html(html).children().hide().each(function(i){
$(this).delay(i*200).fadeIn(700);
});
$el.find("span").promise().done(function(){
$el.text(function(i, text){
return $.trim(text);
});
});
}
Привет, Майкл, спасибо, что ответили. Ваше решение работает, но не для перехода слайдов. – brandozz
Я обновил скрипку, она работает, но я думаю, что это может быть лучше. Я переместил вызов моей функции fadeWordsIn() под строку addClass в цикле, но мне также нужно было добавить .css ('display', 'block'), в противном случае оба слайда имели стиль = "display: none". http://jsfiddle.net/d6r7gffs/3/ – brandozz
Я обновил свой ответ. Это самый чистый способ, который я знаю ... Я уверен, что кто-то еще может сделать лучше. –