Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][CSS]jquery ui dialog
Forum PHP.pl > Forum > Przedszkole
Gość
witam

mam na stronie kilka elementow, po ktorych kliknieciu wyskakuje obok nich jquery ui dialog
na poczatku badam pozycje kazdego z tych elementow, a pozniej ustawiam odpowiednia pozycje podczas inicjowania jquery ui dialog
pozycja elementu jest liczona w pixelach od poczatku strony
pozycja okienka jquery jest liczona w pixelach od krawedzi przegladarki
czyli w momencie gdy przewine strone w dol powstanie niezgodnosc

da sie jakos sprawdzic o ile px strona zostala przesunieta w dol?
tolomei
Witaj.

Finkcja, której szukasz to scrollTop().

Pozdrawiam
Gość
pomylka - jquery liczy od gory strony
natomiast faktem jest, ze jak wklepie pozycje [200, 300], czyli 200 od lewej i 300 od gory, a strona bedzie przewinieta to dostane np. style="left: 200px; top: 288px"
z czego to wynika... nie wiem
tolomei
Podajesz za mało precyzyjne dane abym mógł Ci pomóc.

Jakiś kod może?
Gość
Sprawa wyglada tak:
* mam kilka przyciskow pod soba, po kliknieciu obok przycisku pojawia sie okienko
  1. <button onclick="pokazOkienko( [ID], this )">pokaz okienko</button>


* funkcja pokazOkienko:
  1. function pokazOkienko(videoID, thisE) {
  2. var pos = $(thisE).position();
  3.  
  4. deleteVideoDialog = $('#dialog').dialog({
  5. position: [400, pos.top-40], // ustawia pozycje okienka obok przycisku
  6. });
  7. }
  8.  


przygotowalem demo problemu:
  1. <link rel="stylesheet" href="http://jqueryui.com/themes/base/jquery.ui.all.css">
  2. <script src="http://jqueryui.com/jquery-1.7.1.js"></script>
  3. <script src="http://jqueryui.com/external/jquery.bgiframe-2.1.2.js"></script>
  4. <script src="http://jqueryui.com/ui/jquery.ui.core.js"></script>
  5. <script src="http://jqueryui.com/ui/jquery.ui.widget.js"></script>
  6. <script src="http://jqueryui.com/ui/jquery.ui.mouse.js"></script>
  7. <script src="http://jqueryui.com/ui/jquery.ui.draggable.js"></script>
  8. <script src="http://jqueryui.com/ui/jquery.ui.position.js"></script>
  9. <script src="http://jqueryui.com/ui/jquery.ui.resizable.js"></script>
  10. <script src="http://jqueryui.com/ui/jquery.ui.dialog.js"></script>
  11. <link rel="stylesheet" href="http://jqueryui.com/demos/demos.css">
  12.  
  13.  
  14. var currentButton;
  15.  
  16. function pokazOkienko(thisE) {
  17. var pos = $(thisE).position();
  18.  
  19. //ostatnio klikniety przycisk
  20. $(thisE).css('color', '#f00');
  21. $(currentButton).css('color', '#000');
  22. currentButton=thisE;
  23.  
  24. $('#dialog').dialog({
  25. position: [100, pos.top-60],
  26. });
  27. }
  28.  
  29.  
  30. <button onclick="pokazOkienko(this);">przycisk 1</button>
  31. <br><br><br><br><br><br>
  32. <button onclick="pokazOkienko(this);">przycisk 2</button>
  33. <br><br><br><br><br><br>
  34. <button onclick="pokazOkienko(this);">przycisk 3</button>
  35. <br><br><br><br><br><br>
  36. <button onclick="pokazOkienko(this);">przycisk 4</button>
  37. <br><br><br><br><br><br>
  38. <button onclick="pokazOkienko(this);">przycisk 5</button>
  39. <br><br><br><br><br><br>
  40. <button onclick="pokazOkienko(this);">przycisk 6</button>
  41.  
  42. <div id="dialog" style="display: none; font-size: 22px; text-align: center;">
  43.  
  44. jakas tresc okienka
  45.  
  46. </div>


dla pewnosci pokazuje jak to u mnie wyglada
czerwony kolor pokazuje ostatnio klikniety przycisk

1. duzy ekran, nie ma przewijania - dziala
http://imageshack.us/photo/my-images/594/s...exhtmlgoog.png/
http://imageshack.us/photo/my-images/594/s...exhtmlgoog.png/

2. maly ekran, suwak na gorze - dziala
http://imageshack.us/photo/my-images/3/scr...exhtmlgoog.png/

3. maly ekran, suwak na dole - nei dziala
http://imageshack.us/photo/my-images/252/s...exhtmlgoog.png/
http://imageshack.us/photo/my-images/703/s...exhtmlgoog.png/

z niejasnego dla mnie powodu jquery dodaje cos od siebie do position
tolomei
Problem tkwi w tym, że funkcja position zwraca ilość pikseli od krawędzi dokumentu - nie zależnie od przewijania.

Za to parametr position dla widget-a dialog() określa odległość pikselach od krawędzi okna przeglądarki.

Aby ujednolicić sposób interpretacji - należy uwzględnić schowaną część strony.
W skrypcie została utworzona dodatkowa zmienna o nazwie hiddenPart i została ona uwzględniona przy wyświetlaniu okienka.

Podgląd tutaj: http://jsfiddle.net/bzwierzynski/6QUxk/show/
Kod tutaj: http://jsfiddle.net/bzwierzynski/6QUxk/

Pozdro
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.