2012-11-02 12 views
18

Używam Flexslider do pobierania obrazów produktu o różnych rozmiarach z API. Wrzucałem je do Flexslidera <ul>, ale te różne rozmiary zdjęć nie grają dobrze. Flexslider ładnie animuje, gdy obrazy mają różną wysokość, ale chcę, aby Flexslider miał stałą wysokość i szerokość, aby pasowały do ​​mojego układu. Próbowałem umieścić całość w stałym rozmiarze <div>, ale Flexslider ignoruje go całkowicie i przelewa się do reszty układu. Czy istnieje sposób na zmianę rozmiaru obrazu, aby zmieścił się program Flexslider?Naprawiono rozmiar Flexslider

+0

Czy próbowali dodanie overflow: hidden do div ty dodałeś? – coopersita

Odpowiedz

35

Załóżmy, że chcesz mieć stały rozmiar 200 x 200 pikseli. Dodaj te właściwości do następujących selektorów w pliku flexslider.css i powinno być dobrze iść:

.flexslider { 
    width: 200px; 
    height: 200px; 
} 

.flexslider .slides img { 
    width: 200px; 
    height: 200px; 
} 

Nadzieja to pomaga!

+1

To wydaje się działać dobrze, ale obrazy nie kwadratowe mogą zostać zniekształcone. Czy istnieje sposób na zmianę rozmiaru obrazów, aby automatycznie dopasować ten kwadrat bez zniekształceń? –

+0

Określono, że chcesz mieć stałą wysokość i szerokość, aby Flexslider nie zmieniał rozmiaru. Aby pomieścić obrazy o różnych współczynnikach, Flexslider musi zmienić swoje wymiary, aby pomieścić nowy obraz. Kod, który ci podałem, może zostać zmieniony na stały rozmiar, aby pasował do twojego układu (np. 960 x 540), ale jest zależny od tego samego rozmiaru ustalonego dla każdego z obrazów. Czy istnieje sposób na ponowne przycięcie i zmianę rozmiaru obrazów w edytorze zdjęć w celu rozwiązania tego problemu? –

+0

Wyciągam te różne obrazy z interfejsu API, więc nie mogę zmienić ich rozmiaru masowo w Photoshopie lub czymkolwiek podobnym. Przepraszam, że byłem niejasny:/ –

0

Ustaw rozmiar z opcją stylu konkretnego div jak poniżej, ze nie ma rozsuwany z dwóch różnej wielkości:

<div class="flexcontainer"> 
    <div id="first-slider" class="flexslider" style:"width:100px"> 
     <ul class="slides"> 
     ... 
     </ul> 
    </div> 
    <div id="second-slider" class="flexslider" style:"width:200px"> 
     <ul class="slides"> 
     ... 
     </ul> 
    </div> 
</div> 
+0

Co z dynamiczną wysokością? – mbb

+3

Jeśli każdy slajd ma własny identyfikator, lepiej nie używać wbudowanego CSS. – cfx

4

Element z klasą „.flex-rzutni” to pojemnik ze slajdami , ten element dostosowuje swoją wysokość do wyższego obrazu w zestawie, lewy ustawia całą wysokość obrazu na 0, z wyjątkiem tej, która znajduje się w bieżącym slajdzie, który jest wewnątrz elementu li z klasą ".flex-active-slide", która Skrypt Flexslider przełącza się, gdy slajdy wymieniają się pozycjami, jedyną złą rzeczą w tej sztuczce jest to, że przełączanie klasy następuje po umieszczeniu nowego slajdu w nowej pozycji, a następnie pojawia się zacinanie, ale można sobie z tym poradzić za pomocą niektórych wiązań javascript niektóre toggleClass do tego samego zdarzenia, które wyzwalają zmianę slajdu, pomóc być pomocne.

.flex-viewport li:not(.flex-active-slide) img{ 

height: 0 !important; 
} 
+0

Nie jestem pewien, do której wersji się to odnosiło, ale aktualnie nie widzę klasy flex-viewport, więc po prostu dodaj ją do tego, co jest opakowaniem dla twojego lis. Mój jest slajdami (domyślnie), ale można go nadpisać w konfiguracji. – Evan

1

Usuń

smoothHeight: true, 

z

jQuery('#slider').flexslider({ 
      animation: "slide", 
      controlNav: false, 
      animationLoop: false, 
      prevText: "",   
        nextText: "", 
      slideshow: false, 
        smoothHeight: true, 
        animateHeight: false, 
      sync: "#carousel", 
      start: function(){ 
       jQuery('#slider ul.slides img').show(); 
      }, 
      }); 
1

Zmień szerokość poprzez skrypt powiedzieć swoją szerokość być 400

$('.flex_up').flexslider({ 
    animation: "slide", 
    animationLoop: false, 
    itemWidth: 400, 
    itemMargin: 5, 
});