Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][CSS] Galeria - Jak wyświetlić duży obrazek?
Forum PHP.pl > Forum > PHP
PaulPavello
Witam. Piszę stronkę na której chcę umieścić mini galerię. Nie chcę używać gotowych skryptów, więc tworzę sam galerię i mam już coś takiego:
  1. <?php
  2. printf("<center><a href='index.php?mod=galerie'>Wróć do widoku wszystkich galeri</a></center>");
  3. $licz=1;
  4. $katalog_galeri=$_GET[kat];
  5. $krotnosc_pomniejszenia=$_GET[pomn];
  6. $obiekt_zdjecia=dir($katalog_galeri);
  7. printf("<center><table border='3'><tr>");
  8. while($zdjecie = $obiekt_zdjecia->read())
  9. {
  10. if($zdjecie!='.' && $zdjecie!='..' && $zdjecie!='info.txt')
  11. {
  12. $pelny_adres=$katalog_galeri.$zdjecie;
  13. $zdjecie_rozmiar=getimagesize($pelny_adres);
  14. $zdjecie_width=$zdjecie_rozmiar[0]/$krotnosc_pomniejszenia;
  15. $zdjecie_height=$zdjecie_rozmiar[1]/$krotnosc_pomniejszenia;
  16. if($licz%3==0)
  17. {
  18. printf("<td><img src='$pelny_adres' width='$$zdjecie_width' height='$zdjecie_height'></td></tr><tr>");
  19. $licz++;
  20. }
  21. else
  22. {
  23. printf("<td><img src='$pelny_adres' width='$$zdjecie_width' height='$zdjecie_height'></td>");
  24. $licz++;
  25. }
  26. }
  27. }
  28. printf("</tr></table></center>");
  29. ?>


Owy skrypt ma za zadanie wyświetlić z danego katalogu wszystkie obrazki. Nie jest on zabezpieczony przeciwko jakimś innym typom plików, gdyż założyłem z góry, że w katalogu z galeriami znajdą się tylko i wyłącznie pliki z obrazkami a także plik info.txt potrzebny do wyświetlenia wszystkich galerii znajdujących się na stronie. Użytkownik po wybraniu konkretnej galerii przenoszony jest do powyższego skryptu, który jak narazie wyświetla tylko miniaturki obrazków z danej galerii, lecz nie wiem jak zrobić żeby teraz na tym co mam wygenerowane na stronie został wyświetlony <div>, który skonfigurowałem w następujący sposób:

  1. #krycie
  2. {
  3. width: 100%;
  4. height: 100%;
  5. position: fixed;
  6. z-index: 100;
  7. top: 0px;
  8. left: 0px;
  9. background-image: url(images/gallery.png);
  10. background-repeat: repeat;
  11. }



Wiadomo, można zrobić w linku odnośnik do tej samej strony i ją przeładować i jednym IF'em załatwić wyświetlenie div'a, ale niestety biorę pod uwagę, że w galerii mogą być zdjęcia duże i dużo ich może w niej być co utrudnia załadowanie strony na nowo i pewnie spowolni skrypt albo go unieruchomi. Pytanie do was jest takie: czy da się zrobić tak żeby po kliknięciu ładował się sam div (a nie cała strona od nowa)questionmark.gif
CuteOne
Cytat
Nie jest on zabezpieczony przeciwko jakimś innym typom plików

1.No to się pewnego ranka zdziwisz jak ktoś ci serwer załatwi smile.gif

2. Nie używaj printf do tego typu wyświetlania stringów - od tego jest echo

A co do tematu (jQuery):
[JAVASCRIPT] pobierz, plaintext
  1. $(function() { // taki onload :)
  2.  
  3. $('#table img').click(function() { // #table to id z <table>
  4.  
  5. var src = $(this).attr('src');
  6. var div = $('#kycie').html('<img src="'+src+'" class="jakas_klasa" />');
  7. });
  8. });
[JAVASCRIPT] pobierz, plaintext


Wyświetlanie obrazka to nie problem - problemem jest jego zniknięcie smile.gif tak więc poszukaj na necie jakiejś gotowej galerii jQuery, która rozwiąze ten problem za ciebie
PaulPavello
Pogrzebałem trochę w necie i pokombinowałem z tym co wysłał kolega wyżej i mam teraz coś takiego:


  1. $(document).ready(function(){
  2.  
  3. $('table img').click(function() { // #table to id z <table>
  4.  
  5. var src = $(this).attr('src');
  6. $('#krycie').removeAttr('background');
  7. $('#krycie').css('background-image', 'url(images/gallery.png)');
  8. $('#krycie').css('position', 'fixed');
  9. $('#krycie').css('width', '100%');
  10. $('#krycie').css('height', '100%');
  11. /* var div = */$('#kycie').html('<center><img src="'+src+'"> class="krycie"</center>');
  12. // alert(src);
  13. });
  14. $('#krycie').click(function() {
  15. $('#krycie').css('background', '#FFFFFF');
  16. $('#krycie').css('position', 'fixed');
  17. $('#krycie').css('width', '0%');
  18. $('#krycie').css('height', '0%');
  19.  
  20. });
  21.  
  22. });


Puki co działa to tak, że jak kliknę na obrazek to wyświetla mi się tło takie jak chcę, ale niestety nie jest przeźroczyste - obrazek ma przeźroczystość, jak to naprawić?
A poza tym na tle nadal nie widać obrazka:(


Ładuje mi się już obrazek trochę niepotrzebnego kodu wywaliłem:
  1. $(document).ready(function(){
  2.  
  3. $('table img').click(function() { // #table to id z <table>
  4.  
  5. var src = $(this).attr('src');
  6. $('#krycie').css('position', 'fixed');
  7. $('#krycie').css('width', '100%');
  8. $('#krycie').css('height', '100%');
  9. $('#krycie').html('<center><img src="'+src+'" width="800" height="600"></center>');
  10. });
  11. $('#krycie').click(function() {
  12. $('#krycie').css('width', '0%');
  13. $('#krycie').css('height', '0%');
  14. $('#krycie img').detach();
  15.  
  16. });
  17.  
  18. });


Niestety tło tego DIV'a nadal jest takie jakby był to obrazek bez przeźroczystości, a szkoda, wie ktoś jak temu zaradzićquestionmark.gif


NAPRAWIŁEM! Miałem w CSSie dołożony do #krycie background: #FFFFFF; i to psuło efekt;)
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.