Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    problema con menu verticale

    Salve,
    io ho un menu verticale fatto con javascript....
    Siccome è composto da menu e sottomenu, ho questo problema...
    Ogni volta che clicco sul menu e si apre il sottomenu corrispondente, anche il resto della pagina varia posizione a seconda della dimenaione del sottomenu.

    Come posso risolvere qst problema?

  2. #2
    non posso dirtelo senza vedere il codice HTML e CSS, puoi postare il link del sito?
    I DON'T Double Click!

  3. #3
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    gia senza link o almeno una preview e' difficile capire.

    Cmq per risolverti il prob ci sono molte lib js che ti possono aiutare.

    Io non li ho testati ma prova a dare un occhio :

    menu builder 1
    menu builder 2

    guida a menu dinamici

    Prova a darci un occhio

  4. #4
    Vi posto il codice....

    menu.txt che richiamo nella mia pagina aspx:

    <div style="width:100%; height:inherit;">
    <ul id="menu">[*]<%Response.Write(xmlAcc.getLblObject("lblSoluzioni "));%>
    1. <%Response.Write(xmlAcc.getLblObject("lblSoluzioni "));%>

    [*]<%Response.Write(xmlAcc.getLblObject("lblProdotti" ));%>
    1. <%Response.Write(xmlAcc.getLblObject("lblPer_linea "));%>
    2. <%Response.Write(xmlAcc.getLblObject("lblTutti_pro dotti"));%>

    [*]<%Response.Write(xmlAcc.getLblObject("lblSettore") );%>
    1. <%Response.Write(xmlAcc.getLblObject("lblArea_soft ware"));%>
    2. <%Response.Write(xmlAcc.getLblObject("lblConsulenz a_IT"));%>
    3. <%Response.Write(xmlAcc.getLblObject("lblPortali_a ziendali"));%>
    4. <%Response.Write(xmlAcc.getLblObject("lblSistemi_m icrocontrollore"));%>
    5. <%Response.Write(xmlAcc.getLblObject("lblArea_mult imedia"));%>

    [*]<%Response.Write(xmlAcc.getLblObject("lblCentro_as sistenza"));%>

    [/list]
    </div>

    menu.js

    if(!window.Node){
    var Node = {ELEMENT_NODE : 1, TEXT_NODE : 3};
    }

    function checkNode(node, filter){
    return (filter == null || node.nodeType == Node[filter] || node.nodeName.toUpperCase() == filter.toUpperCase());
    }

    function getChildren(node, filter){
    var result = new Array();
    var children = node.childNodes;
    for(var i = 0; i < children.length; i++){
    if(checkNode(children[i], filter)) result[result.length] = children[i];
    }
    return result;
    }

    function getChildrenByElement(node){
    return getChildren(node, "ELEMENT_NODE");
    }

    function getFirstChild(node, filter){
    var child;
    var children = node.childNodes;
    for(var i = 0; i < children.length; i++){
    child = children[i];
    if(checkNode(child, filter)) return child;
    }
    return null;
    }

    function getFirstChildByText(node){
    return getFirstChild(node, "TEXT_NODE");
    }

    function getNextSibling(node, filter){
    for(var sibling = node.nextSibling; sibling != null; sibling = sibling.nextSibling){
    if(checkNode(sibling, filter)) return sibling;
    }
    return null;
    }
    function getNextSiblingByElement(node){
    return getNextSibling(node, "ELEMENT_NODE");
    }

    // Menu Functions & Properties

    var activeMenu = null;

    function showMenu() {
    if(activeMenu){
    activeMenu.className = "";
    getNextSiblingByElement(activeMenu).style.display = "none";
    }
    if(this == activeMenu){
    activeMenu = null;
    } else {
    this.className = "active";
    getNextSiblingByElement(this).style.display = "block";
    activeMenu = this;
    }
    return false;
    }

    function initMenu(){
    var menus, menu, text, a, i;
    menus = getChildrenByElement(document.getElementById("menu "));
    for(i = 0; i < menus.length; i++){
    menu = menus[i];
    text = getFirstChildByText(menu);
    a = document.createElement("a");
    menu.replaceChild(a, text);
    a.appendChild(text);
    a.href = "#";
    a.onclick = showMenu;
    a.onfocus = function(){this.blur()};
    }
    }

    if(document.createElement) window.onload = initMenu;

  5. #5
    Scusa, ma a meno che tu non mi posti il codice in maniera leggibile, con i Tag BBcode, o mi posti il link non lo sto nemmeno a leggere
    I DON'T Double Click!

  6. #6
    Il link è questo....

    http://www.mediasoftonline.org/site2009/Home.aspx

    quando apro nel menu a sinistra il menu "settore", il resto della pagina cambia posizione.

  7. #7
    che domande, è una tabella: le celle devono avere la stessa altezza, quindi quando aumente l'altezza della cella di sinistra (dato che le sottovoci di settore sono parecchie) anche le altre celle della stessa riga devono aumentare l'altezza di consequenza.

    È uno dei tanti motivi per cui raccomandano di non usare le table per il layout del sito.

    ( http://en.wikipedia.org/wiki/Web_design_(Tableless) )
    I DON'T Double Click!

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Beh diciamo che potresti anche mettere un valign="top" cosi' indipendetemente dall'altezza della cella il suo contenuto sara' stampato sempre a partire dal primo pixel disponibile per la cella a meno di padding o margin.

    Cmq e' vero che le tabelle sono sconsigliate ma per layouts a tre colonne sinceramente la trovo una soluzione veloce e molto piu' cross browser di tanti css che ti fanno sclerare giorni perche in qlke browser si impalllano.

    Poi alla fine sta al web master decidere. Io di mio se ho piu' colonne tabellizzo con una semplice tabella mi risolvo millioni di problemi.

    Cmq ad oguno il suo.
    Prova a mettere il valign="top" sulle celle e poi vedrai che rimane in alto.

  9. #9
    Originariamente inviato da Virus_101
    Cmq e' vero che le tabelle sono sconsigliate ma per layouts a tre colonne sinceramente la trovo una soluzione veloce e molto piu' cross browser di tanti css che ti fanno sclerare giorni perche in qlke browser si impalllano.
    La capacità di un Web Designer si misura proprio da questo

    Prova a mettere il valign="top" sulle celle e poi vedrai che rimane in alto.
    Però così il contenuto della riga sottostante si sposta comunque, non è certo "la soluzione"...
    I DON'T Double Click!

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    io sono un programmatore, faccio anche contenuti web e io sinceramente miro alla semplicita' e alla velocita' non ho tempo ne tantomeno voglia di imapzzire su css div e robe simili.

    E cmq il valign="top" ti piazza il contenuto della cella in alto se lo fai su tutte e 3 le celle avrai tutti i contenuti che partono dall'alto INDIPENDETEMENTE dall'altezza della tabella.
    Io ti consiglio di tenere solo 3 celle con valign="top" e riempirle con i vari contenuti. Cosi' avrai un layout a 3 colonne che rimane fisso dove deve stare poi i contenuti nelle celle possono pure espandersi nel caso ci schiaffi dentro dei div o altre tabelle a te la scelta.

    quindi puoi avere anche una cella che si espande oltre modo ma il suo contenuto rimarra' cmq in alto.E' una sol veloce e funzionante ovunque!

    Ovviamente per i puristi fa schifo perche' usi la tabella ma sinceramente dipende da te quanto hai intezione di sclerare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.