Как вы можете использовать jQuery, чтобы заставить sIFR-замененные элементы появляться? - PullRequest
0 голосов
/ 04 июня 2009

Это то, что у меня сейчас есть:

// #content is visibility=hidden
sIFR.replace(mix_bold, {
  selector: '#content p',
  onReplacement: function(fi) {
    $('#content').fadeIn("slow");
  }
});

Появление происходит, но на долю секунды замененный флэш-фильм появляется перед тем, как быть скрытым. Кто-нибудь получил это на работу? Я использую jQuery 1.2.6 и SIFR 3 r436. Протестировано в Safari 4 и FF 3.

Спасибо!

Ответы [ 4 ]

1 голос
/ 12 мая 2010

Если у вас есть список таких предметов, которые заменены на SIFR:

<ul class="slogan-list">
<li>...</li>
</ul>

JQuery будет выглядеть примерно так:

var jQu = jQuery.noConflict();

jQu('ul.slogan-list').each(function(){
        var _hold = jQu(this);
        var _list = _hold.children();
        var _t, _f = true;
        var _a = (_list.index(_list.filter('.active:eq(0)') != -1))?(_list.index(_list.filter('.active:eq(0)'))):(0);
        _list.removeClass('active').css('opacity', 0).eq(_a).addClass('active').css('opacity', 1);
        if(_f && stay_time){
            _t = setTimeout(function(){
                if(_a < _list.length - 1) changeEl(_a + 1);
                else changeEl(0);
            }, stay_time);
        }
        function changeEl(_ind){
            if(_t) clearTimeout(_t);
            if(_ind != _a){
                _hold.stop().height(_hold.height());
                if(jQu.browser.opera){
                    _list.eq(_a).removeClass('active').css('opacity', 0);
                    _list.eq(_ind).addClass('active').css('opacity', 1);
                }
                else{
                    _list.eq(_a).removeClass('active').animate({opacity: 0}, {queue:false, duration: change_speed});
                    _list.eq(_ind).addClass('active').animate({opacity: 1}, {queue:false, duration: change_speed});
                }
                _hold.animate({height: _list.eq(_ind).outerHeight()}, change_speed/2, function(){ jQu(this).height('auto');});
                _a = _ind;
            }
            if(_f && stay_time){
                _t = setTimeout(function(){
                    if(_a < _list.length - 1) changeEl(_a + 1);
                    else changeEl(0);
                }, stay_time+change_speed);
            }
        }
    });
1 голос
/ 05 июня 2009

Я знаю, что это не отвечает на ваш вопрос о sIFR, но я только что проверил затухание, используя другую технику замены шрифтов под названием Cufon. Здесь все отлично работает, установив в элементе CSS элемент display (не идеально, просто для теста), а затем заставив jQuery исчезнуть.

Cufon - это «Быстрая замена текста холстом и VML - Flash или изображения не требуются».

Генератор шрифтов Cufon

Надеюсь, это поможет, я перестал использовать sIFR для замены шрифтов после обнаружения этого инструмента, все еще есть пара проблем, которые нужно сгладить, но выглядит действительно хорошо.

Более подробная информация здесь http: //wiki.github.com/sorccu/cufon (извините, новый пользователь может опубликовать только 1 ссылку)

0 голосов
/ 08 июня 2009

Попробуйте сделать

#content {
style=display:none
} 

вместо visibility=hidden

0 голосов
/ 08 июня 2009

Может помочь, если вы сделаете Flash-ролик прозрачным, но в целом я не думаю, что это сработает. Сложность Flash и HTML / CSS.

...