Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Podmiana obrazka w linku
Forum PHP.pl > Forum > Po stronie przeglądarki > CSS
TomASS
Mam coś takiego:
  1. <a href="#"><img src="dot4a.gif"/>Wymiana taboru<br/></a>
  2. <a href="#"><img src="dot4a.gif"/>Nowy punkt obsługi<br/></a>
  3. <a href="#"><img src="dot4a.gif"/>Jest nas więcej<br/></a>

dot4a.gif to zielone słoneczko
dot4b.gif to pomarańczowe słoneczko

chcę zrobić aby po najechaniu na linka słoneczko zmieniło się z zielonego na pomarańczowe, czyli coś takiego (myszką najechałem na środkowy link):


na razie wydziergałem coś takiego:
  1. function $(id){
  2. return document.getElementById(id);
  3. }
  4.  
  5. function zmien_obrazek(obrazek){
  6. $(obrazek).src="dot4b.gif";
  7. }
  8.  
  9. function przywroc_obrazek(obrazek){
  10. $(obrazek).src="dot4a.gif";
  11. }
  12. <a href="#" onmouseover="zmien_obrazek('menuimg1');" onmouseout="przywroc_obrazek('menuimg1');"><img id="menuimg1" src="dot4a.gif"/>Wymiana taboru<br/></a>
  13. <a href="#" onmouseover="zmien_obrazek('menuimg2');" onmouseout="przywroc_obrazek('menuimg2');"><img id="menuimg2" src="dot4a.gif"/>Nowy punkt obsługi<br/></a>
  14. <a href="#" onmouseover="zmien_obrazek('menuimg3');" onmouseout="przywroc_obrazek('menuimg3');"><img id="menuimg3" src="dot4a.gif"/>Jest nas więcej<br/></a>

ale to chyba o dupę rozbić - pewnie da się jakoś w css :/

Dzięki!
mike
Daj to słonko jako tło dla <a> i na zdarzenie najechania myszki na <a> zdefiniuj w CSS podmianę tła.
Możesz przeciez to zrbić w pseudoklasie :hover dla <a>

  1. <style type="text/css">
  2. a.menu {
  3. background: url('dot4a.gif') left no-repeat;
  4. }
  5.  
  6. a.menu:hover {
  7. background: url('dot4b.gif') left no-repeat;
  8. }
  9.  
  10. <a href="" class="menu">jeden</a>
  11. <a href="" class="menu">dwa</a>
  12. <a href="" class="menu">trzy</a>


Coś takiego
exseerius
No da sie latwiej.... Robisz tak:

  1. <a href="#">Link 1</a>
  2. <a href="#">Link 2</a>
  3. <a href="#">Link 3</a>

i teraz style:
  1. a,
  2. a:visited {
  3. padding-left: (tutaj szerokosc tego obrazka w px+ jakieś3px nadto, żeby ładnie wyglądało);
  4. background: url('dot4a.gif') no-repeat left;
  5. line-height: (wysokosc obrazka);
  6. text-decoration: none;
  7. }
  8. a:hover,
  9. a:active {
  10. background: url('dot4b.gif') no-repeat left;
  11. }


Jak coś to pisz...
TomASS
Wiedziałem, że da się prościej smile.gif
Dzięki

Cytat
Daj to słonko jako...

Jak mike do mnie słodko mówisz tongue.gif

o to chodziło smile.gif

Cytat
No da sie latwiej...

Wybacz, ale mike zrobił to łatwiej smile.gif

Też kombinowałem tak jak Ty, ale coś mi nie wychodziło...jednak Twój sposób też jest dobry smile.gif

Dodam jeszcze, że zrobiłem tak jak mike i dodałem padding, bo tekst wchodził na obrazek:
  1. a.menu {
  2. background: url('dot4a.gif') left no-repeat;
  3. padding-left: 20px;
  4. }
  5.  
  6. a.menu:hover {
  7. background: url('dot4b.gif') left no-repeat;
  8. }


Dzięki
babejsza
Zasugeruję jeszcze jedną możliwość. Linki daj do listy nieuporządkowanej i im w tle przypisz pomarańczowe słonko. Dla samych linków zdefiniuj tlo na zielone słoneczko, a dla hover'a daj background: none.

W css kodu będzie troszkę więcej, ale będą dwie korzyści:

- lista w liście
- tło dla hover'a załaduje się od razu, a nie dopiero po najechaniu na pozycję.
TomASS
W listy wolę się nie pchać - różnie wyglądają pod różnymi przeglądarkami - ale dzięki za sugestię.
babejsza
A od kiedy to różnie wygląda pod różnymi przeglądarkami smile.gif. Kwestia odpowiedniego ostylowania i wszędzie będzie tak samo. No ale z tego co można się domyślić to to będzie narzędzie, a nie strona więc można sobie darować winksmiley.jpg.
Kreton
Co do zmiany obrazka można to zrobić dużo lepiej, nie będzie też efektu ładowania. Mam na myśli najazd na słoneczko, czekamy aż się załaduje obrazek. Nie ! To trzeba tak:

Kod
a.menu { background: url('obrazek.gif') no-repeat 0 0; }

a.menu:hover { background: url('obrazek.gif') no-repeat 0 25px; }


Tylko wtedy masz 1 obrazek. Na górze jedno słoneczko na dole drugie. Oczywiście te 25px dałem przykładowo.
Rzast
Kreton:
Cytat
Tylko wtedy masz 1 obrazek. Na górze jedno słoneczko na dole drugie. Oczywiście te 25px dałem przykładowo.


Wszystko pięknie, ładnie, ale się jeszcze piękniej sypie jak Ci się link na 2 wiersze robi, bo widać wtedy oba słoneczka. A czasami się tak zdarza, jeśli link jest długi, a szerokość menu stała....

Można zrobić jak exseerius lub mike, a żeby nie było ładowania, to na początku body umieścić niewidzialnego (display:none) diva z zapalonym słoneczkiem. Załaduje się, ale będzie niewidoczny
Kreton
Wyżej rozmawialiśmy o menu tylko z jedną linią w menu. Problem podany przez Ciebie można trochę inaczej ominąć. Można zastosować więcej przestrzeni między omawianymi słoneczkami. Co do dodawania niewidoczengo diva. Bez sensu moim zdaniem, dodajemy nic nieznaczące śmieci, szczególnie, że można to rozwiązać za pomocą czystego CSS-a.
pavobe
W skrócie:

Menu zrobił bym na li'ach i dał słonko pierwsze jako punktor. Gdy li będzie aktywowane (najechalne), to w CSS ustawić zmienę punktora na słonko 2.
Kreton
Beznadziejne rozwiązanie, ze względu na opóźnienie w ładowaniu. Przecież sposób podany przeze mnie też działa tylko i wyłącznie na CSS-ie, bez efektu ładowania.
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.