Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z pozycjonowaniem <span>
Forum PHP.pl > Forum > Po stronie przeglądarki
ins@ne
Robie takie tooltipy, ktore po najechaniu np. na link wyswietlaja jakis tekst (pelna sciezke itp.). Tworze w tym celu nowy obiekt SPAN i mam teraz z nim problem jesli chodzi o pozycjonowanie. Powinien byc on zawsze ustawiony wzglednie wzgledem obiektu, ktorego dotyczy czyli np. przesuniety 20px w prawo i w dol od linka, na ktory sie najezdza kursorem. Niestety moje dzisiejsze doswiadczenia z parametrem relative daly mi znac, ze jesli pojawi sie po tym linku jakis <br> to automatycznie mi ten span "ucieka" (tak jakby ten <br> rowniez do niego sie odnosil. Probowalem juz wielu rzeczy - pierwsze co to ustawilem mu wysoki z-index, ale to tez nic nie pomoglo sad.gif (moze dlatego, ze pozostale elementy na stronie nie sa na warstwach i nie maja zadnego z-indeksu ustawionego), potem kombinowalem z pobieraniem offsetTop (tak zeby ustawic position: absolute i wartosc top ustawic jakos offsetTop), ale efekt byl taki jakby ten span nie mial zadnego rodzica sad.gif (a chyba powinna to byc ramka, w ktorej go wywoluje)... Ponizej zamieszczam fragment kodu, moze ktos z Was bedzie wiedzial jak to rozwiazac.
Skrypt (zalaczany w pliku scripts.js):
  1. function showTip(strArg) {
  2. newLayer = document.createElement("SPAN");
  3. var layerText = document.createTextNode(strArg);
  4. newLayer.appendChild(layerText);
  5. document.body.appendChild(newLayer);
  6. newLayer.style.position = "relative";
  7. newLayer.style.top = 10+'px';
  8. newLayer.style.left = 10+'px';
  9. newLayer.style.zIndex = 5;
  10. }

Strona:
  1. // index.htm
  2. <title>Tooltip in frames</title>
  3. </head>
  4. <frameset cols="25%,*%">
  5. <frame scrolling="auto" name="lewa" src="lewa.htm">
  6. <frame scrolling="yes" name="prawa" src="prawa.htm">
  7. </html>
  8.  
  9. // lewa.htm
  10. <script src="scripts.js"></script>
  11. <a href="JavaScript: void(null);" onMouseOver="showTip('To jest tip lewy...');" onMouseOut="hideTip();">lewa</a><br><br>
  12. </body>
  13. </html>
  14.  
  15. // prawa.htm
  16. <frameset rows="*%,25%">
  17. <frame name="gora" src="gora.htm">
  18. <frame name="dol" src="dol.htm">
  19. </html>
  20.  
  21. // gora.htm
  22. <script src="scripts.js"></script>
  23. <a href="JavaScript: void(null);" onMouseOver="showTip('To jest tip gorny...');" onMouseOut="hideTip();">gora</a>
  24. a to dalej jakis tekst pod spodem...<br><br><br>
  25. </body>
  26. </html>
  27.  
  28. // dol.htm
  29. <script src="scripts.js"></script>
  30. <a href="JavaScript: void(null);" onMouseOver="showTip('To jest tip dolny...');" onMouseOut="hideTip();">dol</a>
  31. </body>
  32. </html>

To sa oczywiscie surowe ramki, w ktorych tylko testowo umieszczalem jakis tekst. Najlepiej problem widac w gora.htm bo tam sa te brake'i za linkiem i przez nie ten tooltip mi "ucieka". Jesli ktos wie jak rozwiazc taki problem z pozycjonowaniem (moze jakos obliczyc wartosc gdyby zastosowac absolute albo jakos "ominac" te <br>) to bede bardzo wdzieczny.
Aha... niestety nie wchodzi w gre ustawienie innych elementow na stronie w warstwach bo ja tylko dorabiam skrypt do juz istniejacej strony i nie moge w niej nic zmieniac sad.gif
sf
Hm, wydaje mi się, że do tego DIV jest bardziej odpowiedni, a SPAN był stosowany głównie do definicji wyglądu, a nie pozycji...
ins@ne
Tylko, ze <div> ma te wade, ze trzeba ustalic jego dlugosc (width), a nie bardzo jak mam to obliczyc (warstwa powinna sie konczyc zaraz za tekstem). Div mi sie ciagnie niestety do konca linii, a span sie konczyl zaraz za tekstem - dlatego na spana sie przesiadlem (ale ani jeden, ani drugi jakis satysfakcjonujacy nie jest sad.gif ).
bregovic
a nie mozesz dla div'a ustalic style="display: inline;" albo cos takiego? bo div rozciaga sie tylko dlatego ze ma natywnie display: block...
ins@ne
no wlasnie sek w tym, ze gdy na to samo dzisiaj wpadlem i ustawilem display: inline to sie okazalo, ze warstwa tez mi ucieka. Nie mam pojecia jak obejsc te cholerne <br>, ktore mi burza cala funkcje (a juz tak ladnie dzialala w testach no biggrin.gif)
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.