Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Podświetlenie wybranego radioboxa z obrazkiem
Forum PHP.pl > Forum > Po stronie przeglądarki
Maker5
Witam.
Jak zrobić aby po najechaniu myszka na pole wyboru radioboxa z obrazkiem, ten obrazek podświetlił się na kolorowo.

Teraz mam tak.


Chciałbym to zmienić aby domyślnie na starcie wszystkie obraz były szare
i po najechaniu myszką przez użytkownika na dany obrazek stanie się on kolorowy.
Czyli tak:



Następnie kiedy użytkownik kliknie i wybierze dany bank, kolor obrazka pozostanie na stałe, czyli tak:


teraz mój kod wygląda tak:

  1.  
  2. <tr>
  3. <td><input type="radio" name="Customer" id="Customer1" value="1" class="required"
  4. onclick="this.form.elements['Name'].disabled = this.form.elements['invoice'].disabled = !this.checked" /></td>
  5. <td width="135" align="left">
  6. <label for="Customer1" class="radio_img">
  7. <img width="135" height="40" src="img/logo_bank/kb.png" alt="">
  8. </label>
  9. </td></tr>
  10. <tr>
  11. <td><input type="radio" name="Customer" id="Customer2" value="2" class="required"
  12. onclick="this.form.elements['Name'].disabled = this.form.elements['invoice'].disabled = !this.checked" /></td>
  13. <td width="120" align="left">
  14. <label for="Customer2" class="radio_img">
  15. <img width="135" height="40" src="img/logo_bank/bph.png" alt="">
  16. </label>
  17. </td></tr>
  18. <tr>
  19. <td><input type="radio" name="Customer" id="Customer3" value="3" class="required"
  20. onclick="this.form.elements['Name'].disabled = this.form.elements['invoice'].disabled = !this.checked" /></td>
  21. <td width="135" align="left">
  22. <label for="Customer3" class="radio_img">
  23. <img width="135" height="40" src="img/logo_bank/nordea.png" alt="">
  24. </label>
  25. </td></tr>
  26.  
  27.  
trueblue
Jeśli ma działać również w starszych wersjach przeglądarek, to zamiast img ostyluj etykiety z pomocą backgorund.
Obrazki przygotuj tak, aby w jednym pliku były dwie wersje kolorystyczne (możesz nawet przygotować jeden plik dla wszystkich banków).
Po najechaniu (:hover) ustawiaj background-position przesunięte o X px w pionie lub poziomie (zależy czy wersja kolorowa będzie pod czarno-białą czy obok).
Do kliknięcia musisz użyć JS i dodać wtedy do etykiety klasę ze stylem jak :hover.
Maker5
Cytat(trueblue @ 16.03.2014, 16:35:21 ) *
Jeśli ma działać również w starszych wersjach przeglądarek, to zamiast img ostyluj etykiety z pomocą backgorund.
Obrazki przygotuj tak, aby w jednym pliku były dwie wersje kolorystyczne (możesz nawet przygotować jeden plik dla wszystkich banków).
Po najechaniu (:hover) ustawiaj background-position przesunięte o X px w pionie lub poziomie (zależy czy wersja kolorowa będzie pod czarno-białą czy obok).
Do kliknięcia musisz użyć JS i dodać wtedy do etykiety klasę ze stylem jak :hover.


nie jestem zaawansowanym koderem wiec prosiłbym o pomoc w przykładach.
To co napisałęś na pewno jest mądre ale dla mnie zbyt skomplikowane.
Mógłbym prosić o rozwinięcie.
trueblue
  1. <style type="text/css">
  2. label[for="Customer1"]{
  3. background-image:url(1.jpg);
  4. }
  5. label[for="Customer2"]{
  6. background-image:url(2.jpg);
  7. }
  8. label[for="Customer3"]{
  9. background-image:url(3.jpg);
  10. }
  11. label.radio_img{
  12. background-position:0 0;
  13. background-repeat:no-repeat;
  14. }
  15. label.radio_img:hover,
  16. label.radio_img.active{
  17. background-position:0 50px;
  18. }
  19. <script type="text/javascript">
  20. $(document).ready(function(){
  21. $('label.radio_img').click(function(){
  22. $('label.radio_img').removeClass('active');
  23. $(this).addClass('active');
  24. });
  25. });

Z wnętrza <label> usuwasz <img>.
1.jpg, 2.jpg i 3.jpg to pliki z logotypami, każdy plik ma wysokość 100px, 0-49px czarno-biały logotyp, 50-100px kolorowy.
JS korzysta z jQuery.
Maker5
Cytat(trueblue @ 16.03.2014, 17:35:48 ) *
  1. <style type="text/css">
  2. label[for="Customer1"]{
  3. background-image:url(1.jpg);
  4. }
  5. label[for="Customer2"]{
  6. background-image:url(2.jpg);
  7. }
  8. label[for="Customer3"]{
  9. background-image:url(3.jpg);
  10. }
  11. label.radio_img{
  12. background-position:0 0;
  13. background-repeat:no-repeat;
  14. }
  15. label.radio_img:hover,
  16. label.radio_img.active{
  17. background-position:0 50px;
  18. }
  19. <script type="text/javascript">
  20. $(document).ready(function(){
  21. $('label.radio_img').click(function(){
  22. $('label.radio_img').removeClass('active');
  23. $(this).addClass('active');
  24. });
  25. });

Z wnętrza <label> usuwasz <img>.
1.jpg, 2.jpg i 3.jpg to pliki z logotypami, każdy plik ma wysokość 100px, 0-49px czarno-biały logotyp, 50-100px kolorowy.
JS korzysta z jQuery.


świetne rozwiązanie z tym, że musiałem poprawić jedną wartość.
Obrazek mam 83 x 60 wysokosc (30px czarny, pod nim 30px kolorowy)


kod musiałem ustawić tak aby zgodnie z osią X Y przesuwało obrazek do góry aby był kolorowy widoczny czyli -30px

tak miałem to zrobić ? smile.gif dzięki

  1. label.radio_img{
  2. background-position:0 0px;
  3. background-repeat:no-repeat;
  4. }
  5. label.radio_img:hover,
  6. label.radio_img.active{
  7. background-position:0 -30px;
  8. }
trueblue
Jeśli działa poprawnie i z oczekiwaniami, to raczej tak miałeś zrobić.
Maker5
Cytat(trueblue @ 18.03.2014, 18:05:36 ) *
Jeśli działa poprawnie i z oczekiwaniami, to raczej tak miałeś zrobić.


tak działa tak jak powinno ale chciałem jeszcze z Toba skonsultować.

Ostatnia rzecz o którą prosiłbym.
Jak zrobić aby po wybraniu danego banku inne "radio" zostały wyłączone na disabled ?
Czyli ktoś wybiera
<input type="radio" name="Customer" id="Customer1" value="1" class="required" i tak dalej>

i pozostałe
id="Customer2" value="2"
id="Customer3" value="3"

stają się disabled.
Wiem, że coś na pewno

  1. <script type="text/javascript">


pomógłby ale nie umiem tego zrobić sad.gif
trueblue
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $('label.radio_img').click(function(){
  4. $('label.radio_img').removeClass('active');
  5. $(this).addClass('active');
  6. $('label.radio_img:not(.active)').parent().prev().find('input').prop('disabled',true);
  7. });
  8. });
Maker5
Dziękuję !
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.