Avatar billede nat Nybegynder
30. september 2004 - 13:46 Der er 12 kommentarer og
1 løsning

vertical dropdown menu

Er der nogen der kan hjælpe mig med den her dropdown menu.

Mit problem er at den benytter sig af <UL> og <LI>, hvilket konflikter med andre elementer på siden der også benytter <UL> og <li> (hvor det er meningen at de skal bruge standard liste funktionen, altså en bulletlist).

Så hvis der er nogen der kan komme med en løsning til hvordan jeg kommer uden om at skulle bruge <UL> og <LI> i denne menu (erstatte disse med andre tags?) er der points.


"koden":
_________________________________________________________________

<html>
<head>
<style>

LI
{
    DISPLAY: block;
    FONT-WEIGHT: bold;
    FONT-SIZE: 12px;
    COLOR: #000000;
    MARGIN-BOTTOM: 0px;
    MARGIN-RIGHT: 0px;
    MARGIN-TOP: 0px;
    FONT-FAMILY: Verdana, Arial, Sans-Serif;
    FLOAT: left;
    WIDTH: 100%;
}
UL
{
    border: #DDD9A7 1px solid;/*sætter border på drop-ud menuen*/
    padding: 0px 0px 0px 0px;
    MARGIN-TOP: 0px;
    MARGIN-BOTTOM: 0px;
    MARGIN-RIGHT: 0px;
    COLOR: #000000;
    FONT-WEIGHT: bold;
    FONT-SIZE: 12px;
    FONT-FAMILY: Verdana, Arial, Sans-Serif;
    DISPLAY: block;
    WIDTH: 220px; /*bredden på drop-ud menuen*/
}

.invisible
{
    MARGIN-TOP: -15px; /*rykker drop-ud menuen op eller ned, jo større plus ned, jo større minus op*/
    MARGIN-LEFT: 130px;/*rykker drop-ud menuen ud til højre*/
    POSITION: absolute;
    DISPLAY: none;
}

LI A
{
    padding: 2px 2px 2px 2px;
    FONT-FAMILY: Verdana, Arial, Sans-Serif;
    FONT-WEIGHT: bold;
    FONT-SIZE: 12px;
    WIDTH: 100%;
    COLOR: #000000;
    TEXT-DECORATION: none;
}
.submenu
{
    PADDING-RIGHT: 5px;
    PADDING-LEFT: 20px;/*rykker teksten i drop-ud menuen til højre*/
    PADDING-BOTTOM: 2px;
    PADDING-TOP: 10px;/*afstanden mellem top og punkter samt mellem menu punkterne, kan også bruge line-height*/
    TEXT-DECORATION: none;
    text-align: left;
    FONT-FAMILY: Verdana, Arial, Sans-Serif;
    FONT-WEIGHT: bold;
    FONT-SIZE: 12px;
    COLOR: #000000;
    WIDTH: 100%;
    BACKGROUND-COLOR: #F4F2E6; /*baggrundsfarven på den uddroppede menu*/
    /*Gør dropout menuen gennemsigtig*/
    position: relative;
    z-index:1000;
    filter: alpha(opacity=90);
    /*Gør dropout menuen gennemsigtig slut*/
   
}
LI A:hover
{
    COLOR: #000000;
}

A.hassubmenu
{
    BACKGROUND-POSITION: 128px 7px;   
}
.menuclass
{   
    border: 0px 0px 0px 0px;
    FLOAT: right;
    MARGIN: 1px 1px 100%;
}

</style>
</head>
<body>
    <table cellSpacing="0" cellPadding="0" width=190 border=0>
        <tr>
            <td align="left" valign="top">
                <UL class="<%=menuclass %>">
                    <asp:repeater id="Repeater1" runat="server">
                        <ItemTemplate>
                            <li>
                                <button class=button><asp:HyperLink NavigateUrl="<%# GetChannelStartPageUrl(((Channel)(Container.DataItem))) %>" CommandArgument="<%# ((ChannelItem)(Container.DataItem)).Name %>" OnClick="SubMenuLink_OnClick" onmouseover="showSubMenu()" Runat=server ID="Hyperlink2">
                                    <%# ((Channel)(Container.DataItem)).DisplayName %></asp:HyperLink></button>
                                <br>
                                <img class=usynligt height=2px>
                               
                                <UL class="invisible">
                                    <asp:Repeater id="Repeater2" DataSource="<%# ((Channel)(Container.DataItem)).Channels %>" runat="server">
                                        <ItemTemplate>
                                            <li>
                                                <a href="<%# GetChannelStartPageUrl(((Channel)(Container.DataItem))) %>" Class='submenu' Runat=server ID="Hyperlink4">
                                                    <%# ((Channel)(Container.DataItem)).DisplayName %>
                                                </a>
                                            </li>
                                           
                                        </ItemTemplate>
                                    </asp:Repeater>
                                </UL>   
                            </li>
                        </ItemTemplate>
                    </asp:repeater>
                </UL>
            </td>   
        </tr>
       
    </table>

<script language="javascript">
function showSubMenu()
{
    var objThis = this;   
   
    for(var i = 0; i < objThis.childNodes.length; i++)
    {
       
        if(objThis.childNodes.item(i).nodeName == "UL")
        {                           
           
            objThis.childNodes.item(i).style.display = "block";                       
        }       
    }   
}

function hideSubMenu()
{                               
    var objThis = this;   
   
    for(var i = 0; i  < objThis.childNodes.length; i++)           
    {
        if(objThis.childNodes.item(i).nodeName == "UL")
        {               
            objThis.childNodes.item(i).style.display = "none";           
            return;
        }           
    }   
}           

function initialiseMenu()
{
    var objLICollection = document.body.getElementsByTagName("LI");       
   
    for(var i = 0; i < objLICollection.length; i++)
    {       
        var objLI = objLICollection[i];                                       
        for(var j = 0; j  < objLI.childNodes.length; j++)
        {
           
            if(objLI.childNodes.item(j).nodeName == "UL")
            {
                objLI.onmouseover=showSubMenu;
                objLI.onmouseout=hideSubMenu;
                for(var j = 0; j  < objLI.childNodes.length; j++)
                {
                    if(objLI.childNodes.item(j).nodeName == "A")
                    {                   
                       
                        objLI.childNodes.item(j).className = "hassubmenu";                               
                    }
                }
            }
        }
    }
}
</script>
</body>

</html>
_________________________________________________________________
Avatar billede roenving Novice
30. september 2004 - 13:52 #1
Kunne du ikke linke til et eksempel, som det ser ud i browseren, for det er umuligt at forholde sig til en asp-struktur, hvor html'en ikke er genereret ...

-- og umiddelbart tror jeg, vi kan finde en løsning baseret på at sætte et id på parent-elementet til menuen !-)
Avatar billede nat Nybegynder
30. september 2004 - 14:06 #2
roenving: Der er desværre ikke noget link til et eksempel da det ligger i et testmiljø
Avatar billede roenving Novice
30. september 2004 - 14:08 #3
Kan du så ikke klippe et stykke af den genererede kode ud og lægge her ?-)
Avatar billede nat Nybegynder
30. september 2004 - 14:23 #4
Et uddrag:
____________________________________________________
<TABLE id="holder" align="left">
                <TR>
                    <TD id="other">
                        <DIV id="menu">
                           
                                    <DIV class="menuitem">
                                        <a Class="a" href="/site/SomeWhere/Here/page.htm">
                                            Side1
                                            <BR>
                                            <TABLE ID="Table2">
                                                <tr>
                                                    <TD><A href="/site/...">Test</A></TD>
                                                </tr>
                                                <tr>
                                                    <TD><A href=""/site/...">Test</A></TD>
                                                </tr>
                                            </TABLE>
                                        </a>
                                    </DIV>
                               
                                    <DIV class="menuitem">
                                        <a Class="a" href="/site/SomeWhere/Here/page.htm">
                                            Side2
                                            <BR>
                                            <TABLE ID="Table2">
                                                <tr>
                                                    <TD><A href="/site/...">Test</A></TD>
                                                </tr>
                                                <tr>
                                                    <TD><A href=""/site/...">Test</A></TD>
                                                </tr>
                                            </TABLE>
                                        </a>
                                    </DIV>
                               
                                    <DIV class="menuitem">
                                        <a Class="a" href="/site/SomeWhere/Here/page.htm">
                                            Side3
                                    <BR>
                                            <TABLE ID="Table2">
                                                <tr>
                                                    <TD><A href="/site/...">Test</A></TD>
                                                </tr>
                                                <tr>
                                                    <TD><A href=""/site/...">Test</A></TD>
                                                </tr>
                                            </TABLE>
                                        </a>
                                    </DIV>
                        </DIV>
                    </TD>
                </TR>
            </TABLE>
____________________________________________________
Avatar billede roenving Novice
30. september 2004 - 14:39 #5
Hvor er ul- og li-tags ?-)
Avatar billede nat Nybegynder
30. september 2004 - 14:47 #6
Hov det gik vist lige lidt for hurtigt - det er den anden menu på siden, sorry - finder lige den rigtige
Avatar billede nat Nybegynder
30. september 2004 - 14:56 #7
Prøver igen (nu med Ul og li)

<table cellSpacing="0" cellPadding="0" width=190 border=0>
        <tr>
            <td align="left" valign="top">
                <ul class="menuclass">
                   
                            <li>
                                <button class=button><a id="verticalMenu1_Repeater1__ctl3_Hyperlink2" OnClick="SubMenuLink_OnClick" onmouseover="showSubMenu()" CommandArgument="Side1" href="/site/VerticalMenu/Menu1/Side1/">Menu1</a></button>
                                <br>
                                <img class=usynligt height=2px>
                               
                                <ul class="invisible">
                                   
                                            <li>
                                                <a href="/site/SomeWhere/Here/page.htm" id="LeftDropDownMenu1_Repeater1__ctl3_Repeater2__ctl0_Hyperlink4" Class="submenu">
                                                    Side1
                                                </a>
                                            </li>
                                           
                                       
                                            <li>
                                                <a href=="/site/SomeWhere/Here/page.htm" id="LeftDropDownMenu1_Repeater1__ctl3_Repeater2__ctl1_Hyperlink4" Class="submenu">
                                                    Side2
                                                </a>
                                            </li>
                                           
                                       
                                            <li>
                                                <a href="/site/SomeWhere/Here/page.htm" id="LeftDropDownMenu1_Repeater1__ctl3_Repeater2__ctl2_Hyperlink4" Class="submenu">
                                                    Side3
                                                </a>
                                            </li>
                                </ul>   
                            </li>
                       
                           
                       
                </ul>
            </td>   
        </tr>
        <tr>
            <td align="left" valign="top">
                <ul class="menuclass">
                   
                            <li>
                                <button class=button><a id="verticalMenu1_Repeater1__ctl3_Hyperlink2" OnClick="SubMenuLink_OnClick" onmouseover="showSubMenu()" CommandArgument="Side1" href="/site/VerticalMenu/Menu2/Side1/">Menu2</a></button>
                                <br>
                                <img class=usynligt height=2px>
                               
                                <ul class="invisible">
                                   
                                            <li>
                                                <a href="/site/SomeWhere/Here/page.htm" id="LeftDropDownMenu1_Repeater1__ctl3_Repeater2__ctl0_Hyperlink4" Class="submenu">
                                                    Side1
                                                </a>
                                            </li>
                                           
                                       
                                            <li>
                                                <a href=="/site/SomeWhere/Here/page.htm" id="LeftDropDownMenu1_Repeater1__ctl3_Repeater2__ctl1_Hyperlink4" Class="submenu">
                                                    Side2
                                                </a>
                                            </li>
                                           
                                       
                                            <li>
                                                <a href="/site/SomeWhere/Here/page.htm" id="LeftDropDownMenu1_Repeater1__ctl3_Repeater2__ctl2_Hyperlink4" Class="submenu">
                                                    Side3
                                                </a>
                                            </li>
                                </ul>   
                            </li>
                       
                           
                       
                </ul>
            </td>   
        </tr>

       
    </table>
Avatar billede roenving Novice
01. oktober 2004 - 01:19 #8
Muy bueno, der var nogle detaljer, jeg var usikker på, men så kan du:

I stylesheetet:

Brug #menuholder li og # menuholder ul i stedet for LI og UL til menu-properties (og det gælder også de steder, hvor li er efterfulgt af a, f.eks. #menuholder li a{} !-)

Du skal så give tabellen et id:

<table id="menuholder" cellspacing="0" cellpadding="0" width="190px" border="0">

-- og så tilføjer du en lille smule kode i een af funktionerne:

function initialiseMenu()
{
    var objLICollection = document.getElementById('menuholder').getElementsByTagName("LI");       
   
    for(var i = 0; i < objLICollection.length; i++)


-- jeg har selvfølgelig ikke en mulighed for at teste det umiddelbart, men du er selvfølgelig velkommen til at vende tilbage !-)
Avatar billede nat Nybegynder
01. oktober 2004 - 09:11 #9
roenving: Thanks:-) Men der er et mindre problem. Alle undermenuerne starter med at være synlige og forsvinder først når man har kørt hen over hovedmenupunkterne med musen først. Og så er borderkanten blevet synlig på menuholder tabellen selv om den står til border=0. Nogen idéer til en løsning?
Avatar billede roenving Novice
01. oktober 2004 - 14:51 #10
function initialiseMenu(){
    var objLICollection = document.body.getElementsByTagName("LI");       
    for(var i = 0; i < objLICollection.length; i++){       
        var objLI = objLICollection[i];                                       
        for(var j = 0; j  < objLI.childNodes.length; j++){
            if(objLI.childNodes.item(j).nodeName == "UL"){
                objLI.onmouseover=showSubMenu;
                objLI.onmouseout=hideSubMenu;
                objLI.style.display = "none";
                for(var j = 0; j  < objLI.childNodes.length; j++){
                    if(objLI.childNodes.item(j).nodeName == "A"){
                        objLI.childNodes.item(j).className = "hassubmenu";                               
                    }
                }
            }
        }
    }
}

-- den med borderen forstår jeg ikke, men en simpel løsning vil måske være at tilføje en linje i stylesheetet:

#menuholder{border:0;}
Avatar billede nat Nybegynder
04. oktober 2004 - 11:39 #11
roenving: hmm nu forsvinder menuen bare helt, og ikke kun SubMenuen
Avatar billede nat Nybegynder
12. november 2004 - 10:12 #12
Er der ikke nogen der kan hjælpe?

Her er den generede kode:

____________________________________________________________                   
<style>

#menuholder LI
{
    DISPLAY: block;
    FONT-WEIGHT: bold;
    FONT-SIZE: 12px;
    COLOR: #000000;
    MARGIN-BOTTOM: 0px;
    MARGIN-RIGHT: 0px;
    MARGIN-TOP: 0px;
    FONT-FAMILY: Verdana, Arial, Sans-Serif;
    FLOAT: left;
    WIDTH: 100%;
}
#menuholder UL
{
    border: #DDD9A7 1px solid;/*sætter border på drop-ud menuen*/
    padding: 0px 0px 0px 0px;
    MARGIN-TOP: 0px;
    MARGIN-BOTTOM: 0px;
    MARGIN-RIGHT: 0px;
    COLOR: #000000;
    FONT-WEIGHT: bold;
    FONT-SIZE: 12px;
    FONT-FAMILY: Verdana, Arial, Sans-Serif;
    DISPLAY: block;
    WIDTH: 220px; /*bredden på drop-ud menuen*/
}

.invisible
{
    MARGIN-TOP: -15px; /*rykker drop-ud menuen op eller ned, jo større plus ned, jo større minus op*/
    MARGIN-LEFT: 130px;/*rykker drop-ud menuen ud til højre*/
    POSITION: absolute;
    DISPLAY: none;
}

#menuholder LI A
{
    padding: 2px 2px 2px 2px;
    FONT-FAMILY: Verdana, Arial, Sans-Serif;
    FONT-WEIGHT: bold;
    FONT-SIZE: 12px;
    WIDTH: 100%;
    COLOR: #000000;
    TEXT-DECORATION: none;
}
.submenu
{
    PADDING-RIGHT: 5px;
    PADDING-LEFT: 20px;/*rykker teksten i drop-ud menuen til højre*/
    PADDING-BOTTOM: 2px;
    PADDING-TOP: 10px;/*afstanden mellem top og punkter samt mellem menu punkterne, kan også bruge line-height*/
    TEXT-DECORATION: none;
    text-align: left;
    FONT-FAMILY: Verdana, Arial, Sans-Serif;
    FONT-WEIGHT: bold;
    FONT-SIZE: 12px;
    COLOR: #000000;
    WIDTH: 100%;
    BACKGROUND-COLOR: #F4F2E6; /*baggrundsfarven på den uddroppede menu*/
    /*Gør dropout menuen gennemsigtig*/
    position: relative;
    z-index:1000;
    filter: alpha(opacity=90);
    /*Gør dropout menuen gennemsigtig slut*/
   
}
#menuholder LI A:hover
{
    COLOR: #000000;
}

#menuholder A.hassubmenu
{
    BACKGROUND-POSITION: 128px 7px;   
}
.menuclass
{   
    border: 0px 0px 0px 0px;
    FLOAT: right;
    MARGIN: 1px 1px 100%;
}

</style>
<NOINDEX>
    <table id=menuholder cellSpacing="0" cellPadding="0" width="190" border="0">
        <tr>
            <td align="left" valign="top">
                <UL class="menuclass">
                   
                            <li>
                                <button class=button onclick="navigate('/site/test/Test1/TestTest2/');" onfocus=blur()><a href="/site/test/Test1/" OnClick="SubMenuLink_OnClick" onmouseover="showSubMenu()" Runat=server>Test1</a></button>
                                <br>
                                <img class="usynligt" height="2px">
                                <UL class="invisible">
                                   
                                            <li><a href=/site/test/Test1/TestTest1/ Class='submenu' Runat=server>TestTest1</a></li>
                                       
                                            <li><a href=/site/test/Test1/TestTest2/ Class='submenu' Runat=server>TestTest2</a></li>
                                       
                                </UL>
                            </li>
                       
                            <li>
                                <button class=button onclick="navigate('/site/test/Test2/');" onfocus=blur()><a href="/site/test/Test2/" OnClick="SubMenuLink_OnClick" onmouseover="showSubMenu()" Runat=server>Test2</a></button>
                                <br>
                                <img class="usynligt" height="2px">
                                <UL class="invisible">
                                   
                                </UL>
                            </li>
                       
                            <li>
                                <button class=button onclick="navigate('/site/test/Test3/TestTest1/');" onfocus=blur()><a href="/site/test/Test3/" OnClick="SubMenuLink_OnClick" onmouseover="showSubMenu()" Runat=server>Test3</a></button>
                                <br>
                                <img class="usynligt" height="2px">
                                <UL class="invisible">
                                   
                                            <li><a href=/site/test/Test3/TestTest1/ Class='submenu' Runat=server>TestTest1</a></li>
                                       
                                </UL>
                            </li>
                       
                </UL>
            </td>
        </tr>
    </table>
</NOINDEX>
<script language="javascript">
function showSubMenu()
{
    var objThis = this;   
   
    for(var i = 0; i < objThis.childNodes.length; i++)
    {
       
        if(objThis.childNodes.item(i).nodeName == "UL")
        {                           
            // only show block if there are items
            if (objThis.childNodes.item(i).innerHTML!="")
            {
            objThis.childNodes.item(i).style.display = "block";                       
            }
        }       
    }   
}

function hideSubMenu()
{                               
    var objThis = this;   
   
    for(var i = 0; i  < objThis.childNodes.length; i++)           
    {
        if(objThis.childNodes.item(i).nodeName == "UL")
        {               
            objThis.childNodes.item(i).style.display = "none";           
            return;
        }           
    }   
}           

function initialiseMenu()
{
    var objLICollection = document.getElementById('menuholder').getElementsByTagName("LI");       
   
    for(var i = 0; i < objLICollection.length; i++)
    {       
        var objLI = objLICollection[i];                                       
        for(var j = 0; j  < objLI.childNodes.length; j++)
        {
           
            if(objLI.childNodes.item(j).nodeName == "UL")
            {
                objLI.onmouseover=showSubMenu;
                objLI.onmouseout=hideSubMenu;
                for(var j = 0; j  < objLI.childNodes.length; j++)
                {
                    if(objLI.childNodes.item(j).nodeName == "A")
                    {                   
                       
                        objLI.childNodes.item(j).className = "hassubmenu";                               
                    }
                }
            }
        }
    }
}


</script>

____________________________________________________________

Mit problem er at alle undermenuer bliver vist fra start, og det skal de ikke. Gør jeg som roenving skriver her til sidst, forsvinder hele menuen bare - og det skal den heller ikke.
Nogen der kan se hvad jeg skal skrive?
Avatar billede nat Nybegynder
12. november 2004 - 10:56 #13
Lukker her, og åbner i javascript
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester