Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][AJAX][JavaScript]animowane menu
interu58
post 30.10.2014, 00:30:42
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 25.10.2012

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


Witam,

Poszukuje podpowiedzi w jaki sposób mogę zrobić takie pojawiające się menu jak to ze strony poniżej. Chodzi o menu z ikonkami.
http://strategaresearch.pl/
Zaglądałem w kod źródłowy i próbowałem napisać coś podobnego, ale niestety za słaby jestem i mi to kompletnie nie chce działać.
Go to the top of the page
+Quote Post
kamilo818
post 30.10.2014, 09:03:04
Post #2





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


Chodzi Ci o menu : Badania Jakościowe, Ilościowe, Kontakt, Panel, aktualności ?
Po najechaniu myszką podświetlenie ikony i rozszeżająca się linia na dole?

Jeśli tak to chyba lepiej zrobić tą animacje za pomocą css.
Coś takiego:

html:
  1. <div class="kafel">
  2. <div id="ikona"></div>
  3. <span id="nazwa">Kontakt</span>
  4. <hr id="linia">
  5. <span id="opis">Jakiś opis...</span>
  6. </div>

css:
  1. .kafel{
  2. cursor:pointer;
  3. width:200px;
  4. height:150px;
  5. }
  6. .kafel #ikona{
  7. margin:auto;
  8. width:80px;
  9. height:80px;
  10. background-image:url('tutaj link do tła') no-repeat;
  11. background-size:cover;
  12. }
  13. .kafel:hover #ikona{
  14. background-image:url('tutaj link do tła po najechaniu myszką') no-repeat;
  15. }
  16. hr#linia{
  17. width:80px;
  18. -webkit-transition: all 0.5s ease-in-out;
  19. -moz-transition: all 0.5s ease-in-out;
  20. -o-transition: all 0.5s ease-in-out;
  21. transition: all 0.5s ease-in-out;
  22. }
  23. hr#linia:hover{
  24. width:160px;
  25. color:red;
  26. }


Jeśli chodzi o animację ikony to można coś takiego zrobić:
  1. <div id="ikona">
  2. <img src="link do obrazka przed najechaniem myszką" id="back"/>
  3. <img src="link do obrazka po najechaniu myszką" id="top"/>
  4. </div>

  1. #ikona{
  2. position:relative;
  3. }
  4. #ikona img{
  5. position:absolute;
  6. top:0;
  7. left:0;
  8. width:100%;
  9. height:100%;
  10. }
  11. #ikona img#top{
  12. opacity:0;
  13. -webkit-transition: all 0.5s ease-in-out;
  14. -moz-transition: all 0.5s ease-in-out;
  15. -o-transition: all 0.5s ease-in-out;
  16. transition: all 0.5s ease-in-out;
  17. }
  18. .kafel:hover #ikona img#top{
  19. opacity:1;
  20. }


Ten post edytował kamilo818 30.10.2014, 10:19:22
Go to the top of the page
+Quote Post
interu58
post 30.10.2014, 13:15:39
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 25.10.2012

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


dzięki. ale bardziej chodziło mi o to, że to menu się pojawia po załadowaniu strony i jak to zrobić, żeby była taka animacja niż o to co się dzieje po najechaniu myszką. oraz jak ustawić te elementy na konkretnej pozycji. w przypadku tej strony chyba zastało to zrobione za pomocą "data-x", "data-y", ale jak ja zapisuje to w podobny sposób to mi nie działa. wszystkie pozycje menu ustawiają mi się jedna pod druga a nie obok siebie na konkretnej wysokości strony.
Go to the top of the page
+Quote Post
kamilo818
post 31.10.2014, 09:48:19
Post #4





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


Czyli tobie chodzi nie jak zrobić takie menu tylko jak zrobić żeby ono tak się pojawiało.

Może coś w tym stylu.
  1.  
  2. jQuery(document).ready( function(){
  3. jQuery('.kafel').slideUp();
  4. } );
  5.  


Jeśli chodzi o ustawienie elementów to to są divy w lini. Jak tobie wyświetlają sie jeden pod drugim to musisz zmienic ne display:inline-block;
Go to the top of the page
+Quote Post
interu58
post 31.10.2014, 22:20:39
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 25.10.2012

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


Hmm...wrzuciłem sobie ten Twój kod odnośnie menu i coś tu nie działa.
Generalnie ikonki/obrazki nie wyświetlają się - trzeba zmienić
#ikona img{
position:absolute;

na relative


zmiana obrazka po najechaniu muszką nie działa zupełnie.

<img src="link do obrazka przed najechaniem myszką" id="back"/>
<img src="link do obrazka po najechaniu myszką" id="top"/> ----> sprawia, ze obrazek który jest przed najechaniem myszą staje się większy, a nie się zamienia na inny. nie zachodzi tez żadna zamiana przy użyciu myszki.

nie rozumiem po co to rozdzielenie kafla i ikon, w sensie, ze mi to nie działa poprawnie.

Przerobiłem kod na taki:
<div id="kafel">
<a href="#kontakt" title="kontakt">
<div id="ikona">
<img src="kontakt.png" id="back"/>
</div>

<span id="nazwa">kontakt</span>
<hr id="linia">

</a>
</div>

i to niby działa, poza tym, że mam 4 pozycje w menu i pierwsza ma zawsze większy obrazek od pozostałych - nie wiem czym to jest spowodowane.
no i nie działają te zmiany po najechaniu myszką o których wspominałem.

Go to the top of the page
+Quote Post
kamilo818
post 1.11.2014, 11:24:54
Post #6





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


Nie możesz zmienić na relative bo nie będą sie wyświetlały jeden pod drugim.
Kod pisany z palca wiec może się zdarzyć że coś nie zadziała. To jest przedstawienie schematu...
Ale wydawaje się że powinno działać poprawnie... i działa. Dla pewności wrzuciłem

http://page4u.waw.pl/test.php

Wiadomo musisz go podrasować dla swoich potrzeb. Ale sam mechanizm działa poprawnie
Go to the top of the page
+Quote Post
interu58
post 2.11.2014, 00:32:02
Post #7





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 25.10.2012

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


No faktycznie. Działa. Ale jak wrzucam na moją stronę to już nie działa. w sensie ta animacja nie przechodzi płynnie od lewej do prawej. tylko wszystkie kwadraty pojawiają się na raz od góry do dołu. Próbowałem zmieniać ustawienia css ale bez skutku. Wygląda to kiepsko. Może to kwestia innych skryptów umieszczonych na stronie - mogą one ze sobą kolidować?
Ja to menu mam umieszczone w zakładce oferta. Można ten skrypt przerobić tak żeby się uruchamiał po przewinięciu (wybraniu z menu"oferta") strony do zakładki oferta? Strona jest zrobiona jako "one page site" stąd pisze o przewijaniu.
Go to the top of the page
+Quote Post
kamilo818
post 2.11.2014, 10:06:50
Post #8





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


Może nie masz biblioteki jQuery dołączonej?
w head
  1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>


Możesz to zrobić żeby się odpliło przy przewijaniu strony.
W przykładzie: jesli scroll bedzie na wysokosci równej badz większej niz 120 px to menu sie pokaże
  1. $(window).scroll(function () {
  2. if ($(this).scrollTop() > 120) {
  3. $('.kafel').each(function(){
  4. $(this).fadeIn(i+100);
  5. i=i+400;
  6. });
  7. }
  8. });


wynik: http://page4u.waw.pl/test.php

Ten post edytował kamilo818 2.11.2014, 10:11:00
Go to the top of the page
+Quote Post
interu58
post 2.11.2014, 20:41:49
Post #9





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 25.10.2012

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


Mam dołączoną jQuery:) okazało się, że nie zauważyłem, ze mam jeszcze jeden skrypt pod tego samego diva.

Mi ten link, który podałeś nie działa. Nie pojawia się menu po przesunięciu suwaka.

Próbowałem przerobić to na kod, który by uruchamiał ta animacje po wybraniu z menu zakładki oferta, wyszło mi coś takiego:

<script>
$('.kafel').hide();
$(document).ready( function(){
var t = $("#oferta").offset().top;

$(document).scroll(function () {
if ($(this).scrollTop() + 300 >= t ) {
$('.kafel').each(function(){
$(this).fadeIn(i+100);
i=i+400;
});
}
});


});

</script>

ale i tak nie działa. w sensie animacja uruchamia się tak samo jak do tej pory. masz może jakiś pomysł gdzie jest błąd?


Go to the top of the page
+Quote Post
kamilo818
post 3.11.2014, 09:27:48
Post #10





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


  1. $(window).scroll(function () {
  2. if ($(this).scrollTop() > 120) {
  3. $('.kafel').each(function(){
  4. $(this).fadeIn(i+100);
  5. i=i+400;
  6. });
  7. }
  8. });

To musi działać.
funkcja odczytuje ci czy strona jest scrollowana. Jesli ta strona jest scrollowana i wysokość scrolla jest poniżej 120 px to odpala sie animacja każdego elemenu .kafel.

na http://page4u.waw.pl/test.php działa 100%.

Pokaż wiecej kodu.
Albo wrzuć sobie to do odzielnego pliku - same menu. Zobaczysz czy działa. Jak działa to masz problem z innym elementem kodu.
Go to the top of the page
+Quote Post
interu58
post 4.11.2014, 00:10:57
Post #11





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 25.10.2012

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


Tak działa, miałem problem z innym skryptem, którego zapomniałem usunąć. Ale ten link, który przesłałeś wcześniej nie działał smile.gif Wielkie dzięki.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 12:07