ďťż
Podstrony
|
telcocafeW Ks-ekspert nr 6/2004 podany byl kod PHP://przycisk.php <? error_reporting(E_ALL); if (isset($_GET['tekst'])) $tekst=$_GET['tekst']; else $tekst=""; $przycisk=imagecreatefrompng("tlo.png"); $x = ImageSX($przycisk); $y = ImageSY($przycisk); $ramka = 5; $rozmiar_czcionki = 11; $czcionka = 'ss.ttf'; do { $rozmiar_czcionki--; $rozmiar = imagettfbbox ($rozmiar_czcionki, 0 , $czcionka, $tekst); $wys_txt = $rozmiar[7] - $rozmiar[1]; $szer_txt = $rozmiar[2] - $rozmiar[0]; } while ($rozmiar_czcionki>8 && ($wys_txt>($y-2*$ramka) || $szer_txt>($x-2*$ramka))); $srodek_x = ($x-$szer_txt) / 2; $srodek_y = ($y-$wys_txt) / 2; $kolor = Imagecolorallocate($przycisk, 50,143,77); ImageTTFText ($przycisk, $rozmiar_czcionki, 0, $srodek_x, $srodek_y, $kolor, $czcionka, $tekst); Header("Content_type: image/png"); ImagePNG($przycisk); ImageDestroy($przycisk); ?> krypt generuje mi przyciski na stronie w dziale menu. Krotki opis dzialania : w katalogu ze strona umieszczamy dany plik przycisk.php + plik z czciaonka np ariel.ttf + obrazek tla z rozszezeniem *.png. I w pliku menu.php lub lista.php umieszczamy <a href="http://www.php.pl"><img border="0" src="przycisk.php?tekst=Link do php"></a> Chcialbym aby ten generator generowal takze drugi obrazek po najechaniu myszka cos w rodzaju onmouseover. Probowalem go przerobic poprzez dodanie nowego pliku przycisk2.php a w kodzie strony z menu : <html> <head> <script type="text/javascript"> function _hoverImage(txt) { document.getElementById('obrazek').src = 'przycisk2.php?tekst=txt'; } function _normalImage(txt) { document.getElementById('obrazek').src = 'przycisk.php?text=txt'; } </script> </head> <body> <a href="http://strona.pl"><img id="obrazek" src="przycisk.php?tekst=Strona PHP" border="0" onmouseover="_hoverImage('Strona PHP')" onmouseout="_normalImage('Strona PHP')" /></a> <br> <a href="http://strona.pl"><img id="obrazek" src="przycisk.php?tekst=Strona 2" border="0" onmouseover="_hoverImage('Strona 2')" onmouseout="_normalImage('Strona 2')" /></a> </body> </html> Ale skrypt glupieje. (...)Ale skrypt glupieje. Czyli? BTW: onmouseover="this.src='obrazekover.php'" (funkcja _hoverImage niepotrzebna do niczego). Użytkownik .:dR@kE:. edytował ten post 17 kwiecień 2006, 20:36 Swoją drogą dynamiczne tworzenie przycisków to bezsens :P Nie ma to jak niepotrzebnie obciążać serwer. Poza tym czasem parser php może się wywalić i przycisków nie zobaczymy. A w tym skrypcie - domyslam sie ze zawsze text na przycisku zmienia sie na "txt" ? function _hoverImage(txt) { document.getElementById('obrazek').src = 'przycisk2.php?tekst='+txt; } function _normalImage(txt) { document.getElementById('obrazek').src = 'przycisk.php?text='+txt; } Tak zrób. Swoją drogą dynamiczne tworzenie przycisków to bezsens :P Nie ma to jak niepotrzebnie obciążać serwer. Poza tym czasem parser php może się wywalić i przycisków nie zobaczymy. A w tym skrypcie - domyslam sie ze zawsze text na przycisku zmienia sie na "txt" ? Wiec co proponujesz wzamian. Skoro to bezsens to po co taki art ukazal sie w Ekspercie ? Dlaczego parser mnialby sie wywalic? Macie lepsze rozwiazanie ? Ukazał się aby zaprezentować ludziom podstawy biblioteki graficznej gd. I owszem, mam lepsze rozwiązanie - potrzebne będzie tło przycisku [w 2 wersjach, wcisniety i nie] odpowiednie ich ustawienie i dodanie NORMALNEGO TEKSTU. Przykład tabelek + css, choć zrobisz jaką chcesz techniką. <table> <tr><td><a href="#">O mnie</a></tr></td> <tr><td><a href="#">Linki</a></tr></td> <tr><td><a href="#">Kontakt</a></tr></td> </table> Oraz kod css .td { background: url(przycisk.png); } .td.hover { background: url(przycisk.png); } Rzeczywiscie brzmiciekawie i znajomo prosto. Przydaloby sie tylko ograniczyc td poprzez zastosowanie klasy. Aha jak powiadomic przegladarke by przed zalaodowaniem strony pobrala tlo przycisku z hover ? Kojarze funkcje onload w body. EDIT: Niestety sprawdzilem to i nie dziala tzn nie wyswietla tych obrazkow tła . Dodatkowo próbowalem z background-image:url('tło.rozszerzenie'); i takze bez rezultatu. Dzialac po zastosowaniu class w td td.1 { background-image:url('1a.gif'); } td.1.hover { background-image:url('1b.gif'); } <tr><td class="1"><a href="#">O mnie</a></td></tr> Dziala ale tylko pokazuje tlo obrazka 1a.gif jakos nie dziala mi funkcja hover Klejny edit poradzilem sobie i z hover poprzez td.1:hover Dziala jedynie w Firefoxie, w IE nie ma zmainy obrazka. co jest nie tak ? Podejrzewam ze lepiej zastosowac divy do tego jak sie w fachowy sposob do tego zabrac ? Użytkownik fre edytował ten post 19 kwiecień 2006, 10:25 Hm szczerze to tez miałem ten problem, funkcja hover dla komórek tabeli działała z firefox i operą, na ie nie. Na innych nie sprawdzałem. Jeśli koniecznie chcesz by działało też na ie, to musisz niestety dołożyć troche kodu - zrobić onmouseover i onmouseout dla komórki i wtedy zmieniać obrazki. Aha - oczywiście się pomyliłem :oops: zamiast td.hover miało być td:hover. Nom obecnie się odchodzi od tabelek na rzecz div'ów. Ja to zrobiłem na tabelkach bo szybciej mogłem to zobrazować. |
|||
Sitedesign by AltusUmbrae. |