Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][CSS] Galeria zdjęć
Forum PHP.pl > Forum > Po stronie przeglądarki > CSS
dyniaq
W tabeli łatwo sobie wyrównać miniaturki. Ale jak za pomocą CSS'a wyrównać obrazki, żeby były ładnie w wierszach i kolumnach. Zaznaczam, że nie wszystkie obrazki "panoramiczne", niektóre są robione "pionowo" i wtedy się rozjeżdża cały szyk, bo mają inną wysokość niż te "panoramiczne".

  1. <div id="images">
  2. <a href="photos/G_4830.JPG" rel="lightbox.roadtrip" title="G_4830"><img src="photos/thumbs/thumb_G_4830.JPG" alt="G_4830"/></a>
  3. <a href="photos/IMG_1960.JPG" rel="lightbox.roadtrip" title="IMG_1960"><img src="photos/thumbs/thumb_IMG_1960.JPG" alt="IMG_1960"/></a>
  4. <a href="photos/IMG_1961.JPG" rel="lightbox.roadtrip" title="IMG_1961"><img src="photos/thumbs/thumb_IMG_1961.JPG" alt="IMG_1961"/></a>
  5. <a href="photos/IMG_1962.JPG" rel="lightbox.roadtrip" title="IMG_1962"><img src="photos/thumbs/thumb_IMG_1962.JPG" alt="IMG_1962"/></a>
  6. </div>

  1. #images{
  2. border: 2px solid #efefe1;
  3. background-color: #ffffff;
  4. }
  5.  
  6. #images img{
  7. margin: 5px;
  8. padding: 10px;
  9. border: 1px solid #efefe1;
  10. background-color: #fafafa;
  11. float: left;
  12. width: 15%;
  13. }
  14.  
  15. #images a:visited img {
  16. border: 1px dashed #fafafa;
  17. background-color: #fff;
  18. }
  19.  
  20. #images a:hover img {
  21. border: 1px solid #aa5;
  22. background-color: #fafaf1;
  23. }


Czy ktoś poradził sobie kiedyś z tym problemem? Proszę o pomoc.

Z poważaniem, Michał
Piotrwusek
ja bym to uznał za dane tabelowe i obsadził w tabelce
Kreton
Ale nie są danymi tabelarycznymi. A możesz oznaczać zdjęcia klasami ? Odzdielając panoramiczne od robionych pionowo ? Czy nie chcesz się babrać bo nikt za Ciebie takiego kodu nie wygeneruje ?
dyniaq
Piotrwusek
No tak na łatwiznę to nie można iść.

Kreton
No da się. Wszystko z automatu leci, więc coś tam się wymyśli, żeby określić, czy panoramiczne, czy nie. A jeżeli już będą dwie różne klasy to wtedy co?
trucksweb
poczytaj http://kurs.browsehappy.pl/CSS/Table

da sie zrobic
Kreton
Bo wtedy będziesz mógł sobie ładnie wyrównać obrazki w pionie i w poziomie. Bez tych klas się nie da bo vertical-align nie działa ani sztuczka z line-height na obrazku, który dostał w stylach display: inline. Sprawdzałem w Operze.

Rozumiem, że generujesz miniaturki i wszystkie maja takie same rozmiary, w sensie. Np. panoramiczne: 150x250 a pionowe 250x150 przykładowo ?
dyniaq
Już prawie wszystko działa (pod FF3.0). Zastosowałem sposób z wykorzystaniem display:table. Wszystko ładnie z tym, że nie wiem, jak wyśrodkować teraz obrazek.

Podsyłam kodziki:

  1. <div id="images">
  2. <ul>
  3. <li><a href="photos/G_4830.JPG" rel="lightbox.roadtrip" title="G_4830"><img src="photos/thumbs/thumb_G_4830.JPG" alt="G_4830" class="vertical" /></a></li>
  4. <li><a href="photos/IMG_1960.JPG" rel="lightbox.roadtrip" title="IMG_1960"><img src="photos/thumbs/thumb_IMG_1960.JPG" alt="IMG_1960" class="horizontal" /></a></li>
  5. </ul>
  6. </div>


CSS:
  1. #images ul {
  2. display: table;
  3. table-layout: fixed;
  4. background-color: #fff;
  5. border: 1px dashed #ddd;
  6. padding: 0.5%;
  7. }
  8.  
  9. #images li {
  10. display: table-cell;
  11. float: left;
  12. width: 150px;
  13. height: 150px;
  14. border: 1px dashed #ddd;
  15. margin: 0.5%;
  16. overflow: hidden;
  17. }
  18.  
  19. #images a {
  20. display: block;
  21. margin: 0;
  22. padding: 5px;
  23. border: 1px solid #aa5;
  24. background-color: #fafafa;
  25. overflow: hidden;
  26. }
  27.  
  28. #images img {
  29. border: 1px dashed #fafafa;
  30. display: block;
  31. }
  32.  
  33. #images img.horizontal { width: 100%; }
  34. #images img.vertical { height: 135px; }
  35.  
  36. #images a:visited img {
  37. border: 1px dashed #fafafa;
  38. background-color: #fff;
  39. }
  40.  
  41. #images a:hover img {
  42. border: 1px solid #aa5;
  43. background-color: #fafaf1;
  44. }
Kreton
Dobrze było by się zorientować czy działa to na IE 6 i 7 , nie ?
dyniaq
No na razie to się tym nie martwię. Najpierw ma działać na normalnych przeglądarkach.
A IE6 nawet mi nie chce wyświetlić czegokolwiek bo ma jakiś problem z deklaracjami XML.

A wracając do sedna. Wiesz jak wyśrodkować te obrazki?
Kreton
Chodzi o to to, że w poziomie możesz bez problemu wyśrodkować obrazek. Jeśli jest elementem blokowym to :
Kod
margin: 0 auto;
.
Problem jest jak chcesz wyśrodkować w pionie. Ważne jest określenie czy to panorama czy pionowe. Załóżmy masz swoje zdjęcie w kontrzenerze o wysokości 300px. Zdjęcia panoramiczne maja 150px wysokosci a pionowe 250px. I teraz aby obrazek był wyśrodkowany w pionie musisz nadac odpowienie marginesy, czyli
Kod
margin: 75px 0
dla panoramicznego i
Kod
margin: 25px 0
dla pionowego.
Wyskokość zdjęcia i marginesu po zsumowaniu wyniesie 300px czyli tylke ile chcesz. Wszystko będzie i w pionie i w poziomie. Rozumiesz o co mi chodzi?
dyniaq
Dziękuję za pomoc. Wszystko ładnie śmiga. Choć trochę lipa, że trzeba to taką okrężną drogą osiągać. No i mimo wszystko metoda wciąż jest trochę "na sztywno". Mam nadzieję, że kiedyś doczekam dnia, kiedy będzie można wszystko ładnie w CSSie zrobić i nie będzie już IE biggrin.gif Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.