Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] centrowanie zdjęcia w divie
Forum PHP.pl > Forum > Przedszkole
shpaque
witam serdecznie,
powracam z pytaniem odnośnie środkowania zdjęcia w divie. Moja strona: http://www.olimpialublin.pl

na stronie głównej pod zdjęciem pływaków są 4 zdjęcia aktualności, które po najechaniu myszą się trochę powiększają. Problem w tym, że powiększają się jak widać od lewego górnego rogu (tak są też wyświetlane) - jak zrobić aby zarówno wyświetlane jak i powiększane były w centrum? Tak jak na: http://fluidagency.pl/ - na dole strony
Kshyhoo
A jaki to ma związek z PHP? Przenoszę.
shpaque
a taki że obrazki są pobierane i wyświetlane w php (ze zmiennych) i nie jest to byle jakie img src stałych wymiarów
Kshyhoo
To dodaj jeszcze tag [english], bo nazwy zmiennych są w języku angielskim. facepalmxd.gif
shpaque
nie o to chodzi, kiedyś jak tego szukałem to znalazłem gdzieś, że najpierw trzeba napisać skrypt, który pobierze rozbiar obrazka, poxniej jakos go centrowac wlasnie w php - stad moje zasugerowanie się znacznikiem php przy zakładaniu tematu...

i jak zwykle będziemy traktować tu o sprawach nie związanych z tematem, a chciałbym się w końcu dowiedzieć na jakiej zasadzie to działa... I nie zdziwię się jednak jeśli wszystko ogarnąć trzeba będzie właśnie w P H P...

Generalnie moje zapytanie jest odnośnie sposobu.

Mam określoną wysokość zdjęcia (stałą); szerokość dopasowywana jest automatycznie. Jak teraz zrobić, żeby obrazek był center/middle i tak samo się zoomował?
kujol
W css dla diva, w którym mają być wyśrodkowane zdjęcia nadaj text-align: center;
ghost1511
Na moje to nie php tylko javascript. Z tego co podejrzałem w narzędziach developerskich zmienia się wielkość obrazka który daje efekt zoomu. Reszta pewnie za pomocą overflow.
shpaque
nie, to nie o to chodzi.

oto kod:

JS
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $('#zoom1').hover(function(){
  4. $(this).find('img').stop().animate({"height": 260}, 200);
  5. }, function(){
  6. $(this).find('img').stop().animate({"height": 236}, 500);
  7. });
  8. });
  9. </script>


i PHP
  1. <div id='zoom1' style='width:236px;height:230px;overflow:hidden;'>
  2. <?
  3. $dates = array();
  4. $photos = array();
  5. $titles = array();
  6. $opiss = array();
  7. $database = "./db/actuals.db";
  8. $items = file($database);
  9. $last = count($items)-1;
  10.  
  11. for($i = $last; $i > $last - 1; $i--) {
  12. list($date, $photo, $title, $opis) = explode('|', $items[$i]);
  13. $dates[$count] = $date;
  14. $photos[$count] = $photo;
  15. $titles[$count] = $title;
  16. $opiss[$count] = $opis;
  17.  
  18. echo "<a href=./db/aktualnosci/".$photos[$count]." rel='fancy' title='".$titles[$count]."'><img src=./db/aktualnosci/".$photos[$count]." height='230px' border='0px' title='Zobacz większe zdjęcie...'></a>";
  19. }
  20. ?>
  21. </div>
ghost1511
No to musisz jeszcze zmieniać left i top przy okazji animacji jeżeli chcesz otrzymać efekt od środka wink.gif

edit:
Wydaje mi się że na każde 2px powiększenia musisz odejmować 1px left i top wink.gif Mam nadzieję że jasno napisałem wink.gif
shpaque
no właśnie, ale nie będzie on stały, bo jedno zdjęcie może mieć 1000x500, a inne 1300x1000 i co wtedy?

@edit

czyli powiększenie jest o 26px więc powinienem dać left -13 i top -13?

a co z wyświetleniem zdjęcia centralnie? (przed hoverem)
nospor
No ale w czym problem? Mechanizm jak to ma dzialac znasz, wiec o co pytasz?

Najlepiej, byś obrazki miał stałych wymiarow, nie bedziesz musial się bawić dynamiczne ich dopasowywanie, tak jak to jest na przykladowej stronie. Tam obrazki są stalych wymiarow i wszystko jest banalne.


Jesli sie upierasz, ze nadal chcesz miec rozne rozmiary, to nadal nie wiem w czym problem.
Funkcja http://pl1.php.net/manual/en/function.getimagesize.php zwraca ci rozmiar obrazka. Masz wiec wszystkie dane.
ghost1511
Przecież wysokość i szerokość możesz pobrać za pomocą js. Trochę matematyki, znaleźć wzór i powinno działać wink.gif

edit:
Tak po dłuższym zastanowieniu to wysokości nawet nie potrzebujesz, jeżeli będziesz poszerzał o 2 px to wysokość też o 2px wzrośnie. Wysokość obrazka nie będzie miała znaczenia.
shpaque
#Nospor

No własnie to kiedyś gdzieś czytałem - niestety stałych obrazków nie da rady zrobić, bo te aktualności są na panelu a ja przecież nie będę codziennie wchodził i poprawiał zdjęć wrzuconych przez pracowników klubu...

czyli co trzeba zrobić:
- get image size pobierze jak wiadomo rozmiar.
- ten rozmiar bede musial podzielic / przeskalować tak, żeby wyszło mi height=236 i width odpowiednie (czy dopiero tutaj pobierać height?)
- mając już rozmiar jak go wycentrować? (załóżmy że wyszło 390x236; jak określić pozycję środka?)

Cytat(ghost1511 @ 6.03.2014, 08:08:49 ) *
Tak po dłuższym zastanowieniu to wysokości nawet nie potrzebujesz, jeżeli będziesz poszerzał o 2 px to wysokość też o 2px wzrośnie. Wysokość obrazka nie będzie miała znaczenia.


czyli mam rozumieć, że php w ogóle nie ruszać? nie pobierać rozmiaru?
nospor
Jesli obrazki beda mialy taką samą wysokosc co szerokosc to tak, ale jak nie, to by to ladnie wygladalo musisz wysokosc zwieksszac nie tyle samo co szerokosc ale przy zachowania calego wspolczynnika wysokosc/szerokosc.
Dokladnie tak jest na stronie co podales i wszystko ladnie dziala.
I tak, nie musisz w to mieszac php, bo jak juz wspomniano, wymiary obrazka pobierzesz tez bez problemu w js
ghost1511
Cytat(nospor @ 6.03.2014, 08:44:55 ) *
Jesli obrazki beda mialy taką samą wysokosc co szerokosc to tak, ale jak nie, to by to ladnie wygladalo musisz wysokosc zwieksszac nie tyle samo co szerokosc ale przy zachowania calego wspolczynnika wysokosc/szerokosc.


Faktycznie facepalmxd.gif

Cytat(shpaque @ 6.03.2014, 08:37:58 ) *
czyli mam rozumieć, że php w ogóle nie ruszać? nie pobierać rozmiaru?


Na moje do niczego to nie potrzebne. JS i CSS załatwią sprawę wink.gif
shpaque
Cytat(nospor @ 6.03.2014, 08:44:55 ) *
Dokladnie tak jest na stronie co podales i wszystko ladnie dziala.


no właśnie - zauważyłem, że pewnie te ustawienia są wpisane w klasie "img" na stronie Fluid Agency - tylko nie mogę znaleźć u nich na stronie tej klasy - może ktoś czający mógłby mi to wyciągnąć i wkleić tutaj jak oni mają zrobione?
nospor
Jakie ustawienia? Jaka klasa? Oni to wszystko mają w czystym js
Kod
            $('.tab').each(
                    function(i,content){
                        $(content).hover(
                                function(){$(this).find('img').stop().animate({width:298,height:118,left:'-23px',top:'-29,5px'},{duration:200});
                                },
                                function(){
                                    $(this).find('img').delay(300).stop().animate({width:239,height:95,left:0,top:0},{duration:200});    
                                }
                        );
                    }
            );

Tylko u nich jest latwiej, bo mają stale wartosci. Ty niestety musisz wpierw dla danego obrazka wszystko wyliczyc
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.