Możesz także dodać, paddingLeft: 'toggle', paddingRight: 'toggle'gdy element ma wewnętrzne wypełnienie.
piotr_cz
17
Działa dobrze, tylko przesuwa się od lewej do prawej, gdy próbuję. Czy to możliwe, aby animować na odwrót?
twan
2
Jedyny problem polega na tym, że jeśli zawartość jest w środku, „zgniata” ją poziomo, powodując poruszanie się elementów sterujących / zmienianie rozmiaru / zawijanie itp. Czy istnieje na to dobre rozwiązanie?
Neil Barnwell
1
Twój kod potrzebuje więcej, CSSaby wyglądać jak prawdziwy slajd w lewo
AmerllicA
1
@ NeilBarnwell, jeśli możesz, umieść zawartość w opakowaniu o stałej szerokości i przechowuj pojemnik overflow: hidden.
Ben Philipp
239
Można to osiągnąć natywnie za pomocą metod ukrywania / pokazywania jQueryUI. Na przykład.
// To slide something leftwards into view,// with a delay of 1000 msec
$("div").click(function(){
$(this).show("slide",{ direction:"left"},1000);});
@ekerner - wymaga JQueryUI, który jest ogromną biblioteką. Jeśli wszystko, czego chcesz, to proste przejście między slajdami, prawdopodobnie nie jest to odpowiedź;)
Jesse
9
Jest to najlepszy sposób, jeśli masz jQueryUI zainstalowany.
steampowered
5
Dla wyjaśnienia - plik min ma rozmiar co najmniej 235 KB !! To dobrze, ale znacznie doda do twojej strony, jak wskazuje
@Jesse
1
Używając niestandardowego konstruktora i usuwając wszystko oprócz animacji slajdów, można uzyskać zminimalizowany plik JS poniżej 20 KB.
Skylar Ittner
Chciałbym, aby dokumenty interfejsu użytkownika JQuery zawierały takie przykłady. Dzięki
Oblicza wartości w „px”, więc niewykonalne dla „%”
Faisal Ashfaq
przesuwa się w lewo przy każdym kliknięciu.
Elyor,
Możesz sprawdzić szerokość zewnętrzną i użyć tego, aby dodać prawy margines
Tofandel,
22
Spójrz na ten działający przykład na Fiddle, który używa interfejsu użytkownika jQuery . Jest to rozwiązanie, z którego korzystałem pierwotnie od lewej do prawej, ale zmieniłem je, aby działało od prawej do lewej.
Umożliwia użytkownikowi szybkie klikanie łączy bez przerywania animacji wśród dostępnych paneli.
Kod JavaScript jest prosty:
$(document).ready(function(){// Mostra e nascondi view-newsvar active ="europa-view";
$('a.view-list-item').click(function(){var divname=this.name;
$("#"+active ).hide("slide",{ direction:"right"},1200);
$("#"+divname).delay(400).show("slide",{ direction:"right"},1200);
active = divname;});});
Uzyskaj HTML i CSS pod linkiem Fiddle.
Dodano białe tło i lewe dopełnienie dla lepszej prezentacji efektu.
Dlaczego nie użyć width: 'toggle'? btn.show().animate({width: 'toggle'}, {duration: 500});wierzę, że to wszystko, czego potrzebujesz.
Aart den Braber
6
Inną wartą wspomnienia biblioteką jest animate.css . Działa świetnie z jQuery i możesz zrobić wiele ciekawych animacji, po prostu przełączając klasy CSS.
Platforma animacji GreenSock (GSAP) zTweenLite/TweenMaxzapewnia znacznie płynniejsze przejścia z dużo większą personalizacją niż przejścia jQuery lub CSS3. Aby animować właściwości CSS za pomocą TweenLite / TweenMax, potrzebujesz również ich wtyczki o nazwie „CSSPlugin”. TweenMax uwzględnia to automatycznie.
Według ich strony internetowej:
„TweenLite to niezwykle szybkie, lekkie i elastyczne narzędzie do animacji, które służy jako podstawa platformy animacji GreenSock (GSAP)”.
Możesz zdefiniować najpierw szerokość elementu jako 0, zmiennoprzecinkową w prawo, a następnie w przypadku zdarzenia, które zamierzasz pokazać. To byłoby jak
<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><divclass="wrap">
click here
<divclass="content">
I would like to have a div go from collapsed to expanded (and vice versa), but do so from right to left. Most everything I see out there is always left to right.
</div></div>
Odpowiadając na dziesięcioletnie pytanie czternastoma innymi istniejącymi odpowiedziami, pomogłoby wyjaśnić, jakie nowe podejście przynosi twoja odpowiedź, i czy byłoby to ważne, gdy pytanie zostało zadane, lub czy wykorzystuje techniki, które stały się dostępne w ciągu tych dziesięciu lat .
Jason Aller
1
Przykład zrobiony przeze mnie przy użyciu przewijania (tylko HTML, CSS i JS, tylko z biblioteką jquery). Po przewinięciu w dół przycisk przesunie się w lewo.
Sugeruję również, jeśli jedynym efektem, który chcesz uzyskać, jest ten efekt, nie używaj interfejsu użytkownika jQuery, ponieważ jest on zbyt ciężki (jeśli po prostu chcesz go do tego użyć).
Odpowiedzi:
Odniesienie: https://api.jquery.com/animate/
źródło
paddingLeft: 'toggle', paddingRight: 'toggle'
gdy element ma wewnętrzne wypełnienie.CSS
aby wyglądać jak prawdziwy slajd w lewooverflow: hidden
.Można to osiągnąć natywnie za pomocą metod ukrywania / pokazywania jQueryUI. Na przykład.
Odniesienie: http://docs.jquery.com/UI/Effects/Slide
źródło
Użyj tego:
Demo na żywo
Poprawiona wersja
Dodano część kodu do wersji demonstracyjnej, aby zapobiec podwójnemu marginesowi przy podwójnym kliknięciu: http://jsfiddle.net/XNnHC/942/
Używaj go z łatwością;)
http://jsfiddle.net/XNnHC/1591/
Usunięto dodatkowe kody JavaScript.
Nazwy klas i niektóre kody CSS zostały zmienione
Dodano funkcję sprawdzania, czy jest rozwinięta czy zwinięta
Zmieniono, czy użyć efektu łagodzenia, czy nie
Zmieniono prędkość animacji
http://jsfiddle.net/XNnHC/1808/
źródło
Spójrz na ten działający przykład na Fiddle, który używa interfejsu użytkownika jQuery . Jest to rozwiązanie, z którego korzystałem pierwotnie od lewej do prawej, ale zmieniłem je, aby działało od prawej do lewej.
Umożliwia użytkownikowi szybkie klikanie łączy bez przerywania animacji wśród dostępnych paneli.
Kod JavaScript jest prosty:
Uzyskaj HTML i CSS pod linkiem Fiddle.
Dodano białe tło i lewe dopełnienie dla lepszej prezentacji efektu.
źródło
Użyj tego
źródło
źródło
Zrobiłem to w ten sposób:
Zauważ, że ten węzeł „btn” powinien być ukryty przed animacją i może być konieczne ustawienie dla niego „position: absolut”.
źródło
width: 'toggle'
?btn.show().animate({width: 'toggle'}, {duration: 500});
wierzę, że to wszystko, czego potrzebujesz.Inną wartą wspomnienia biblioteką jest animate.css . Działa świetnie z jQuery i możesz zrobić wiele ciekawych animacji, po prostu przełączając klasy CSS.
Lubić..
źródło
Platforma animacji GreenSock (GSAP) z
TweenLite
/TweenMax
zapewnia znacznie płynniejsze przejścia z dużo większą personalizacją niż przejścia jQuery lub CSS3. Aby animować właściwości CSS za pomocą TweenLite / TweenMax, potrzebujesz również ich wtyczki o nazwie „CSSPlugin”. TweenMax uwzględnia to automatycznie.Najpierw załaduj bibliotekę TweenMax:
Lub lekka wersja, TweenLite:
Następnie wywołaj animację:
Możesz także zadzwonić za pomocą selektora ID:
Jeśli masz załadowany jQuery, możesz użyć bardziej zaawansowanych selektorów szerokich, takich jak wszystkie elementy zawierające określoną klasę:
Aby uzyskać szczegółowe informacje, zobacz: Dokumentacja TweenLite
Według ich strony internetowej: „TweenLite to niezwykle szybkie, lekkie i elastyczne narzędzie do animacji, które służy jako podstawa platformy animacji GreenSock (GSAP)”.
źródło
Możesz zdefiniować najpierw szerokość elementu jako 0, zmiennoprzecinkową w prawo, a następnie w przypadku zdarzenia, które zamierzasz pokazać. To byłoby jak
Proste.
źródło
Przykład animacji od prawej do lewej bez interfejsu użytkownika jQuery , tylko z jQuery (dowolna wersja, patrz https://api.jquery.com/animate/ ).
źródło
Sprawdź przykład tutaj.
https://jsfiddle.net/q1pdgn96/2/
źródło
lub możesz użyć
źródło
Przykład zrobiony przeze mnie przy użyciu przewijania (tylko HTML, CSS i JS, tylko z biblioteką jquery). Po przewinięciu w dół przycisk przesunie się w lewo.
Sugeruję również, jeśli jedynym efektem, który chcesz uzyskać, jest ten efekt, nie używaj interfejsu użytkownika jQuery, ponieważ jest on zbyt ciężki (jeśli po prostu chcesz go do tego użyć).
Sprawdź ten przykład
źródło
Jeśli twój
div
jest absolutnie ustawiony i znasz szerokość, możesz po prostu użyć:Który zsunie go z ekranu.
Alternatywnie możesz owinąć go pojemnikiem
div
źródło