Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> ([CSS])Rozwijane menu
ShadowD
post
Post #1





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


Mam kody do rozwijanego menu w dół i w lewo oto one:

Lewe kod:

  1. body { behavior: url(qw.htc);}
  2.  
  3. #menu {width:100px; position: relative; margin-bottom:3px}
  4. #menu #tytul {background-image: url('1.bmp'); width:100px; height:21px;}
  5. #menu #tytul2 {position:absolute; top:0px; visibility:hidden; background-image: url('2.bmp'); width:103px; height:21px;}
  6. #menu #lista {position:absolute; top:0px; left:103px; visibility:hidden;}
  7. #menu #tytul, #tytul2, a {background-repeat: no-repeat;}
  8. #menu a {display:block; width:100px; height:21px; background-image: url('forum.bmp'); margin-bottom:3px;}
  9. #menu:hover #lista {visibility:visible;}
  10. #menu:hover #tytul2 {visibility:visible;}
  11.  
  12. <div id='menu'>
  13. <div id='tytul'></div>
  14. <div id='tytul2'></div>
  15. <div id='lista'>
  16. <a href=#></a>
  17. <a></a>
  18. <a></a>
  19. <a></a>
  20. </div></div>
  21. <div id='menu'>
  22. <div id='tytul'></div>
  23. <div id='tytul2'></div>
  24. <div id='lista'>
  25. <a></a>
  26. <a></a>
  27. <a></a>
  28. <a></a>
  29. </div></div>
  30. <div id='menu'>
  31. <div id='tytul'></div>
  32. <div id='tytul2'></div>
  33. <div id='lista'>
  34. <a></a>
  35. <a></a>
  36. <a></a>
  37. <a></a>
  38. </div></div>
  39. <div id='menu'>
  40. <div id='tytul'></div>
  41. <div id='tytul2'></div>
  42. <div id='lista'>
  43. <a></a>
  44. <a></a>
  45. <a></a>
  46. <a></a>
  47. </div></div>


Dolne kod:

  1. body { behavior: url(qw.htc);}
  2.  
  3. div {width:100px;}
  4. div a {display:block; border:1px solid black; width:100px; text-align:center;}
  5. div p {margin:0px; visibility:hidden; position:absolute;}
  6.  
  7. div #menu {font-weight:600}
  8. div #lista {margin-top:3px;}
  9.  
  10. div:hover p {visibility:visible;}
  11.  
  12.  
  13. <div>
  14. <a id='menu'>Menu</a>
  15. <p>
  16. <a id='lista'>qwqw</a>
  17. <a id='lista'>qwqw</a>
  18. </p>
  19. </div>


Są to moje projekty a wiec udostępniam je, starałem się by działały pod najważniejszymi przeglądarkami i działają z wyjątkiem ie lecz i na to znalazłem sposób kod JS który już nie jest moim autorstwem kod:

  1. <attach event="ondocumentready" handler="parseStylesheets" />
  2. <script language="JScript">
  3.  
  4. var currentSheet, doc = window.document, activators = {
  5. onhover:{on:'onmouseover', off:'onmouseout'},
  6. onactive:{on:'onmousedown', off:'onmouseup'}
  7. }
  8.  
  9. function parseStylesheets() {
  10. var sheets = doc.styleSheets, l = sheets.length;
  11. for(var i=0; i<l; i++)
  12. parseStylesheet(sheets[i]);
  13. }
  14. function parseStylesheet(sheet) {
  15. if(sheet.imports) {
  16. try {
  17. var imports = sheet.imports, l = imports.length;
  18. for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
  19. } catch(securityException){}
  20. }
  21.  
  22. try {
  23. var rules = (currentSheet = sheet).rules, l = rules.length;
  24. for(var j=0; j<l; j++) parseCSSRule(rules[j]);
  25. } catch(securityException){}
  26. }
  27.  
  28. function parseCSSRule(rule) {
  29. var select = rule.selectorText, style = rule.style.cssText;
  30. if(!(/(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i).test(select) || !style) return;
  31.  
  32. var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
  33. var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
  34. var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
  35. var affected = select.replace(/:hover.*$/, '');
  36. var elements = getElementsBySelect(affected);
  37.  
  38. currentSheet.addRule(newSelect, style);
  39. for(var i=0; i<elements.length; i++)
  40. new HoverElement(elements[i], className, activators[pseudo]);
  41. }
  42.  
  43. function HoverElement(node, className, events) {
  44. if(!node.hovers) node.hovers = {};
  45. if(node.hovers[className]) return;
  46. node.hovers[className] = true;
  47. node.attachEvent(events.on,
  48. function() { node.className += ' ' + className; });
  49. node.attachEvent(events.off,
  50. function() { node.className =
  51. node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
  52. }
  53.  
  54. function getElementsBySelect(rule) {
  55. var parts, nodes = [doc];
  56. parts = rule.split(' ');
  57. for(var i=0; i<parts.length; i++) {
  58. nodes = getSelectedNodes(parts[i], nodes);
  59. } return nodes;
  60. }
  61. function getSelectedNodes(select, elements) {
  62. var result, node, nodes = [];
  63. var classname = (/\.([a-z0-9_-]+)/i).exec(select);
  64. var identify = (/\#([a-z0-9_-]+)/i).exec(select);
  65. var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
  66. for(var i=0; i<elements.length; i++) {
  67. result = tagName? elements[i].all.tags(tagName):elements[i].all;
  68. for(var j=0; j<result.length; j++) {
  69. node = result[j];
  70. if((identify && node.id != identify[1]) || (classname && !(new RegExp('\\b' +
  71. classname[1] + '\\b').exec(node.className)))) continue;
  72. nodes[nodes.length] = node;
  73. }
  74. } return nodes;
  75. }


Trzeba go zapisać jako plik "qw.htc".

WAŻNE NIE POZWALAM SIĘ PODPISWAĆ POD AUTORSTWEM TEGO SKRYPTU!!

Może przydadzą się komuś łatwo je edytować... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował ShadowD 28.03.2008, 22:06:21
Go to the top of the page
+Quote Post
grzesiek_g
post
Post #2





Grupa: Zarejestrowani
Postów: 249
Pomógł: 30
Dołączył: 18.07.2007

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


Menu nie tworzy się na znacznikach div lub p, bardziej do tego odpowiednie są listy. A to rozwiązanie nie jest takie doskonałe, w sieci pełno lepszych przykładów.

P.S. Zauważyłem, że wykorzystujesz na tła pliki .bmp, to nie format do sieci, za duży. Najlepsze rozwiązanie to .png, odpowiednio zoptymalizowany.
Go to the top of the page
+Quote Post
ShadowD
post
Post #3





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


Ach co do grafiki to tylko przykład.. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
A co do li i ui to też nie jest najlepszy przykład ponieważ jest duży problem do dopasowania wglądu w wszystkich przeglądarkach i w nie których nie wgląda to najlepiej. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Zamieściłem jak komuś się przyda to niech sobie weźmie a jak nie to nie... (IMG:http://forum.php.pl/style_emoticons/default/haha.gif)
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: 22.08.2025 - 14:43