Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS] Obrazek w ustalonej pozycji z tabeli
wojteke
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.07.2009

Ostrzeżenie: (0%)
-----


Witam

Chciałbym, by po najechaniu na pole danej komórki w tabeli, w ustalonej pozycji wyświetlił się obrazek z boku komórki. Nie wiem czy dobrze kombinuję, dlatego zwracam się do Was o pomoc. Właściwie już prawie udało mi się osiągnąć zamierzony efekt. Problem mam tylko taki, że używając stylu css: position: relative; obrazek, który mi się wyświetla obok, zajmuje dodatkowo miejsce w komórce, z której rzekomo został "przesunięty".

Sytuacje doskonale widać na poniższym screenie:

(IMG:http://www.fothost.pl/upload/09/38/979f443e.gif)

Przedstawiam kod:

  1. <style type="text/css">
  2. div.submenu
  3. {
  4. position: relative;
  5. left: -150px;
  6. top: -75px;
  7. visibility: hidden;
  8. }
  9.  
  10. <script type="text/javascript">
  11. <!--
  12. function Pokaz(nazwa)
  13. {
  14. document.getElementById(nazwa).style.visibility = 'visible';
  15. document.getElementById(nazwa).parentNode.style.backgroundColor = 'green';
  16. }
  17. function Ukryj(nazwa)
  18. {
  19. document.getElementById(nazwa).style.visibility = 'hidden';
  20. document.getElementById(nazwa).parentNode.style.backgroundColor = 'Transparent';
  21. }
  22. //-->
  23. </script>
  24.  
  25. </head>
  26. <br /><br /><br /><br /><br />
  27. <table border="1">
  28. <tr>
  29. <td class="menuitem" onmouseover="Pokaz('SubMenu1')" onmouseout="Ukryj('SubMenu1')">
  30. napis
  31. <div id="SubMenu1" class="submenu">
  32. <img src="image.jpg" border="0px">
  33. </div>
  34. </td>
  35. </tr>
  36. </table>
  37. </center>
  38. </body>
  39. </html>


position: absolute; nie wchodzi chyba w grę, bo chciałbym, by zawsze obrazek pojawiał się w tym samym miejscu na stronie.

Pozdrawiam!

Ten post edytował wojteke 15.09.2009, 23:09:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




http://osiolki.net/tabelki
Go to the top of the page
+Quote Post
wojteke
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.07.2009

Ostrzeżenie: (0%)
-----


No wiem, wiem, że tabele są złe i w ogóle ale ciężko mi jest się przestawić, gdy używam parę skryptów tj. tablesorter. Na dobrą sprawę chodzi tutaj o prawdziwą tabelkę z "danymi tabelarycznymi". Wyjątkowo chciałbym, by po najechaniu myszką na jedną z komórek, pojawił się z boku obrazek ale w ustalonej pozycji (px w lewo). Wiecie może jak to zrobić nie używając CSS'a, tylko javascript'a?
Go to the top of the page
+Quote Post
zegarek84
post
Post #4





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


bardzo to mógłbyś to zrobić bez js tylko używając css.... ale skoro chcesz w js to musisz obliczyć pozycję komórki tabeli względem dokumentu (w jquery była odpowiednia własność) - możesz w sumie do wyznaczenia tej pozycji wspomóc się w czystym js jeszcze getComputedStyle - zwróci Ci to obiekt z właściwościami przeliczonymi względem głównego dokumentu - mając tą właściwość po prostu w obliczonej pozycji wyświetlisz dymek który nie będzie się ruszał - ale w sumie na to jest wiele rozwiązań (IMG:style_emoticons/default/winksmiley.jpg) [jak mawiają każda droga prowadzi do Rzymu)

ok - ale co Ci szkodzi CSS samo??
może to Cię zainteresuje jeszcze ;p - wcześniej nakierowywałem na to na co sam się uparłeś ;p
  1. td .hide {visibility:hidden;position:absolute;}
  2. td:hover .hide {visibility:visible;margin-left:-200px}
  3. </style></head>
  4. <br /><br /><br /><br /><br /><br /><br /><br />
  5. <table border="1">
  6. <tbody><tr>
  7. <td> <div class="hide">
  8. <img src="http://www.google.pl/intl/en_com/images/logo_plain.png"><br /> umyślałem sobie dymek ;p - równie dobrze klasa mogła być tylko do obrazka przypisana ;)
  9. </div>
  10. napis g h gsdf sdfd gdsf sdgdfsfg dfs dfsg sdg ds
  11. </td>
  12. </tr>
  13. </body></html>


Ten post edytował zegarek84 17.09.2009, 11:07:14
Go to the top of the page
+Quote Post
wojteke
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.07.2009

Ostrzeżenie: (0%)
-----


Dzięki! Nie wiedziałem, że w dymek można wsadzić img. (IMG:style_emoticons/default/yahoo.gif)

Mam jeszcze jeden problem. Mam nadzieję, że do niego też nie trzeba zastosować JS, chociaż widać, że chyba tutaj trzeba wstawić jakieś warunki.

Problem przedstawiam w poniższym screenie by klarowniej to wyglądało:

(IMG:http://feniksg.unixstorm.org/ftp/images/dwa_linki.gif)

I poniżej podaję kod:

  1. <br /><br /><br /><br /><br /><br /><br /><br />
  2.  
  3. <table border="1">
  4. <tr>
  5. <td>
  6. <a href="http://google.pl/" alt="teskt alternatywny">
  7. <div class="avatar_miniaturka">
  8. <img src="avatar.gif" border="0" onmouseover="this.src = 'avatar_active.gif'" onmouseout="this.src = 'avatar.gif'" >
  9. <div class="avatar">
  10. <img src="http://upload.wikimedia.org/wikipedia/commons/0/0d/Crystal_Clear_mimetype_image.png">
  11. </div>
  12. </div>
  13. </a>
  14. <div class="prowadzacy_link">
  15. <a href="http://google.pl/" alt="teskt alternatywny">
  16. napis
  17. </a>
  18. </div>
  19. </td>
  20. </tr>
  21. </tbody>


  1. a {
  2. color: #660000;
  3. text-decoration:none;
  4. }
  5. a:active {
  6. text-decoration: underline;
  7. }
  8. a:hover {
  9. text-decoration: underline;
  10. }
  11.  
  12. img {
  13. border: none;
  14. }
  15.  
  16.  
  17. /**/
  18.  
  19.  
  20. a .avatar {
  21. visibility:hidden;
  22. position:absolute;
  23. }
  24.  
  25. a:hover .avatar {
  26. visibility:visible;
  27. margin-left:-150px;
  28. margin-top:-60px;
  29. }
  30.  
  31. .avatar_miniaturka{
  32. width: 16px;
  33. height: 16px;
  34. float: left;
  35. }
  36. .avatar_miniaturka :active{
  37. width: 16px;
  38. height: 16px;
  39. }
  40.  
  41. .prowadzacy_link{
  42. float: left;
  43. width: 50px;
  44. text-align: center;
  45. }


Bardzo proszę o pomoc, bo naprawdę nie mam zielonego pojęcia jak to zrobić. W Internecie czy "szukajką" na forum też niczego ciekawego nie znalazłem.

Ten post edytował wojteke 17.09.2009, 17:34:56
Go to the top of the page
+Quote Post
zegarek84
post
Post #6





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


da się to zrobić przy pomocy tylko samego css - najpierw chciałem zrobić rozwiązanie niby popularne - ale w praktyce musiałbyś sporo w stylach zmieniać - zrobiłem rozwiązanie "uniwersalne" gdzie kod powinieneś zrozumieć bez problemu - tam w kodzie wstawia się tylko te trzy obrazki przy czym ten trzeci który jest pierwszym wyświetlanym obrazkiem nie musi mieć przypisanej klasy - z kolei te ukrywane obrazki muszą być przed tym trzecim (dało by się jeszcze inaczej ale szkoda komplikować) - obrazki do przykładu z forum:
[EDIT] ps - tutaj obrazki mają rużny rozmiar więc ten pierwszy nie jest "schowany" - mógłbym go w css ukryć [i jeśli w praktyce będziesz miał też obrazki różnej wielkości to napisz to poprawię i się ukryje bo to moment] ale jest on normalnie przesłonięty przez to drugie tło więc nie widzę potrzeby a lepiej Ci to zobrazuje - zresztą css jest krótki to tu już powinieneś wiedzieć co zrobić (IMG:style_emoticons/default/winksmiley.jpg)
  1. a {color: #660000;text-decoration:none;}
  2. a:active {text-decoration: underline;}
  3. a:hover {text-decoration: underline;}
  4.  
  5. .powiekszony, .tlo2 {position:absolute;visibility:hidden}
  6. .powiekszony {margin-left:-300px}
  7. a:hover .tlo2{visibility:visible}
  8.  
  9. a .img:hover .powiekszony {visibility:visible}
  10. </style></head>
  11. <br /><br /><br /><br /><br /><br /><br /><br />
  12.  
  13. <center><table border="1"><tbody><tr>
  14. <td>
  15. <a href="#">
  16. <b class="img">
  17. <img class="powiekszony" src="http://www.google.pl/intl/en_com/images/logo_plain.png" />
  18. <img class="tlo2" src="http://forum.php.pl/uploads/av-29013.jpeg" />
  19. <img class="tlo1" src="http://forum.php.pl/uploads/av-10281.jpg" />
  20. </b>
  21. tresc linka</a>
  22. </td>
  23. <td>druga komórka ;p</td>
  24. </tr></tbody></table></center>
  25. </body></html>


ps. zamiast obrazka "powiększony" możesz wstawić inny element BLOKOWY lub w stylach mu nadać właściwość blokową z tą klasą tworząc jakiś bardziej rozbudowany dymek (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował zegarek84 17.09.2009, 19:40:32
Go to the top of the page
+Quote Post
wojteke
post
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.07.2009

Ostrzeżenie: (0%)
-----


WIELKIE DZIĘKI (IMG:style_emoticons/default/yahoo.gif) oczywiście dokładnie przeanalizowałem jak to się robi - dzięki za lekcję (IMG:style_emoticons/default/haha.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 23:44