Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Podmiana obrazka po najechaniu myszą...
Forum PHP.pl > Forum > Przedszkole
myslas
<a target='_blank'href='http://$strona/plik2/$plik_nazwa'><img src='images/pobieranie1.png' alt='' width='100' height='20' border='0' onMouseOver="roolover.src='images/pobieranie.png'" onMouseOut="roolover.src='images/pobieranie1.png'">


Wyświetla mi obrazek ale niestety nie zamienia go...po najechaniu myszą...
Fifi209
A od czego masz css ?

:hover ?
Mephistofeles
Do tego używa się CSS, a efekt nazywa się rollover, nie roolover tongue.gif.
denis94
  1. <a target='_blank'href='http://$strona/plik2/$plik_nazwa'><img src='images/pobieranie1.png' alt='' width='100' height='20' border='0' onmouseover=\"this.src='images/pobieranie.png'\" onmouseout=\"this.src='images/pobieranie1.png'\"></a>
vokiel
@denis94 nie ucz złych nawyków. Nie ma sensu robić tego w js, skoro dużo łatwiej można to zrobić w samym css. Poza tym przedstawiony przez Ciebie sposób był "do przyjęcia" ale ładnych parę/paręnaście lat temu.
myslas
Niestety to nie działa:( Rozumiem ale ja nie mam CMS to jest prosty skrypt dodający newsa i plik. Więc szukam rozwiązania.

@denis94 dziękuję działa:) mój błąd źle przepisałem smile.gif zamykam temat:)
vokiel
1. Oddzielenie JS od HTML od CSS
2. Hover w CSS a nie JS
3. CSS sprites dla pozbycia się efektu doczytywania obrazka

Jeśli poza obrazkiem nie ma tekstu to img jest tu niepotrzebny. Możesz zrobić coś na wzór tego:
  1. <a target="_blank" href="http://$strona/plik2/$plik_nazwa" class="pobieranie"></a>
  2. <style type="text/css">
  3. a.pobieranie, a.pobieranie:hover{
  4. background: url("pobieanie_1_2.png") no-repeat 0px 0px;
  5. width: 100px;
  6. height: 20px;
  7. display: block;
  8. text-decoration: none;
  9. }
  10. a.pobieranie:hover{
  11. background-position: 0px -20px;
  12. }
zegarek84
a dlaczego js zły questionmark.gif - dlaczego hasło sprites padło w ostatnim poście questionmark.gif - wpierw szczątkowe krytykowania a potem wskazywanie drogi?? - każdy coś wybierze - trzeba wskazywać alternatywy - już lepiej by było objaśnić co w tym html'u znaczy this (gdzie w zasadzie jest prawie eval)...

a pro po srtites "dla pozbycia się efektu doczytywania obrazka" - są także sposoby odpowiedniego zapisu html'a i css bez użycia kluczowego sprites z pozbyciem się efektu ładowania obrazka...

fakt - też nic nie pomogłem - tylko rzuciłem hasła - ale deczko mnie zirytował temat skoro On nic takiego nie napisał to dlaczego staracie się być tacy Pro questionmark.gif - ja widzę u niego dopiero 3 posty i temat okej - jeszcze mogliście dodać, że np. onMouseOut powinno się pisać z małych liter ;p
Fifi209
Cytat(zegarek84 @ 27.11.2010, 00:20:35 ) *
a dlaczego js zły questionmark.gif

Nie każdy musi mieć włączonego javascript lub nawet adblock może Ci czasem zablokować.

Cytat(zegarek84 @ 27.11.2010, 00:20:35 ) *
- dlaczego hasło sprites padło w ostatnim poście questionmark.gif

Tak się teraz robi. smile.gif
Mephistofeles
Cytat
Niestety to nie działa:( Rozumiem ale ja nie mam CMS to jest prosty skrypt dodający newsa i plik. Więc szukam rozwiązania.

A co ma CMS do wykorzystania CSSa? Dzisiaj CSS to podstawa przy projektowaniu wyglądu, nikt normalny nie używa do tego JS czy wycofanych tagów HTMLa.
#luq
Cytat(Mephistofeles @ 27.11.2010, 09:59:04 ) *
nikt normalny nie używa do tego JS czy wycofanych tagów HTMLa.

Moment, <img/> jest wycofywane? No bo chyba nie <a/> biggrin.gif
kadlub
spróbuj tak

  1. <a href="#"><img src="obrazek_po_opuszczeniu" style="width:300px; height:200px"
  2. onMouseOver="this.src='obrazek po_po_najechaniu ' "
  3. onMouseOut="this.src='obrazek_po_opuszczeniu' "
  4. ></a>
  5.  
  6.  
Mephistofeles
Chodziło mi ogólnie o wygląd, np. <font>, <center> itd.
Ale tak, img (a chyba też) miał być wycofany biggrin.gif, docelowo każdy tag miał mieć atrybut src i href, z tym, że chyba nic z tego nie wyszło.
zegarek84
Cytat(fifi209 @ 27.11.2010, 08:51:55 ) *
Nie każdy musi mieć włączonego javascript lub nawet adblock może Ci czasem zablokować.
i dla przykladu jeśli kotś wchodzi na stronę przez telefon to i też nie każdy musi mieć włączone obrazki - pozatym, jak ktoś wiedział gdzie to wyłączyć to i wie gdzie włączyć jeśli coś na danej stronie chce zobaczyć ^^ - poza tym jeśli ktoś ma wyłączony js to tym bardziej ma np. wyłączony flash ^^ - a jeśli ktoś wyłącza js to i tak na pewnych stronach go włącza - prawie nikt nie wyłącza js ^^
Cytat(fifi209 @ 27.11.2010, 08:51:55 ) *
Tak się teraz robi. smile.gif
nie udaj, że nie wiesz o co mi chodziło

bądźmy świadomi jednego - uzyszkodnika nie obchodzi jak co się robi czy robiło - uzyszkodnik przykłada uwagę głównie do treści i wyglądu strony ;p
Cytat(Mephistofeles @ 27.11.2010, 09:59:04 ) *
...nikt normalny nie używa do tego JS...
więc najlepiej nie używaj do niczego js'a ;] - i zapomnij o bibliotekach typu jquery - to też js ^^

niżej wszystkie wspomniane przykłady kodu html'a z pełnymi adresami do obrazków - więc wystarczy skopiować by zobaczyć jak działają

sprites:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. a.obrazek {
  5. display: block;
  6. width: 100px;
  7. height: 100px;
  8. background-image: url("http://www.google.pl/images/srpr/nav_logo27.png");
  9. background-position: 0px 0px;
  10. }
  11. a.obrazek:hover {
  12. background-position: 0px -100px;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. sprites - hover lepiej działa w tagach "a" - aczkolwiek można go stosować do dowolnego tagu nie znajdującego się w linkach - dla starszych ie jest plugin w JS
  18. <a class="obrazek"></a>
  19. </body>
  20. </html>


css i preload:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. a.obrazek {
  5. display: block;
  6. width: 75px;
  7. height: 75px;
  8. background-image: url("http://forum.php.pl/uploads/av-40696.jpg");
  9. background-position: 0px 0px;
  10. }
  11. a.obrazek:hover {
  12. background-image: url("http://forum.php.pl/uploads/av-40400.png");
  13. }
  14. .preloader {
  15. display: block;
  16. width: 0px;
  17. height: 0px;
  18. position:absolute;
  19. left:-500px;
  20. top:-500px;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. podmiana obrazka - tła w css - i niżej preload coby nie było skoku ;p
  26. <a class="obrazek"></a>
  27. preload dla hovera na końcu strony by jako ostatnie te obrazki się doczytywały - oczywiście blok trzeba ukryć ;) - A JEDNOCZEŚNIE MUSI BYĆ WIDOCZNY GDYŻ INACZEJ SIĘ NIE DOŁADUJĄ OBRAZKI NIE WIDOCZNE
  28. <div class="preloader">
  29. <img src="http://forum.php.pl/uploads/av-40400.png" />
  30. </div>
  31. </body>
  32. </html>


"staromodny" hover w js bez preloada obrazka:
  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  3. </head>
  4. <body>
  5. javascript stare i podobno nie eleganckie - bez preloada obrazka...
  6. <img width="75px" height="75px" src="http://forum.php.pl/uploads/av-40696.jpg" onmouseover="this.src='http://forum.php.pl/uploads/av-40400.png'" onmouseout="this.src='http://forum.php.pl/uploads/av-40696.jpg'" />
  7. </body>
  8. </html>


hover w js:
  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  3. <script type="text/javascript">
  4. (function(){var sOut = '',
  5. sOver = 'http://forum.php.pl/uploads/av-40400.png';
  6. // preload i podpiecie zdarzeń - prowizorycznie pod window.onload
  7. window.onload = function(){
  8. var eImg = document.getElementById('obrazek'),
  9. oImg = new Image;
  10. sOut = eImg.src;
  11. // preload i po załadowaniu podpięcie zdarzenia
  12. oImg.onload = function(){
  13. eImg.onmouseout = function(){
  14. this.src = sOut;
  15. };
  16. eImg.onmouseover = function(){
  17. this.src = sOver;
  18. };
  19. oImg = null;
  20. }
  21. oImg.src = sOver;
  22. }
  23. })()
  24. </script>
  25. </head>
  26. <body>
  27. javascript stare i podobno nie eleganckie - bez preloada obrazka... - żadna ze zmiennych nie ląduje do globalnego window - oprócz jednej funkcji podpiętej pod window.onload - window.onload nie polecam ale tutaj lepiej obrazuje o co chodzi
  28. <img id="obrazek" width="75px" height="75px" src="http://forum.php.pl/uploads/av-40696.jpg" />
  29. </body>
  30. </html>

vokiel
Rozumiem, że część zarzutów do mnie...

Nie pisałem, że js jest zły, na pewno nie generalnie, ale w przytoczonym przykładzie stosowanie js mija się z celem.

Dlaczego sprites dopiero na końcu? Wg mnie to właściwa kolejność, najpierw wskazanie co jest nie tak, dopiero potem propozycje poprawy, alternatywy.

Można użyć pre-loaderów, ale IMHO sprites jest łatwiejsze (skoro już mówimy o 3-ech postach użytkownika). Poza tym, propozycję użycia js bezpośrednio w img dała osoba mająca 5x więcej postów winksmiley.jpg

Rzucenie haseł jest jak najbardziej ok, osoby, które dopiero zaczynają mają od razu kilka cennych informacji, o których warto poczytać. Bez tych haseł mogłyby przed długi czas nie wiedzieć o ich istnieniu. Zresztą moim zdaniem od samego początku warto uczyć się jak najlepszych wzorców, po co powielać czyjeś błędy...

Użyszkodnika interesuje efekt końcowy i to jak strona działa. Szybkość działania strony, jej niezawodność zależy też od zastosowanych technik. Przykładowy preloader w js zadziała dopiero po całkowitym załadowaniu strony. Czyli jeśli po załadowaniu całego kodu strony, wczytaniu css i img przeglądarka będzie ściągać np jQuery z cdn googl'a, to hover w takim menu nie zadziała. Nie tak dawno widziałem menu oparte na obrazkach wstawionych pomiędzy znacznik <a></a>, gdzie szerokość przycisku była determinowana szerokością obrazka. W przypadku pierwszego najechania na pozycję w menu, stary obrazek znikał, a do czasu załadowania nowego kolor czcionki się zmieniał (link przestawał być widoczny) menu się zjeżdżało, uciekało z pod kursora, pod kursor wchodziła następna pozycja, która również znikała. W takiej sytuacji korzystanie z menu stawało się bardzo utrudnione, na chwilę wręcz niemożliwe. Jestem przekonany, że dla użytkownika zmiana zastosowanej metody miałaby znacznie.
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.