![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 19.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam problem. Chciałbym zrobić powoli zanikające okienko, więc wykombinowałem coś takiego:
Niestety po kliknięciu na przycisk okienko (ten div z "a" i zamykającym okno "x") całkowicie znika zamiast stopniowo robić się przeźroczyste. Podejrzewam, że po prostu nie może odczytać coś danych z css. Pytanie tu - jak to zrobić? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 575 Pomógł: 299 Dołączył: 26.03.2009 Ostrzeżenie: (20%) ![]() ![]() |
Użyj frameworka jQuery.
Ten post edytował Wicepsik 12.03.2010, 20:15:24 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
a dokładnie fadeIn() i/lub fadeOut().
-------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 19.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ok. Udało mi się coś wykombinować. Oto działający kod:
Ten post edytował Sueroski 12.03.2010, 20:31:49 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
A jeśli jednak chcesz zrobić to w czystym JS, co jest bardzo proste to:
- nie setTimeout, a setInterval - element.style pobiera style tylko z atrybutu style, więc po prostu przypisz przezroczystość w tym atrybucie - jeżeli jednak nie możesz tego zrobić pobaw się z getComputedStyle - https://developer.mozilla.org/en/DOM:window.getComputedStyle - użyj operatora -= - referencję do elementu możesz zapisać do zmiennej globalnej, zamiast szukać elementu co sekundę w drzewie DOM @up: popraw ten kod, stosując się do moich wskazówek, bo niestety zbyt ładnie on nie wygląda. Ten post edytował kamil4u 12.03.2010, 20:40:58 -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 19.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Aha dzięki. A możesz mi wytłumaczyć, że za pomocą tego kodu:
Okienko zamyka się bez efektu zanikania? Po prostu normalnie? Gdzie jest błąd? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Błędów jest bardzo dużo(lepiej zrób to według moich wskazówek, bo inaczej będzie tylko ciężej):
- document.getElementById('tresc').style.visibility='hidden'; <-- już na wstępie chowasz tego div-a, więc nie może być mowy o żadnym efekcie - nie setTimeout, a setInterval (już Ci to pisałem) - zmienna a rośnie w nieskończoność, a może być jedynie w przedziale <0,1> - podpowiedź: użyj tej funkcji: clearInterval https://developer.mozilla.org/pl/DOM/window.setInterval https://developer.mozilla.org/en/DOM/window.clearInterval Ten post edytował kamil4u 12.03.2010, 21:37:48 -------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 19.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ok. Dzięki za porady
![]() Jednak muszę was jeszcze troszkę pomęczyć ![]() Otóż warunek nie chce się spełnić. Postawiłem alert, żeby mi pokazywał wartość "a" i przy 3 wykonaniu odliczenia wychodzi "0.7000000000000001" i dalej ten błąd się cały czas ciągnie i warunek nie może się wykonać. JS kiepski z matmy, że nie potrafi poprawnie odliczać po 0.1? Proszę o pomoc (zaś ![]()
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Nigdy nie dawaj alertów w nieskończonej pętli
![]() Szczerze powiedziawszy nie wiem, dlaczego tak się dzieje, a nie chce mi się tego dokładnie analizować. Zamiast znaku równości(==)zastosuj znaki mniejsze równe i większe równe. I dla pewności w if-e przypisz od a dokładnie 1 lub 0. Po co na siłę, chcesz korzystać z tej zmiennej a? Kod <style type="text/css"> Nie wiem dlaczego, ale w funkcji open, nie specjalnie chce dzialac +=
#tresc{ position: absolute; width: 100px; height: 100px; margin-top: 120px; margin-left: 120px; background-color: red; } </style> <script type="text/javascript"> window.onload = function(){el = document.getElementById('tresc'); } function close(){ el.style.opacity-=0.1; if(el.style.opacity<=0){ clearInterval(intervalID); alert('close end'); } } function open(){ el.style.opacity-=-0.1; if(el.style.opacity>=1){ clearInterval(intervalID); alert('open end'); } } </script> <a onclick="intervalID=setInterval('open()',50);" href="#">a</a> <div id="tresc" style="opacity: 1;">a <a onclick="intervalID=setInterval('close()',50);" href="#">a</a></div> -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 19.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki. Odświeżam, bo może ktoś wie czemu nie chce się dodawać? (wersja z odejmowaniem liczb ujemnych to też dobre wyjście, ale jestem ciekaw)
JS ma chyba jakąś inną logikę myślenia Ten post edytował Sueroski 14.03.2010, 13:55:26 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 00:54 |