jQuery slaydı sola ve göster


111

jQueryDenilen efektleri slideRightShow()ve aşağıda görüldüğü gibi ve slideLeftHide()benzer şekilde çalışan bir çift işlevle genişlettim . Ancak, ben de uygulamak istiyoruz ve . slideUp()slideDown()slideLeftShow()slideRightHide()

Bu tür şeyler sunan önemli kitaplıklar olduğunu biliyorum (başka bir büyük javascriptdosya kümesi eklemekten kaçınmak istiyorum ), ancak herhangi biri ya slideLeftShow()da nasıl uygulanacağına dair basit bir örnek verebilir slideRightHide()mi?

jQuery.fn.extend({
  slideRightShow: function() {
    return this.each(function() {
      jQuery(this).animate({width: 'show'});
    });
  },
  slideLeftHide: function() {
    return this.each(function() {
      jQuery(this).animate({width: 'hide'});
    });
  },
  slideRightHide: function() {
    return this.each(function() {
      ???
    });
  },
  slideLeftShow: function() {
    return this.each(function() {
      ???
    });
  }
});

Yukarıdaki slideRightShowişlev, görüntüyü sol taraftan göstermeye başlar ve sağ tarafa doğru ilerler. Ben de aynı şeyi yapmanın ama sağ taraftan başlayıp sola doğru ilerlemenin bir yolunu arıyorum . Teşekkürler!

DÜZENLE

jQuery Arayüzünde ihtiyacım olan bir şey var (temelde "sağa kaydır" ve "sola kaydır" işlevlerine ihtiyacım var), ancak bunu jQuery 1.3 ile çalıştırmayı başaramadım: http://interface.eyecon.ro/demos /ifx.html . Ayrıca, demoları bozuk görünüyor ve bir milyon hata atmadan önce yalnızca bir kez slayt yapacak.



Yanıtlar:


185

Bu özellik, jquery ui http://docs.jquery.com/UI/Effects/Slide'ın bir parçası olarak dahil edilmiştir, eğer kendi isimlerinizle genişletmek isterseniz bunu kullanabilirsiniz.

jQuery.fn.extend({
  slideRightShow: function() {
    return this.each(function() {
        $(this).show('slide', {direction: 'right'}, 1000);
    });
  },
  slideLeftHide: function() {
    return this.each(function() {
      $(this).hide('slide', {direction: 'left'}, 1000);
    });
  },
  slideRightHide: function() {
    return this.each(function() {
      $(this).hide('slide', {direction: 'right'}, 1000);
    });
  },
  slideLeftShow: function() {
    return this.each(function() {
      $(this).show('slide', {direction: 'left'}, 1000);
    });
  }
});

aşağıdaki referanslara ihtiyacınız olacak

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://jquery-ui.googlecode.com/svn/tags/latest/ui/jquery.effects.core.js"></script>
<script src="http://jquery-ui.googlecode.com/svn/tags/latest/ui/jquery.effects.slide.js"></script>

Selam! Orada uyguladıklarınızın tersini arıyorum. Temel olarak, bir öğeyi göstermek için yukarıda sahip olduğum şeyi kullandığımda, önce sol kısım beliriyor ve sağa doğru ilerliyor. Sağ taraftan başlayıp sola doğru ilerlemesi için uğraşıyorum.
Wickethewok

1
öğeyi doğru kaydırırsanız çalışır. Aksi takdirde. Soldaki özelliği not etmek ve öğeyi küçültürken taşımak isteyebilirsiniz.
bendewey

1
Öğeyi "sağa" kayacak şekilde değiştirmek benim için slaydı tersine çevirmedi. Yardımcı olup olmadığını yukarıda açıkladım.
Wickethewok

2
Çok teşekkür ederim! Bunun jQuery'nin etkilerinin bir parçası olduğunu bilmiyordum. Yapabilseydim +2 verirdim!
Wickethewok

4
İki kullanıcı arayüzü komut dosyasının kaynağının bağlantısı artık şu şekildedir : jquery-ui.googlecode.com/svn/tags/latest/ui/… ve " jquery-ui.googlecode.com/svn/tags/latest/ui/…
Muleskinner

34

Dolgu ve kenar boşluklarını unutmayın ...

jQuery.fn.slideLeftHide = function(speed, callback) { 
  this.animate({ 
    width: "hide", 
    paddingLeft: "hide", 
    paddingRight: "hide", 
    marginLeft: "hide", 
    marginRight: "hide" 
  }, speed, callback);
}

jQuery.fn.slideLeftShow = function(speed, callback) { 
  this.animate({ 
    width: "show", 
    paddingLeft: "show", 
    paddingRight: "show", 
    marginLeft: "show", 
    marginRight: "show" 
  }, speed, callback);
}

Hız / geri arama argümanlar eklendi ile, tam bir drop-in için yerine var slideUp()ve slideDown().


Doğru kaydırma ile aynı etkiyi yapmalarını nasıl sağlayabilirim?
Jayant Varshney

@JayantVarshney: bloğun muhtemelen bir iç blokla sağa hizalandığından emin olun. Bu kod yalnızca genişliği küçültür.
CSS'niz

Teşekkürler ... Ama aynı div üzerindeki her iki etkiyi de istiyorum .. sağdan sola açılıp sonra soldan sağa veya tam tersi gibi ...
Jayant Varshney

Peki tamamlama geri aramasında sınıfları değiştirmeye ne dersiniz? :-)
vdboor

Teşekkürler, bu işlevi elde etmek için CSS3 animasyonları kullandım
Jayant Varshney

9

Bu satırları kendi script dosyanıza ekleyerek jQuery kitaplığınıza yeni fonksiyon ekleyebilir ve rahatlıkla fadeSlideRight()ve kullanabilirsiniz fadeSlideLeft().

Not: 750px örneğini istediğiniz gibi animasyon genişliğini değiştirebilirsiniz.

$.fn.fadeSlideRight = function(speed,fn) {
    return $(this).animate({
        'opacity' : 1,
        'width' : '750px'
    },speed || 400, function() {
        $.isFunction(fn) && fn.call(this);
    });
}

$.fn.fadeSlideLeft = function(speed,fn) {
    return $(this).animate({
        'opacity' : 0,
        'width' : '0px'
    },speed || 400,function() {
        $.isFunction(fn) && fn.call(this);
    });
}

1
JQuery UI dahil etmeden ihtiyacım olan şey tam olarak buydu. Opaklık ve genişliği parametre olarak ekledim. ... = function(opacity, speed, width, fn) {...}
Dylan Valade

1
Açık ara en iyi çözüm budur. Daha fazla kitaplık eklemenize gerek yok. Teşekkür ederim.
hosseio

5

Hızı değiştirmek ve geri aramaları dahil etmek istiyorsanız, bunları şu şekilde ekleyin:

        jQuery.fn.extend({
            slideRightShow: function(speed,callback) {
                return this.each(function() {
                    $(this).show('slide', {direction: 'right'}, speed, callback);
                });
            },
            slideLeftHide: function(speed,callback) {
                return this.each(function() {
                    $(this).hide('slide', {direction: 'left'}, speed, callback);
                });
            },
            slideRightHide: function(speed,callback) {
                return this.each(function() {  
                    $(this).hide('slide', {direction: 'right'}, speed, callback);
                });
            },
            slideLeftShow: function(speed,callback) {
                return this.each(function() {
                    $(this).show('slide', {direction: 'left'}, speed, callback);
                });
            }
        });
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.