Avatar billede djsteiner Nybegynder
18. november 2009 - 17:44 Der er 13 kommentarer og
1 løsning

XTHML og CSS menu til PHP

Hej står lige og kunne godt bruge noget hjælp til en menu.

Menu er lavet i xhtml og css men ville gerne lave den dynamisk

med php.


Håber på at der er nogen der kan hjælpe

På forhånd ta.

Her har i html koden som den ser ud nu:

<div class="art-nav">
                    <div class="l"></div>
                    <div class="r"></div>
                    <ul class="art-menu">
                   
                   
                        <li><a href="index.asp?page=home" class=" active"><span class="l"></span><span class="r"></span><span class="t">Home</span></a></li>
                       
                       
                        <li><a href="index.asp?page=cv"><span class="l"></span><span class="r"></span><span class="t">CV</span></a>
                       
                        <li><a href="index.asp?page=mineprojekter"><span class="l"></span><span class="r"></span><span class="t">Mine Projekter</span></a></li>
                   
                           
                        <li><a href="index.asp?page=kontakt"><span class="l"></span><span class="r"></span><span class="t">Kontakt</span></a></li>
                    </ul>
                </div>

Her har css koden.


/* begin Menu */
/* menu structure */

.art-menu a, .art-menu a:link, .art-menu a:visited, .art-menu a:hover
{
    text-align:left;
    text-decoration:none;
    outline:none;
    letter-spacing:normal;
    word-spacing:normal;
}

.art-menu, .art-menu ul
{
    margin: 0;
    padding: 0;
    border: 0;
    list-style-type: none;
    display: block;
}

.art-menu li
{
    margin: 0;
    padding: 0;
    border: 0;
    display: block;
    float: left;
    position: relative;
    z-index: 5;
    background:none;
}

.art-menu li:hover
{
    z-index: 10000;
    white-space: normal;
}

.art-menu li li
{
    float: none;
}

.art-menu ul
{
    visibility: hidden;
    position: absolute;
    z-index: 10;
    left: 0;
    top: 0;
    background:none;
}

.art-menu li:hover>ul
{
    visibility: visible;
    top: 100%;
}

.art-menu li li:hover>ul
{
    top: 0;
    left: 100%;
}

.art-menu:after, .art-menu ul:after
{
    content: ".";
    height: 0;
    display: block;
    visibility: hidden;
    overflow: hidden;
    clear: both;
}
.art-menu, .art-menu ul
{
    min-height: 0;
}

.art-menu ul
{
    background-image: url(images/spacer.gif);
    padding: 10px 30px 30px 30px;
    margin: -10px 0 0 -30px;
}

.art-menu ul ul
{
    padding: 30px 30px 30px 10px;
    margin: -30px 0 0 -10px;
}





/* menu structure */

.art-menu
{
    padding: 4px 30px 4px 30px;
   
   
}

.art-nav
{
    position: relative;
    height: 30px;
    z-index: 100;
}

.art-nav .l, .art-nav .r
{
    position: absolute;
    z-index: -1;
    top: 0;
    height: 30px;
    background-image: url('images/nav.png');
}

.art-nav .l
{
    left: 0;
    right:30px;
}

.art-nav .r
{
    right: 0;
    width: 998px;
    clip: rect(auto, auto, auto, 968px);
}


/* end Menu */

/* begin MenuItem */
.art-menu ul li
{
    clear: both;
}

.art-menu a
{
    position:relative;
    display: block;
    overflow:hidden;
    height: 22px;
    cursor: pointer;
    text-decoration: none;
    margin-right: 3px;
    margin-left: 3px;
   
}


.art-menu a .r, .art-menu a .l
{
    position:absolute;
    display: block;
    top:0;
    z-index:-1;
    height: 66px;
    background-image: url('images/MenuItem.png');
   
}

.art-menu a .l
{
    left:0;
    right:5px;
}

.art-menu a .r
{
    width:410px;
    right:0;
    clip: rect(auto, auto, auto, 405px);
}

.art-menu a .t
{
    font-family: Tahoma, Arial, Helvetica, Sans-Serif;
    font-size: 10px;
    font-style: normal;
    font-weight: bold;
    text-decoration: none;
    text-transform: uppercase;
    color: #638F9C;
    padding: 0 8px;
    margin: 0 5px;
    line-height: 22px;
    text-align: center;
}

.art-menu a:hover .l, .art-menu a:hover .r
{
    top:-22px;
}

.art-menu li:hover>a .l, .art-menu li:hover>a .r
{
    top:-22px;
}

.art-menu li:hover a .l, .art-menu li:hover a .r
{
    top:-22px;
}
.art-menu a:hover .t
{
    color: #EBF3F4;
}

.art-menu li:hover a .t
{
    color: #EBF3F4;
}

.art-menu li:hover>a .t
{
    color: #EBF3F4;
}


.art-menu a.active .l, .art-menu a.active .r
{
    top: -44px;
}

.art-menu a.active .t
{
    color: #FFFFFF;
}


/* end MenuItem */

/* begin MenuSeparator */
.art-nav .art-menu-separator
{
    display: block;
    width: 1px;
    height: 22px;
    background-image: url('images/MenuSeparator.png');
}

/* end MenuSeparator */

/* begin MenuSubItem */
.art-menu ul a
{
    display:block;
    text-align: center;
    white-space: nowrap;
    height: 26px;
    width: 180px;
    overflow:hidden;
    line-height: 26px;
    margin-right: auto;


    background-image: url('images/subitem-bg.png');
    background-position: left top;
    background-repeat: repeat-x;
    border-width: 1px;
    border-style: solid;
    border-color: #CFDCDD;
}

.art-nav ul.art-menu ul span, .art-nav ul.art-menu ul span span
{
    display: inline;
    float: none;
    margin: inherit;
    padding: inherit;
    background-image: none;
    text-align: inherit;
    text-decoration: inherit;
}

.art-menu ul a, .art-menu ul a:link, .art-menu ul a:visited, .art-menu ul a:hover, .art-menu ul a:active, .art-nav ul.art-menu ul span, .art-nav ul.art-menu ul span span
{
    text-align: left;
    text-indent: 12px;
    text-decoration: none;
    line-height: 26px;
    color: #3E5960;
    font-family: Tahoma, Arial, Helvetica, Sans-Serif;
    font-size: 10px;
    font-style: normal;
    font-weight: bold;
    text-decoration: none;
}

.art-menu ul ul a
{
    margin-left: auto;
}

.art-menu ul li a:hover
{
    color: #000000;
    border-color: #A5BDC0;
    background-position: 0 -26px;
}

.art-menu ul li:hover>a
{
    color: #000000;
    border-color: #A5BDC0;
    background-position: 0 -26px;
}

.art-nav .art-menu ul li a:hover span, .art-nav .art-menu ul li a:hover span span
{
    color: #000000;
}

.art-nav .art-menu ul li:hover>a span, .art-nav .art-menu ul li:hover>a span span
{
    color: #000000;
}


/* end MenuSubItem */
18. november 2009 - 20:15 #1
Hvad er det du gerne vil at menuen skulle kunne goere, dynamisk, med php?  Hvilke funktioner, hvilken "opfoersel" soeger du?
Avatar billede djsteiner Nybegynder
18. november 2009 - 20:38 #2
Det jeg gerne ville var at når man trykker på en menu knap så skal den forblive aktiv.

Det gør den også nu men det er HTML og skal så skal man jo lave en masse sidder.

Måske man kunne lave noget med noget if or else i PHP  men ved ikke lige hvordan jeg skal gribe det an.

Noget i denne stil hvis liket er aktiv så skal linket være såda her osv.

Håber dette giver lidt mening.

ps. tror også det hedder tab menu
18. november 2009 - 22:33 #3
Det er maerkeligt, der staar paa min liste af indlaeg at der er lavet et indlaeg nummer 2 klokken 2038 men det er ikke synligt.  Hvis du har svaret, vil du gentage det?  Tak.
Avatar billede djsteiner Nybegynder
18. november 2009 - 22:40 #4
ja det lyder meget mærkeligt!

men her er det jeg skrev:

Det jeg gerne ville var at når man trykker på en menu knap så skal den forblive aktiv.

Det gør den også nu men det er HTML og skal så skal man jo lave en masse sidder.

Måske man kunne lave noget med noget if or else i PHP  men ved ikke lige hvordan jeg skal gribe det an.

Noget i denne stil hvis liket er aktiv så skal linket være såda her osv.

Håber dette giver lidt mening.

ps. tror også det hedder tab menu
19. november 2009 - 09:22 #5
Jeg bakker ud - det overstiger min umiddelbare kompetence (det er noget jeg har i sinde at laere mere om naar tiden tillader.)  Men du kan finde mange kode eksempler hvis du googler "tab menu".
Avatar billede repox Seniormester
19. november 2009 - 13:36 #6
Lige til at starte med at byde ind; hvorfor har din index fil extension-navnet .asp?
Såfremt det kun er et kosmetisk levn, så gør noget ala dette:



<?php

    $pages["home"] = "Home";
    $pages["cv"] = "CV";
    $pages["mineprojekter"] = "Mine Projekter";
    $pages["kontakt"] = "Kontakt";

?>

<div class="art-nav">
    <div class="l"></div>
    <div class="r"></div>
    <ul class="art-menu">                 
        <?php
        foreach( $pages as $navigation => $title ):
        $class = "";
        if( $_GET["page"] == $navigation )
            $class="active";
        ?>
        <li>
            <a href="index.asp?page=<?php echo $navigation; ?>" class="<+php echo $class; ?>">
                <span class="l"></span>
                <span class="r"></span>
                <span class="t"><?php echo $title; ?></span>
            </a>
        </li>
        <?php endforeach; ?>
    </ul>
</div>

Avatar billede djsteiner Nybegynder
20. november 2009 - 00:02 #7
ja selvføldig skal det være index.php det er bare mig der er vandt til asp.

men jegbkan ikke rigtigt få det til at virke.

Men tak  for du gider at byde ind.
Avatar billede djsteiner Nybegynder
20. november 2009 - 00:05 #8
Nu er der ikke nogen af dem som bliver aktive når man trykker på dem
Avatar billede repox Seniormester
20. november 2009 - 00:05 #9
Du kunne muligvis uddybe hvad det er du ikke kan få til at virke - så kan jeg måske hjælpe dig videre.
Avatar billede repox Seniormester
20. november 2009 - 00:11 #10
Prøv lige at skifte:
class="<+php echo $class; ?>"
ud med:
class="<?php echo $class; ?>"
Avatar billede djsteiner Nybegynder
20. november 2009 - 00:19 #11
Jep det virkede super sejt men er du god til at lave komentar til dine scrips.

Jeg ville jo gerne have en forklaring hvis du ville.

Men ellers tusind tak for hjælpen Tror lige jeg skal have læst lidt mere på PHP jeg er nemlig lige ved at gå over til PHP fra ASP Classic.

Hvis du smider et svar så giver jeg point
Avatar billede repox Seniormester
20. november 2009 - 00:27 #12
Det her er vist det bedste jeg kan gøre:


<?php

    /**   
    * Et array med siderne.
    * Arrayelementernes index er sidevariable   
    * Arrayelementernes værdi er sidetitlen
    * $pages["index"] = "værdi";
    */

    $pages["home"] = "Home";
    $pages["cv"] = "CV";
    $pages["mineprojekter"] = "Mine Projekter";
    $pages["kontakt"] = "Kontakt";

?>

<div class="art-nav">
    <div class="l"></div>
    <div class="r"></div>
    <ul class="art-menu">                 
        <?php
        /**
        * En løkke der looper hen over elementerne i $pages
        * "for hver ( $pages som index => værdi)"
        */     
        foreach( $pages as $navigation => $title ):
        // sæt variablen $class til ingenting
        $class = "";
        if( $_GET["page"] == $navigation )
            $class="active"; // sætter $class til "active" hvis $_GET["page"] er det samme som $navigation
        ?>
        <li>
            <a href="index.asp?page=<?php echo $navigation; ?>" class="<?php echo $class; ?>">
                <span class="l"></span>
                <span class="r"></span>
                <span class="t"><?php echo $title; ?></span>
            </a>
        </li>
        <?php
        // slut på løkken
        endforeach;
        ?>
    </ul>
</div>

Avatar billede djsteiner Nybegynder
20. november 2009 - 00:34 #13
Super det kan sagtens bruges.

Men lige et lille spøgsmål til kan ma ikke lave en if or else sætning der gør at når man loader siden første gang så starter den på den side der hedder home ??
Avatar billede djsteiner Nybegynder
20. november 2009 - 01:18 #14
jeg prøvede at lave det sådan her men det virkede ikke.

<?
if ($_GET["page"]  != "") {
  $pages=$_GET["page"]
}
else {
  $pages=$_GET["page"] = "home" ;
}
?>

hvad gør jeg galt ??

Håber lige du også du vil hjælpe mig med dette du kan sagten få flere point hvis du vil
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