Avatar billede lborkdk Nybegynder
29. oktober 2011 - 17:37 Der er 8 kommentarer og
2 løsninger

menu med class selected

Hej eksperten :)

Jeg har en menu:

<div id="menubar">
<ul id="menu">
<li class="selectet"><a href="index.php">Home</a></li>
<li><a href="examples.php">Examples</a></li>
<li><a href="page.php">A Page</a></li>
<li><a href="another_page.php">Another Page</a></li>
<li><a href="contact.php">Contact Us</a></li>
</ul>
</div>

Som jeg includer på mine sider:

<?php
include 'menu.html';
?>

Nu er spørgsmålet så hvordan jeg kan få class selectet til at virke på den side som jeg er på :)

Her er min CSS kode til selectet og menuen:


ul#menu li.selected
{ margin: 3px 2px 0 0;
  background: #FCFDF4 url(tab_selected.png) no-repeat 0 0;}

ul#menu li.selected a, ul#menu li.selected a:hover
{ background: #FCFDF4 url(tab_selected.png) no-repeat 100% 0;
  color: #111;}


På forhånd tak :)
-Lbork
Avatar billede webweaver Praktikant
29. oktober 2011 - 18:06 #1
Hvis jeg forstår dig ret, søger du løsningen, så "selected" passer med den fil du trykker ind på, nu hvor du includer fra 1 fil af.

Koden i den fil du includer, skal se således ud:

<?php

$dirs = explode('/', $_SERVER['PHP_SELF']);       
$size = sizeof($dirs)-1;

echo '<div id="menubar">';
echo '<ul id="menu">';

if ($dirs[$size] == "index.php") { echo '<li class="selectet"><a href="index.php">Home</a></li>'; } else { echo '<li><a href="index.php">Home</a></li>'; }

if ($dirs[$size] == "examples.php") { echo '<li class="selectet"><a href="examples.php">Examples</a></li>'; } else { echo '<li><a href="examples.php">Examples</a></li>'; }

if ($dirs[$size] == "another_page.php") { echo '<li class="selectet"><a href="another_page.php">Another Page</a></li>'; } else { echo '<li><a href="another_page.php">Another Page</a></li>'; }

...
...

echo '</ul>';
echo '</div>';

?>
29. oktober 2011 - 18:06 #2
Den side du er på og hvor du includer menu.html, refererer den i headeren til den fil hvor du har din css kode? Så som:

<link rel="stylesheet" type="text/css" href="mystyle.css" />
Avatar billede olsensweb.dk Ekspert
29. oktober 2011 - 19:00 #3
@webweaver: det ville nok værer nemmere at læse hvis man brugte en switch istedet fo alle de if'er

en alternativ løsning, kunne værer at lave din menu i et array
 <div id="menubar">
<ul id="menu">
<?php
$dirs = explode('/', $_SERVER['PHP_SELF']);     
$size = sizeof($dirs)-1;
// $dirs[$size] = "page.php";

$menu = array(
    // bør nok være array("parth","index.php","Home"), hvis parth er forskellig
    array("index.php","Home"),
    array("examples.php","Examples"),
    array("page.php","A Page"),
    array("another_page.php","Another Page"),
    array("contact.php","Contact Us")
);
$lng = count($menu);
for ($i=0; $i<$lng; $i++){
    if($menu[$i][0] == $dirs[$size]){
        echo '<li class="selectet"><a href="'.$menu[$i][0].'">'.$menu[$i][1].'</a></li>';
        echo "\n";
    }   
    else{
        echo '<li><a href="'.$menu[$i][0].'">'.$menu[$i][1].'</a></li>';
        echo "\n";
    }
}
?>
</ul>
</div>
Avatar billede webweaver Praktikant
29. oktober 2011 - 20:31 #4
#3 Det vil klart være fornuftigt at bruge en switch som du siger. Jeg havde travlt, så det blev lige til den mest primitive løsning. Hastighedsmæssigt er det ikke mærkbart ved så få sætninger, men generelt afvikles switchen hurtigere end if sætningerne, samt det giver en nemmere struktur.
Avatar billede lborkdk Nybegynder
29. oktober 2011 - 20:59 #5
ronols :)

Dit eksempel virker glimrende hvis jeg går ind i vis kilde står der class selectet men den selecter den bare ikke :(

Dette er vis kilde af det før:

<div id="menubar">
<ul id="menu">
<li class="selectet"><a href="index.php">Home</a></li>
<li><a href="examples.php">Examples</a></li>
<li><a href="page.php">A Page</a></li>
<li><a href="another_page.php">Another Page</a></li>
<li><a href="contact.php">Contact Us</a></li>
</ul>
</div>


Og dette er vis kilde af det bagefter:

<div id="menubar">

<ul id="menu">

<li class="selectet"><a href="index.php">Home</a></li>
<li><a href="examples.php">Examples</a></li>
<li><a href="page.php">A Page</a></li>
<li><a href="another_page.php">Another Page</a></li>
<li><a href="contact.php">Contact Us</a></li>
</ul>

</div>    </div>

De er ju fulstændigt inentiske men den selecter bare ikke i din kode :(

Har du en løsning på det :)
Avatar billede lborkdk Nybegynder
29. oktober 2011 - 21:08 #6
Heeh har fundet fejlen, en simpel stavefejl :)

Smid et svar så får du nogen point :)
Avatar billede olsensweb.dk Ekspert
29. oktober 2011 - 21:20 #7
det må være en deler med webweaver, hans løsning ville også have virket
>Heeh har fundet fejlen, en simpel stavefejl :)
LOL, lille tue kan vælte stort læs

@webweaver smid et svar også
Avatar billede lborkdk Nybegynder
29. oktober 2011 - 22:25 #8
Smider du lige et svar også @webweaver :)
Avatar billede webweaver Praktikant
30. oktober 2011 - 11:40 #9
Oki doki så. Svar :)

Fortsat god weekend til alle.
11. november 2011 - 05:54 #10
lbordk, du kom vist fra det igen.  Hvis du nu ville lukke tråden nu, så er der ryddet op for de følgende spørgsmål, og så står spørgsmålet ikke længere som åbent i min liste af indlæg (plus at nogle venter på points.)
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