Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js]menu rozwijane
Forum PHP.pl > Forum > Przedszkole
misty
hej!
wiem ze temat na forum byl poruszany setki razy i niby cala masa na ten temat na googlach..
ale ludzie podsylaja sobie wszedzie gotowce albo proponuja dolaczenie swoich skryptow..
musze zrobic menu rozwijane (tzn. jak najade na element to ma sie pojawic lista-podmenu).
nie chce korzystac z gotowych rozwiazan ktorych jest cala masa bo nic sie wtedy nie naucze.
czy ktos z Was moglby polecic mi prosty kurs/sposob na zrobienie takiego menu? w javascript..
z gory dzieki!
i mam nadz ze nie rozzloscilam mocno moderatorow poruszajac po raz kolejny ten watek (na prawde przejrzalam wczesniej watki na ten temat na tym forum..)

pzdr!
Istalacar
Witam
Kiedyś chciałem sobie zrobić własne menu i to jest właśnie tego owoc, przeanalizuj kod, może Ci się przyda.
http://ogorek.webd.pl/JS/menu.htm
Pozdrawiam
Istalacar
woj_tas
A nie może być na Css-ie z odrobiną JS...winksmiley.jpg

Zobacz to: suckerfish
misty
Istlar:
w tym linku co mi podeslales jest tylko jakis textarea do wpisywania tekstu..

woj_tas :
no bez css sie nie obejdzie.. ale chyba nie da rady tylko na nich polegac..

chodzi mi o to jak zrobic takie menu jak np. na str blatka:

http://blatek.ma.ciekawe.info/javascript/f.../al1/index.html

jak sie najedzie myszka na gorne menu, to rozwija sie podmenu. i wlasnie o to mi chodzi - jak zrobic to pojawiajace sie podmenu? to nie moze byc jakies bardzo trudne..
empathon
Link który podał woj_tas to opisuje. Przypatrz się dobrze.
misty
tak miales racje.. przyznaje ze nie przejrzalam strony zbyt dokladnie, angielskie teksty czasem mnie odstraszaja a na pierwszy rzut oka nie wygladalo to na to czego szukam..
zwracam honor i na prawde dzieki za pomoc!!!

jedno tylko jeszcze pytanie.. co z ta pseudoklasa 'hover'? bo raz dziala a raz nie.. tzn. dodam jakis komentarz albo cos dopisze i nagle wogole przestaje mi dzialac.. testuje na firefoxie i konqueror i dziala tak bardzo w kratke..

mam jeszcze takie 2 pytania z racji tego ze sposob ten jest bardzo zalezny od przegladarek..
1. jest tam dodana pewna funkcja w java_script ktora trzeba dodac by to chodzilo pod IE.
kod tej fkcji:

<script type="text/javascript"><!--//--><![CDATA[//><!--

sfHover = function() {
var sfEls = document.getElementById("nav").getElementsByTagName("LI");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=" sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
}
}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

//--><!]]></script>" title="Zobacz w manualu PHP" target="_manual



nie wiem czemu, ale w miejscu for (var i=0; i<sfEls.length; i++)" title="Zobacz w manualu PHP" target="_manual, tu gdzie zaczyna sie znak '<' jest to troche inaczej interpretowane.. tak jakbym miala wstawic tam jakis znacznik, albo wpisac np. <script>. po prostu od tego momentu kod nie jest intepretowany prawidlowo..

2. druga sprawa, to w przegladarkach takich jak mozzila i firefox nie znikaja mi te 'kropki' ktore nadaja znaczki ul i li. (pod konqerorem z kolei ladnie ich nie widac). chcialabym je ukryc.. tylko nie do konca wiem jak..
podsylam moj kod:

  1. <style type="text/css">
  2.  
  3. #menu, #menu ul {
  4. padding: 0;
  5. margin: 0;
  6. list-style: none;
  7. }
  8. #menu a {
  9. display: block;
  10. width: 15em;
  11. }
  12.  
  13. #menu li {
  14. float: left;
  15. width: 15em;
  16. font-size:15;
  17.  
  18. }
  19.  
  20. #menu li ul {
  21. position : absolute;
  22. width: 15em;
  23. left: -999em;
  24. }
  25.  
  26. #menu li:hover ul, #menu li.sfhover ul {
  27. left: auto;
  28. }
  29.  
  30. </style>
  31.  
  32. <!-- teraz funkcja w javascripcie ktora musi byc zeby pod IE dzialalo..-->
  33.  
  34. <script type="text/javascript">
  35.  
  36. sfHover = function()
  37. {
  38. var sfEls = document.getElementById("menu").getElementsByTagName("LI");
  39.  
  40. for (var i=0; i<sfEls.length; i++) <!--wlasnie w tym miejscu przy znaku '<' kod nie jest dalej interpretowany jako funkcja..-->
  41.  
  42. {
  43. sfEls[i].onMouseOver=function()
  44. {
  45. this.className+="sfhover";
  46.  
  47. }
  48. sfEls[i].onMouseOut=function()
  49. {
  50. this.className=this.className.replace(new RegExp("sfhover\\b"),"");
  51. }
  52. } }
  53.  
  54. if (window.attachEvent) window.attachEvent("onload", sfHover);
  55. </script>
  56.  
  57. </head>
  58. <ul id="menu">
  59. <table border><tr><td>
  60. <li><a href="#"><center>jeden</center></a>
  61. <ul><table border><tr><td>
  62. <li><a href="#"><center>jeden.jeden</center></a></li>
  63. <li><a href="#"><center>jeden.dwa</center></a></li>
  64. <li><a href="#"><center>jeden.trzy</center></a></li></td></td></tr></table>
  65. </ul>
  66. </li>
  67.  
  68. <td><li><a href="#"><center>dwa</center></a>
  69. <ul><table border><tr><td>
  70. <li><a href="#"><center>dwa.jeden</center></a></li>
  71. <li><a href="#"><center>dwa.dwa</center></a></li></td></td></tr></table>
  72. </ul>
  73. </li>
  74.  
  75. <td><li><a href="#"><center>trzy</center></a>
  76. <ul><table border><tr><td>
  77. <li><a href="#"><center>trzy.jeden</center></a></li>
  78. <li><a href="#"><center>trzy.dwa</center></a></li></td></td></tr></table>
  79. </ul>
  80. </li>
  81. </body>
  82. </html>



ma ktos z Was moze pomysl? jak to ulepszyc pod IE by dzialalo i jak pozbyc sie tych kropek?
Kamson
hmm dziwne .. u mnie pod IE działa i pod FF tak samo

moje pytanie :
po co to?:
  1. <table border><tr><td>
misty
noo tabelka.. chcialam miec w tabelce. zreszta to nieistotne.

caly czas nie dziala mi pod IE. doczytalam ze IE ponizej wersji 7mej nie obsluguje 'hover', wiec sugerujac sie radami z jakiegos innego wortalu, dodalam wpis:

  1. body {
  2. behavior ("csshover.htc");}


kod csshover.htc to czarna skrzynka, wiec nie zalaczam..
plik wrzucilam do tego samego katalogu gdzie moj glowny plik i niestety nadal pod IE nie dziala..
probowalam tez przy
  1. behavior ("csshover.htc");
podac pelna sciezke, bez apostrofow, z pojedynczym, etc jednak nadal IE nie wysuwa mi menu..
pod wersja IE 7 ktora niby obsluguje hover tez nie dziala..

z zaimplementowanej w przykladzie fkcji sfHover zrezygnowalam bo tez nic nie dawalo..
ma ktos jakis pomysl jak zmusic IE do interpretowania hover'a?

pzdr!
joshrob
Cytat(misty @ 25.03.2007, 15:35:12 ) *
nie chce korzystac z gotowych rozwiazan ktorych jest cala masa bo nic sie wtedy nie naucze.

Cytat(misty @ 25.03.2007, 15:35:12 ) *
czy ktos z Was moglby polecic mi prosty kurs/sposob na zrobienie takiego menu? w javascript..


witam,

w przegladarkach internetowych javascript generalnie jest zbedny. w IE 6, w przypadku menu wielopoziomowego, niestety konieczny.

skoro chcesz sie uczyc a nie bezmyslnie kopiowac (co Ci sie chwali) to zamieszcze ponizej kod, ktory wlasnie napisalem. bez komantarzy i podpowiedzi. jesli znasz podstawy CSS to kod sam ci sie powinien tlumaczyc z tego co robi i zaden komentarz potrzebny nie jest.

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  3. <title>pure css dropdown</title>
  4. <style type="text/css">
  5. ul{
  6. list-style: none;
  7. padding: 0; margin: 0;
  8. }
  9. ul.level1 ul{
  10. display: none;
  11. }
  12. ul.level1 li{
  13. position: relative;
  14. float: left;
  15. }
  16. ul.level1 li a{
  17. display: block;
  18. width: 100px;
  19. height: 30px;
  20. line-height: 30px;
  21. background: #CCC;
  22. text-align: center;
  23. }
  24. ul.level1 li a:hover{
  25. background: #AAA;
  26. }
  27. ul.level1 li ul.level2{
  28. width: 100px;
  29. }
  30. ul.level1 li:hover ul.level2{
  31. display: block;
  32. }
  33. ul.level2 li ul.level3{
  34. position: absolute;
  35. top: 0;
  36. left: 100px;
  37. width: 100px;
  38. }
  39. ul.level2 li:hover ul.level3{
  40. display: block;
  41. }
  42. <script type="text/javascript">
  43. function $(id){
  44. return document.getElementById(id);
  45. }
  46.  
  47. function IE(version){
  48. if(!version) version = 'all';
  49. var msieIndex = navigator.appVersion.indexOf("MSIE");
  50. if(msieIndex == -1) return false;
  51. var ieversion = parseFloat(navigator.appVersion.substr(msieIndex + 5,3));
  52. if(version == 'all' || ieversion <= version) return true;
  53. return false;
  54. }
  55. function on(el){
  56. if(IE(6)) $(el).style.display = 'block';
  57. }
  58. function off(el){
  59. if(IE(6)) $(el).style.display = 'none';
  60. }
  61. </head>
  62. <div>
  63. <ul class="level1">
  64. <li><a href="#">item 1</a></li>
  65. <li><a href="#">item 2</a></li>
  66. <li onmouseover="on('level2');" onmouseout="off('level2');"><a href="#">item 3</a>
  67. <ul id="level2" class="level2">
  68. <li><a href="#">item 3.1</a></li>
  69. <li><a href="#">item 3.3</a></li>
  70. <li onmouseover="on('level3');" onmouseout="off('level3');"><a href="#">item 3.3</a>
  71. <ul id="level3" class="level3">
  72. <li><a href="#">item 3.3.1</a></li>
  73. <li><a href="#">item 3.3.3</a></li>
  74. <li><a href="#">item 3.3.3</a></li>
  75. <li><a href="#">item 3.3.4</a></li>
  76. <li><a href="#">item 3.3.5</a></li>
  77. </ul>
  78. </li>
  79. <li><a href="#">item 3.4</a></li>
  80. <li><a href="#">item 3.5</a></li>
  81. </ul>
  82. </li>
  83. <li><a href="#">item 4</a></li>
  84. <li><a href="#">item 5</a></li>
  85. </ul>
  86. </div>
  87.  
  88. </body>
  89. </html>


kod jest walidowalny i dziala w ff 2.0.0.3, opera 9.10, ie 6.0; ie7 nie mam pod reka, ale tez powinno dzialac, jesli nie wlacz kod javascript dla wszystkich wersji IE.

generalnie podczas takich zabaw z css pamietac zawsze nalezy o poprawnym doctype oraz w IE 6 o kolorach tla, ktorych zmiana na :hover moze niezle pomieszac.

pozdrawiam,
misty
dzieki serio, sporo mi to pomoglo, przejrzalam, znalazlam bledy u siebie i jest ok pod IE. jedyne co jeszcze nie tak, to ze podmenu rozwija mi sie lekko przesuniete w prawo w stosunku do glownego menu, ale to juz popatrze sobie.

jedno takie pytanie mam. apropos tej fkcji function $(id)" title="Zobacz w manualu PHP" target="_manual
nie znam js, wiec moge sie jedynie domyslac..
chodzi o to, ze przypisuje ona odpowiednie akcje dla starszych wersji IE, ktore nie obsluguja hover?
ciezko bedzie napisac cos podobnego w php?

i jeszcze raz dzieki za pomoc!!:)
kwiateusz
$() to tylko alias funkcji document.getElementById która zwraca uchwyt do elementu o danym id, nie wiem jak chciałbyś ją odwzorować w php?
misty
nie mowie ze bede probowac ja pisac w php, bardziej sie zastanawialam czy sie da. tak z czystej ciekawosci:)
jeszcze raz dzieki za pomoc!!
pzdr!
joshrob
Cytat(misty @ 1.04.2007, 22:53:41 ) *
nie mowie ze bede probowac ja pisac w php, bardziej sie zastanawialam czy sie da. tak z czystej ciekawosci:)


poczytaj o haslach "clientside" i "serverside", wtedy poznasz odpowiedz na pytanie, czy sie da smile.gif

pozdrawiam,
Justin
Hi all. Look php tutorial.
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.