Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] rozszerzanie z przysłanianiem DIVa
krzychos7
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.01.2010

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


Mam jakby tabelkę z 6 diwów w jednym (2 kolumny po 3 linie). Chciałbym zrobić efekt taki iż po kliknięciu na jeden z nich tak jakby zmaksymalizuje się on na powierzchnię która one wszystkie zajmują rozwijając więcej treści. Natomiast po ponownym kliknięciu by z powrotem powrócił na swoje miejsce. Z animacją daję radę, z pokazywaniem treści również. Jedynie mam problem z "wyrwaniem z szeregu" takiego DIVa, nawet jak zmieniam mu z-index to rozsuwa on resztę DIVów.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
piotrooo89
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




kod pokaż kod jak robisz to rozszerzanie.
Go to the top of the page
+Quote Post
Czadus
post
Post #3





Grupa: Zarejestrowani
Postów: 164
Pomógł: 4
Dołączył: 29.08.2008

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


Wstawiłbym to w tabelkę o takiej samej strukturze, jak twój układ divów, w każdą komórkę wstawiłbym diva z position absolute, odpowiednio oczywiście wypozycjonowanym itp. Powiększanie diva nie powinno spowodować rozsuwania, przesuwania itp pozostałej części strony z divami.

Rozwiązanie na szybko, nie widziałem Twojego kodu jeszcze.
Go to the top of the page
+Quote Post
krzychos7
post
Post #4





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.01.2010

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


Tak zaczełem testować:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
  3. <title>test</title>
  4. <meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8" />
  5. <script type="text/javascript" src="jquery.js"></script>
  6. <script type="text/javascript" src="jquery.corner.js"></script>
  7. <script type="text/javascript" src="http://www.google.com/jsapi"></script>
  8. <script type="text/javascript">google.load("jqueryui", "1.7.2");</script>
  9. body {
  10. text-align: center;
  11. margin: 0;
  12. padding: 0;
  13. border: 0;
  14. background: #1a1a1a;
  15. }
  16. #kontener{
  17. text-align: left;
  18. width: 965px;
  19. margin: 0 auto;
  20. padding: 5px;
  21. color: #fff;
  22. margin-top: 30px;
  23. }
  24. .box{
  25. color: #b3dcf9;
  26. display: block;
  27. height: 140px;
  28. background: #f00;
  29. width: 474px;
  30. margin: 0px;
  31. margin-right: 4px;
  32. padding: 0px;
  33. float: left;
  34. margin-bottom: 4px;
  35. overflow: hidden;
  36. }
  37. <script type="text/javascript" >
  38. $(document).ready(function(){
  39. $('.box').corner("5px");
  40. $('.box').click(function(){
  41. var z = $(this).css('z-index');
  42. if(z==2){
  43. $(this).animate({width: '474px', height: '140px'}, 500, function(){
  44. $(this).css({'z-index': '0', 'position': 'relative'});
  45. });
  46. }
  47. else {
  48. $(this).animate({width: '952px', height: '428px'}, 500).css({'z-index': '2', 'position': 'absolute'});
  49. }
  50. });
  51. });
  52. </head>
  53. <div id="kontener">
  54. <div class="box">
  55. <p>
  56. 1
  57. </p>
  58. </div>
  59. <div class="box">
  60. <p>
  61. 2
  62. </p>
  63. </div>
  64. <div class="box">
  65. <p>
  66. 3
  67. </p>
  68. </div>
  69. <div class="box">
  70. <p>
  71. 4
  72. </p>
  73. </div>
  74. <div class="box">
  75. <p>
  76. 5
  77. </p>
  78. </div>
  79. <div class="box">
  80. <p>
  81. 6
  82. </p>
  83. </div>
  84. </div>
  85. </div>
  86. </body>
  87. </html>>


Pomogło dodanie display: absolute; podczas animacji (wcześniej odrzuciłem tą myśl gdyż wydawało mi się że pozycje ustosunkuje do całej strony a nie DIVa nadrzędnego).
Jednakże aktualnie każdy DIV najpierw pojawia się w górnym lewym roku "kontenera" i tam dopiero się rozszerza. Czy ma ktoś może pomysł jak zrobić by rozszerzał się od tego miejsca w którym się znajduje?
Chodzi mi przy tym o dość uniwersalne rozwiązanie (temu też nie tabelki) które będzie działało niezależnie od tego ile będę miał kolumn i linii w takim 'obiekcie'.
Go to the top of the page
+Quote Post
Czadus
post
Post #5





Grupa: Zarejestrowani
Postów: 164
Pomógł: 4
Dołączył: 29.08.2008

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


Dzięki tabelce udało mi się wypozycjonować diva w określonym miejscu, i odziwo, działa to pod każda przeglądarką. Skoro dynamicznie możesz dodawać nowe divy itp, to dynamicznie możesz także stworzyć dowolną tabelkę a w każdej jej komórce dodać diva, następnie odpowiednio go wypozycjonować. Działa na 100%. Nie wiem, co jeszcze potrzebujesz, rozwiązanie również jest uniwersalne. Oczywiście div o zadanym position absolute lepiej, aby nie miał ustawionych atrybutów top oraz left.

Chyba, że pokażesz mniej więcej jak to dokładnie ma działać. Może jest inne rozwiązanie. Nie masz tego gdzieś online??
Go to the top of the page
+Quote Post
krzychos7
post
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.01.2010

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


Ogulnie z wypozycjonowaniem nie ma zbytnio problemu, to że DIVy pod spodem się podsuwają to nie przeszkadza ważne że już nie wyskakują poza. Tu jest to online: http://cybers.pl/testy/1/
Zaś chodzi mi o to że teraz przed animacją przez to że przyjmuje position: absolute; wskakuje on na lewy górny róg tego DIVa i dopiero stamtąd się rozszerza. Natomiast chciałbym by rozszerzał się od miejsca gdzie się znajduje domyślnie. Nie widziałem czegoś takiego jeszcze w JavaScript, prędzej we Flashach. Zaś chodzi mi o coś podobnego do tego efektu: http://docs.jquery.com/UI/Effects/Transfer jednakże właśnie w połączeniu tego co mam, czyli zwykłe rozszerzanie się całego DIVa (nie generowanie ramki) tak jak jest w moim przykładzie jednak w sposób podobny do tej ramki, czyli od pierwotnego położenia.
Go to the top of the page
+Quote Post
Czadus
post
Post #7





Grupa: Zarejestrowani
Postów: 164
Pomógł: 4
Dołączył: 29.08.2008

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


Hmmmm..... już widzę problem. Generalnie, trzebaby zastanowić się nad pobraniem pozycji danego diva względem okna. Jeżeli takie będziemy posiadać, można z pomocą funkcji jQuery animate nie tylko zwiększać/zmniajszać wielkość diva, ale również jego położenie w oknie poprzez atrybuty left oraz top.
Go to the top of the page
+Quote Post
krzychos7
post
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.01.2010

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


Właśnie też powoli dochodzę do wniosku iż nie będzie to prosta sprawa. Chyba ogólnie będę musiał zrobić funkcję ustawiającą divy relatywnie do okna, by zawsze było centrowane zaś zarazem miało position: absolute; by można było wszystkie obiekty niezależnie od siebie animować.
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: 24.08.2025 - 05:58