[ Príspevok: 1 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.09.07
Prihlásený: 21.03.24
Príspevky: 263
Témy: 62 | 62
NapísalOffline : 28.01.2009 10:40 | Vertikálne rolovacie menu v JS

Kedze nepatrim medzi tych co len beru a nic nedaju ... prispievam aj ja troskou ... menu je napisane JavaScriptom ... podobne ako ma napr. Agem.sk alebo Sofos.sk, dufam ze sa Vam to zide. Pokial si najde uplatnenie, pouyite ho.

tree.js

Kód:
tree = {
   /* ------------------ user customization starts here ------------------ */
   
   // classes used in HTML document to mark important elements
   classRoot         : "tree",      // ULs with this class will be transformed into trees
   classDefault      : "default",   // LIs with this class will be expanded by default
   classLast         : "last",      // this class will be added to all last branches of the tree
                              // (this is good for easier CSS formatting of the tree)
   
   // paths to images used in tree nodes
   nodeExpand         : "images/tree-plus.gif",      // image of expandable node
   nodeExpandAlt      : "[ + ] ",
   nodeCollapse      : "images/tree-minus.gif",      // image of collapsable node
   nodeCollapseAlt      : "[ - ] ",
   nodeNone         : "images/tree-none.gif",      // image for node without children
   nodeNoneAlt         : "[ · ] ",
   
   /* ------------------ user customization ends here ------------------ */   


   // initialisation of the tree
   init : function() {
      // find all unordered lists marked as trees
      var uls = tree.getElementsByClassName(document, tree.classRoot, "ul");
      for (var i = 0; i < uls.length; i++) {
         // find all last branches of the tree and mark them
         tree.markLast(uls[i]);
         var uls2 = uls[i].getElementsByTagName("ul");
         for (var j = 0; j < uls2.length; j++) {
            tree.markLast(uls2[j]);
         }
         
         // ad node pictures to all branches
         var lis = uls[i].getElementsByTagName("li");
         for (var j = 0; j < lis.length; j++) {
            tree.addNode(lis[j]);
         }
         
         // collapse all branches at the start
         tree.collapseAll(uls[i]);
         
         // find default branches and expand them      
         var def = tree.getElementsByClassName(uls[i], tree.classDefault, "li");
         for (var j = 0; j < def.length; j++) {
            var path = new Array();
            var step = def[j];
            while (step != uls[i]) {
               if (step.tagName == "LI") {
                  tree.expand(step);
               }
               step = step.parentNode;
            }
         }
      }
   },

   // adds node picture at the beginning of all branches
   addNode : function(elm) {
      var uls = elm.getElementsByTagName("ul");
      var image = document.createElement("img");
      if (uls.length > 0) {
         image.src = tree.nodeExpand;
         image.alt = tree.nodeExpandAlt;
         evt.add(image, "click", tree.changeState);
      } else {
         image.src = tree.nodeNone;
         image.alt = tree.nodeNoneAlt;
      }
      elm.insertBefore(image, elm.firstChild);
   },
   
   // gets the actual state of branch and changes it
   changeState : function(e) {
      e = evt.fix(e);
      var obj = (e.currentTarget) ? e.currentTarget : e.target;
      while (obj.tagName != "LI") {
         obj = obj.parentNode;
      }
      if (obj.state == "collapsed") {
         tree.expand(obj);
      } else {
         tree.collapse(obj);
      }
   },
   
   // expands given branch
   expand : function(elm) {
      var uls = elm.getElementsByTagName("ul");
      for (var i = 0; i < uls.length; i++) {
         if (uls[i].parentNode == elm) {
            uls[i].style.display = "block";
            uls[i].parentNode.state = "expanded";
            elm.firstChild.src = tree.nodeCollapse;
            elm.firstChild.alt = tree.nodeCollapseAlt;
         }
      }
   },
   
   // collapses given branch
   collapse : function(elm) {
      var uls = elm.getElementsByTagName("ul");
      for (var i = 0; i < uls.length; i++) {
         if (uls[i].parentNode == elm) {
            uls[i].style.display = "none";
            uls[i].parentNode.state = "collapsed";
            elm.firstChild.src = tree.nodeExpand;
            elm.firstChild.alt = tree.nodeExpandAlt;
         }
      }
   },
   
   // collapses all branches in the given tree
   collapseAll : function(elm) {
      if (elm.tagName == "LI") {tree.expand(elm);}
      var lis = elm.getElementsByTagName("li");
      for (var i = 0; i < lis.length; i++) {
         tree.collapse(lis[i]);
      }
   },
   
   // expands all branches in the given tree
   expandAll : function(elm) {
      if (elm.tagName == "LI") {tree.expand(elm);}
      var lis = elm.getElementsByTagName("li");
      for (var i = 0; i < lis.length; i++) {
         tree.expand(lis[i]);
      }
   },
   
   // marks the last branch in the given branch as last
   markLast : function(elm) {
      var lis = elm.getElementsByTagName("li");
      var i = lis.length - 1;
      while (lis[i].parentNode != elm) {i--;}
      cls.add(lis[i], tree.classLast);
   },
   
   // returns all elements with given class, that are children of given source element
   // attribute tagName is not required, but it speeds up the function a bit
   getElementsByClassName : function(srcElm, clName, tName) {
      foundElements = [];
      tName = (tName) ? tName.toUpperCase() : "*";
      allElements = srcElm.getElementsByTagName(tName);
      for (var i = 0; i < allElements.length; i++) {
         if (cls.has(allElements[i], clName)) {
            foundElements[foundElements.length] = allElements[i];
         }
      }
      return foundElements;
   }

};

// initialisation of the script on load
evt.add(window, "load", tree.init);


tree.css

Kód:
ul.tree, ul.tree ul {
   margin: 0px;
   padding: 0px;
   list-style: none;
}
ul.tree li {
   margin: 0;
   padding: 0px 0px 0px 19px;
   text-indent: -19px;
   background: url(images/tree-line-vertical.gif) top left repeat-y;
}
ul.tree li.last {
   background-image: url(images/tree-line-last.gif);
   background-repeat: no-repeat;
   background-position: top left;
}

.tree img {
   border: 0px;
   vertical-align: middle;
}

Tak zatim


 [ Príspevok: 1 ] 


Vertikálne rolovacie menu v JS



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Rolovacie menu

v HTML, XHTML, XML, CSS

3

1831

22.05.2007 16:55

p360t

V tomto fóre nie sú ďalšie neprečítané témy.

naj jednoduchšie rolovacie menu

v HTML, XHTML, XML, CSS

1

956

05.06.2007 14:26

Tominator

V tomto fóre nie sú ďalšie neprečítané témy.

rolovacie menu v php

v PHP, ASP

21

1739

05.05.2008 15:11

pitbull

V tomto fóre nie sú ďalšie neprečítané témy.

Rolovacie menu vo wordpresse.

v Redakčné systémy

0

731

05.02.2010 12:56

zeto750

V tomto fóre nie sú ďalšie neprečítané témy.

Vertikalne menu

[ Choď na stránku:Choď na stránku: 1, 2 ]

v HTML, XHTML, XML, CSS

34

887

21.03.2014 13:14

petko117

V tomto fóre nie sú ďalšie neprečítané témy.

vertikalne rozbalovacie menu

v JavaScript, VBScript, Ajax

7

4420

24.01.2007 22:07

m@-nX

V tomto fóre nie sú ďalšie neprečítané témy.

vertikalne menu IE

v HTML, XHTML, XML, CSS

1

737

01.03.2012 16:14

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

vertikalne jquery accordion menu

v JavaScript, VBScript, Ajax

7

473

30.01.2013 22:48

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

Vertikalne 3-urovnove menu

v HTML, XHTML, XML, CSS

7

602

13.03.2014 20:31

Mego

V tomto fóre nie sú ďalšie neprečítané témy.

"Rolovacie" menu

v HTML, XHTML, XML, CSS

3

3268

17.11.2007 17:54

viktorcech

V tomto fóre nie sú ďalšie neprečítané témy.

rolovacie koliesko myšky

v Externé zariadenia

1

380

18.01.2013 16:06

walther

V tomto fóre nie sú ďalšie neprečítané témy.

vertikalne zarovnanie textu

v HTML, XHTML, XML, CSS

20

2218

03.01.2008 15:12

vkmt

V tomto fóre nie sú ďalšie neprečítané témy.

vertikalne uchytenie grafickej karty

v Ostatné

4

655

30.06.2018 21:14

Juryoku

V tomto fóre nie sú ďalšie neprečítané témy.

WP vertikalne zarovnane 3 obrazky

v Redakčné systémy

6

500

12.04.2015 18:45

eMp

V tomto fóre nie sú ďalšie neprečítané témy.

Dva monitory nad sebou - vertikálne presúvanie

v Operačné systémy Microsoft

3

639

24.12.2017 16:27

Doldy

V tomto fóre nie sú ďalšie neprečítané témy.

Ako vertikalne zarovnan na stred toto?

v HTML, XHTML, XML, CSS

4

612

21.12.2007 19:46

Matho



© 2005 - 2024 PCforum, edited by JanoF