Avatar billede Slettet bruger
17. februar 2012 - 13:35 Der er 15 kommentarer og
1 løsning

Mellemrum mellem menu

Jeg har et problem med en menu jeg sidder og laver. Der er et mellemrum mellem punktet Forside og punktet iPad. Mellemrummet skal ikke være der, og jeg kan simpelthen ikke finde problemet.

Her er html'en:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>iHelp.dk - Forside</title>
<link href="index.css" rel="stylesheet" type="text/css" />
</head><!--header-->

<body>

<div id="master">       
       
        <div id="menu">
            <li><a href="forside.html" id="selected1">Forside</a></li>
            <li><a href="ipad.html" id="menu2">iPad</a>
            <li><a href="applikationer.html" id="menu3">Applikationer</a>
              <li><a href="selvbetjening.html" id="menu4">Selvbetjening</a>
            <li><a href="shop" id="menu5">Online shop</a></li>
        </div><!--menu-->


<div id="content">
     
       

</div><!--content-->
</div><!--master-->
</body><!--body-->
</html><!--html-->



Her er CSS'en:
@charset "utf-8";
/* CSS Document */

body    {
    height: auto;
    width: auto;
    background-color: #FFFFFF;
    }

#master    {
    width: 768px;
    height: 1024px;
    position: relative;
    margin-right: auto;
    margin-left: auto;
    padding: 0;
    }
   
#menu    {
    margin: 50px 0 0 0;
    text-align: center;
    font-family: calibri, arial, sans-serif;
    font-size: 16px;
    width: 768px;
    padding: 0;
    position: absolute;
    }

#menu, #menu ul    {
    list-style: none;
    }
   
#menu li    {
    display: inline-block;
    }

#menu li a    {
    display: table-cell;
    vertical-align: middle;
    }

#menu a    {
    color: #FFFFFF;
    }

#menu1,#menu2,#menu3,#menu4,#menu5    {
    height: 35px;
    width: 152px;
    background-color: #666666;
    list-style: none;
    text-decoration: none;
    }
   
#menu1,#selected1    {
    border-radius: 10px 0 0 10px;
    }
   
#menu5,#selected5    {
    border-radius: 0 10px 10px 0;
    }

#selected {
    height: 35px;
    width: 152px;
    background-color: #999999;
    list-style: none;
    }
   
#selected,#selected1,#selected5 {
    height: 35px;
    width: 152px;
    background-color: #999999;
    list-style: none;
    }

#menu1:hover,#menu2:hover,#menu3:hover,#menu4:hover,#menu5:hover    {
    background-color: #999999;
    }

Som i kan se er der ikke lavet meget endnu, men vil ikke gå videre med siden før dette er ordnet. Håber nogle kan hjælpe!
Avatar billede NielsErikP Mester
17. februar 2012 - 14:43 #1
Hej...

Det der lige falder mig i øjnene, er at du har dine ListItems :<li></li> liggende i en <div> ....
ListItems er en del af en unordered liste "<ul>" eller en ordered liste <ol>...
Ved godt dette ikke løser dit problem, men sådan skal det være... Når du laver noget kan du evt. prøve at Validere din kode her "Html":
      http://validator.w3.org/

og din Css kode her :
      http://jigsaw.w3.org/css-validator/validator.html.en
Avatar billede Blueeyez Mester
17. februar 2012 - 14:47 #2
Der er et </li> der er sat efter forsidens linje i html dokumentet, fjern den og så er der intet mellemrum :)

punkt:  "            <li><a href="forside.html" id="selected1">Forside</a>" (Her har jeg fjernet </li>
Avatar billede NielsErikP Mester
17. februar 2012 - 15:27 #3
Hej..

@Blueeyez: Nej.. Den går da ikke har du et Start tag <li> .. ja.. så skal tagget da også sluttes >/li>  


@MichelleLund: det ændrer ikke ved det faktum at et List Item <li></li> skal ligge i en liste..
Prøv at ændre dette :

<div id="menu">
</div>
 

Til :

<ul id="menu">
</ul>


Og så tror jeg jeg har fundet løsningen på dit problem, i din Css skal du prøve at ændre dette :

#menu li    {
    display: inline-block;
    }


Til :

#menu li    {
    float: left;
    }


Håber du kan bruge det :-)
Avatar billede NielsErikP Mester
17. februar 2012 - 15:48 #4
Hej igen..

Nu kiggede jeg lige din Html kode ordentligt, når du har et Start Tag <li> SKAL du også have et Slut Tag </li> og <li></li> ligger i en unordred list <ul> eller en ordered liste <ol> , sådan her :

    <ul> //start tag
      <b><li></b> <a href="#"></a> <b></li></b>
      <b><li></b> <a href="#"></a> <b></li></b>
      <b><li></b> <a href="#"></a> <b></li></b>
      <b><li></b> <a href="#"></a> <b></li></b>
    </ul>  // slut tag


så sørg lige for at få et </li> på disse :


  <li><a href="ipad.html" id="menu2">iPad</a>
            <li><a href="applikationer.html" id="menu3">Applikationer</a>
              <li><a href="selvbetjening.html" id="menu4">Selvbetjening</a>

Avatar billede NielsErikP Mester
17. februar 2012 - 15:53 #5
Hej..
Prøver lige igen, første box i #4, skal se sådan ud :

    <ul> //start tag
        <li> <a href="#"></a> </li>
        <li> <a href="#"></a> </li>
        <li> <a href="#"></a> </li>
        <li> <a href="#"></a> </li>
    </ul>  // slut tag

Avatar billede olebole Juniormester
17. februar 2012 - 16:49 #6
<ole>

Nej, du bør undgå float i denne situation. Når man f.eks. ønsker at lave tekstomløb omkring et billede er float en rigtig god løsning. Til gengæld har float overtaget tabellens plads som noget af det mest abused i HTML - og det bunder som oftest i manglende forståelse af renderingsmodellen.

To inline elementer skrevet lige efter hinanden, vil stå 'skulder ved skulder'. Indsættes et mellemrum eller et linjeskift imellem de to, vil der opstå luft imellem dem. Prøv denne kode:

<p><span style="background:red">Ole</span><span style="background:yellow">Bole</span></p>

<p><span style="background:red">Ole</span>
<span style="background:yellow">Bole</span></p>


I stedet for at floate dine LI elementer, kan du enten skrive dem ved siden af hinanden - eller bortkommentere 'luften' mellem dem:

<p><span style="background:red">Ole</span><span style="background:yellow">Bole</span></p>

<p><span style="background:red">Ole</span><!--
--><span style="background:yellow">Bole</span></p>

Jeg har renset din kode op og omskrevet din CSS, så den er mere hensigtsmæssig.

Jeg har i samme hug skrevet den om til HTML4.01, da du jo ikke bruger XML i koden. XHTML1.0 Transitional er forlængst opgivet som standard - og den har i øvrigt aldrig kunne blive parsed som X(HT)ML, men 'kun' som HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>iHelp.dk - Forside</title>
<style type="text/css">
body {
    background-color: #FFFFFF;
}

#master {
    width: 768px;
    height: 1024px;
    margin-right: auto;
    margin-left: auto;
    padding: 0;
}
   
#menu {
    margin: 50px auto 0;
    text-align: center;
    font-family: calibri, arial, sans-serif;
    font-size: 16px;
    width: 760px;
    padding: 0;
}

#menu ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
   
#menu li {
    display: inline-block;
}

#menu li a {
    height: 28px;
    width: 152px;
    padding-top: 7px;
    display: block;
    color: #FFFFFF;
}

#menu1,#menu2,#menu3,#menu4,#menu5 {
    background-color: #666666;
    text-decoration: none;
}
   
#menu1,#selected1 {
    border-radius: 10px 0 0 10px;
}
   
#menu5,#selected5 {
    border-radius: 0 10px 10px 0;
}

#selected {
    background-color: #999999;
}
   
#selected,#selected1,#selected5 {
    background-color: #999999;
}

#menu1:hover,#menu2:hover,#menu3:hover,#menu4:hover,#menu5:hover {
    background-color: #999999;
}
</style>
</head><!--header-->
<body>

<div id="master">       
       
        <div id="menu">
        <ul>
            <li><a href="forside.html" id="selected1">Forside</a></li><!--
            --><li><a href="ipad.html" id="menu2">iPad</a></li><!--
            --><li><a href="applikationer.html" id="menu3">Applikationer</a></li><!--
            --><li><a href="selvbetjening.html" id="menu4">Selvbetjening</a></li><!--
            --><li><a href="shop" id="menu5">Online shop</a></li>
        </ul>
        </div><!--menu-->


<div id="content">   

</div><!--content-->
</div><!--master-->
</body><!--body-->
</html>

Her har jeg for overskuelighedens skyld skrevet CSS'en ind i HTML-koden. Du kan selv lægge den ud i en remote fil.

/mvh
</bole>
Avatar billede olebole Juniormester
17. februar 2012 - 16:52 #7
PS: En HTML-kommentar er et HTML-element. Derfor giver det ikke mening at skrive kommentarer før <html> eller efter </html>. Jeg har derfor også slettet din allersidste kommentar: <!--html-->
Avatar billede Blueeyez Mester
17. februar 2012 - 17:25 #8
#3 Da jeg fjernede </li> ved den påfælgende linje så forsvandt mellemrummet ved mig, har du evt selv prøvet og smide det i en browser og teste?
Avatar billede olebole Juniormester
17. februar 2012 - 17:35 #9
Prøv koden i #6. Den virker, som du ønsker og er samtidig mere hensigtsmæssig  *o)
Avatar billede Blueeyez Mester
17. februar 2012 - 17:48 #10
#9 Den virker da :) Var vidst hurtigt ude^^ Skønt det virkede med at fjerne </li> i den første linje med menu valg.. :S
Avatar billede olebole Juniormester
17. februar 2012 - 18:01 #11
Det kan godt være, det øjensynligt vil virke at fjerne første </li> - men det ville bare gøre koden til en endnu værre og invalid gang tag soup, end den oprindelige kode i forvejen bestod af  =)
Avatar billede NielsErikP Mester
17. februar 2012 - 22:32 #12
Hej..

@olebole: Jeg har godt i flere indlæg set din varme fortale for display: inline-block istedet for float: left ..!! Da jeg selv på www.nielsgjern.dk har brugt float:left i opbyggelsen af min Html/Css menu... Har jeg efter en del overvejelser, i sinde at genopbygge den ved brug af display: inline-block . De skal jo helst vare korrekt.
Jeg læste et eller andet sted undervejs i den lærdom jeg har tilegnet mig , siden jeg startede på Html/Css at mellemrum i Html ignoreres.... men det må jo have været på W3Schools eller Html.dk , hvor jeg startede min  indlærings periode. Så Tak for det Wake Up Call ...
Har du evt. nogel gode links til ordentlige steder, hvor man kan blive klogere på Renderings Modellen og hvad der Parses af browsere osv...
Avatar billede olebole Juniormester
17. februar 2012 - 23:25 #13
Du kan læse om white-space her - men det er lidt tung læsning  =)

I den forbindelse kan du også prøve denne kode, som viser, der ikke er tale om et 'rigtigt mellemrum', men et line feed, selvom det ligner et mellemrum:

<div id="myTest"><span>Ole</span>
<span>Bole</span></div>

<script type="text/javascript">
var elm = document.getElementById("myTest");
alert(elm.childNodes[1].nodeValue===" ");
alert(elm.childNodes[1].nodeValue==="\n");
</script>
Avatar billede Slettet bruger
19. februar 2012 - 21:45 #14
Blueeyez: Tusind tak for dit hurtige svar, må have overset en ellers simpel fejl. Menuen virker nu, tak for hjælpen! :)

Og til Olebole: Tusind tak fordi du har givet dig tid til at rense koderne for fejl, det var meget nyttigt - tak igen!
Avatar billede NielsErikP Mester
19. februar 2012 - 22:21 #15
#14: Hmm..
Avatar billede Slettet bruger
04. marts 2012 - 16:16 #16
Blueeyez: Tusind tak for dit hurtige svar, må have overset en ellers simpel fejl. Menuen virker nu, tak for hjælpen! :)

Og til Olebole: Tusind tak fordi du har givet dig tid til at rense koderne for fejl, det var meget nyttigt - tak igen!
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