Avatar billede lsskaarup Nybegynder
16. juni 2009 - 23:55 Der er 21 kommentarer og
1 løsning

Placerer mange DIV ved siden af hinanden

Jeg kan ikke rigtigt finde ud af hvordan jeg skal få placeret mange DIV ved siden af hinanden.

Jeg har fundet nogle tutorials der beskriver hvordan man skal gøre med 3, men jeg skal have gjort det ved 9-10 stykker, og her ikke rigtigt kunnet konvertere tutorials til min situation.

Hvordan skal koden se ud for hver af disse div, hvis jeg f.eks. gerne vil have 10 ved siden af hinanden?
Avatar billede ebusiness Nybegynder
17. juni 2009 - 00:03 #1
En måde at gøre det på er at lave en container div og så placere dine 10 divs indeni:

<div style="position:relative;">
<div style="position:absolute;left:0px;top:0px;">

</div>
<div style="position:absolute;left:60px;top:0px;">

</div>
<div style="position:absolute;left:120px;top:0px;">

</div>
</div>

Alternativt kan du også vælge at bruge en tabel til jobbet.
Avatar billede tjaz Nybegynder
17. juni 2009 - 01:09 #2
Position absolute er én mulighed, float er en anden:

<div style="width: 50px; float: left;">
  <div style="width: 10px; float: left;">1</div>
  <div style="width: 10px; float: left;">2</div>
  <div style="width: 10px; float: left;">3</div>
  <div style="width: 10px; float: left;">4</div>
  <div style="width: 10px; float: left;">5</div>
</div>
Avatar billede lsskaarup Nybegynder
17. juni 2009 - 08:12 #3
Glemte helt at sige, at siden skal centreres ud fra brugeren skærmopløsning. Virker dette så også?
Avatar billede tjaz Nybegynder
17. juni 2009 - 10:04 #4
Normalt kan du bruge:

<div style="width: 100px; margin: auto;">
    Dit indhold
</div>

Til at centere noget på skærmen, dog er det ikke i alle tilfælde (browser versioner dette virker), i sådanne tilfælde kan du bruge:

<div style="position: absolute; width: 100px; left: 50%; margin-left: -50px;">
    Dit indhold
</div>
Avatar billede roenving Novice
17. juni 2009 - 11:51 #5
Auto-margin virker i alle nyere browsere, dog skal man så af hensyn til IE6 benytte sig af en fuldt kvalificeret doctype inkl. dtd-link !-)
Avatar billede lsskaarup Nybegynder
17. juni 2009 - 13:02 #6
Hmmm,

<div style="width: 1024px; margin:auto; border: 1px solid red; ">

    <div style="width:100px ;border: 1px solid red;float:left">
    1
    </div>
    <div style="float:left; border: 1px solid red;">
    2
    </div>
    <div style="float:left; border: 1px solid red;">
    3
    </div>
    <div style="float:left; border: 1px solid red;">
    4
    </div>
    <div style="float:left; border: 1px solid red;">
    5
    </div>
    <div style="float:left; border: 1px solid red;">
    6
    </div>
    <div style="float:left; border: 1px solid red;">
    7
    </div>
    <div style="float:left; border: 1px solid red;">
    8
    </div>
    <div style="float:left; border: 1px solid red;">
    9
    </div>
    <div style="float:left; border: 1px solid red;">
    10
    </div>   
   
</div>

Det var da simpelt, hvordan kunne jeg undgå at få prøvet det igår. Syntes jeg havde forsøgt alt, men åbenbart ikke dette.
Avatar billede tjaz Nybegynder
17. juni 2009 - 13:28 #7
Sjovt at du benytte min løsning men giver ebusiness point ;)

Gør ikke mig noget, men giver bare et misvisende billede til dem som måske senere finder denne løsning.
Avatar billede ebusiness Nybegynder
17. juni 2009 - 13:34 #8
Lige en ting, hvis du vil optimere siden til skærme som er 1024px brede så skal du lave dit indhold en lille sjat mindre, fx 1000px bredt, så er der plads til en scrollbar og evt. lidt vinduesrammer.
Avatar billede lsskaarup Nybegynder
17. juni 2009 - 19:17 #9
Fuck så har jeg vinget af ud for det forkerte svar. Kan ikke rigtigt vende mig til det lyde E.

tjaz, du skal selvfølgelig ikke synes, så jeg opretter lige et pointspørgsmål du kan svare på.

Jeg ved godt at det skal være lidt mindre, for at give plads til alt "fedtet", men lige det her er eksperimenter.
Avatar billede lsskaarup Nybegynder
17. juni 2009 - 19:20 #10
Avatar billede lsskaarup Nybegynder
17. juni 2009 - 19:40 #11
Okay, det virker så nada i forhold til det layout jeg prøver at få det ind i. Kan det skyldes nogle nedarvninger, som ikke ligger korrekt?

<!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>IFA's hjemmeside</title>
<link href="Stylesheet/css.css" rel="stylesheet" type="text/css" />
</head>

<body>

<div class="wrapper">
    <div class="grid_top">
        <div class="row">
            <div class="header"></div>
        </div>
    </div>
    <div class="grid_top_menu">
        <div class="row">
                <div class="menu1"></div>         
                <div class="menu2">3er</div>
                <div class="menu1"></div>
                <div class="menu1"></div>
                <div class="menu1"></div>
                <div class="menu1"></div>
                <div class="menu1"></div>
                <div class="menu1"></div>
                <div class="menu1"></div>
        </div>
    </div>
    <div class="grid_mid">
        <div class="row">
            <div class="navi"></div>
            <div class="container"></div>
        </div>
    </div>
    <div class="grid_bottom">
        <div class="row">
            <div id="footer">footer</div>
        </div>
    </div>
</div>
</body>
</html>


@charset "utf-8";

html,body {
    margin:0;
    padding:0;
    background-color:#FFF;
    }

.wrapper {
    width:1024px;   
    margin:auto;
    display: table;
}

.grid_top {
    height:65px;
    background-image: url(../images/layout_01.jpg);
    display: table;
    background-repeat:no-repeat;
    border-collapse:collapse;
}

.grid_top_menu {
        position:relative;    /* This fixes the IE7 overflow hidden bug */
        clear:both;
        float:center;
        overflow:hidden;   
   
    height:28px;

    background-color:#FFF;
    display: table;
    background-repeat:no-repeat;
    border-collapse:collapse;
}

.grid_mid {
    width:1024px;
    height:572px;
    margin:0 auto;
    background-color:#FFF;
    background-image: url(../images/layout_11.jpg);
    display: table;
    background-repeat:no-repeat;
    border-collapse:collapse;
   
}

.grid_bottom {
    width:1024px;
    height:101px;
    margin:0 auto;
    background-color:#FFF;
    background-image: url(../images/layout_12.jpg);
    display: table;
    background-repeat:no-repeat;
    border-collapse:collapse;
}

.header {
  display: table-cell;
  width: auto;
  height:70px;
}

.menu1 {
  display: table-cell;
  width: 205px;
  background-image: url(../images/layout_02.jpg);
  height:28px;
  float:left;
}

.menu2 {
  display: table-cell;
  margin:0px 600px 0px 205px;
  width: 109px;
  height:28px;
  background-image: url(../images/layout_03.jpg);
  float:left;
}

.menu3 {
  display: table-cell;
  width: 56px;
  height:28px;
  background-image: url(../images/layout_04.jpg);
}

.menu4 {
  display: table-cell;
  width: 109px;
  height:28px;
  background-image: url(../images/layout_05.jpg);
}

.menu5 {
  display: table-cell;
  width: 49px;
  height:28px;
  background-image: url(../images/layout_06.jpg);
}

.menu6 {
  display: table-cell;
  width: 109px;
  height:28px;
  background-image: url(../images/layout_07.jpg);
}

.menu7 {
  display: table-cell;
  width: 55px;
  height:28px;
  background-image: url(../images/layout_08.jpg);
}

.menu8 {
  display: table-cell;
  width: 109px;
  height:28px;
  background-image: url(../images/layout_09.jpg);
}

.menu9 {
  display: table-cell;
  width: 223px;
  height:28px;
  background-image: url(../images/layout_10.jpg);
}

.row {
  display: table-row;
 
          float:left;
        width:100%;            /* width of page */
        position:relative;

}

.navi {
  display: table-cell;
  width: 195px;
  height:572px;
}

.container {
  display: table-cell;
  width: auto;
  height:572px;   
}

Jeg har efterhånden rodet så meget rundt, at der er meget overflødig kode, se igennem fingre med det.

Det jeg gerne ville, er at alle <div class=menuX> ligger ved siden af hinanden, uden at det går ud over de øvrige layout. Fuck, det havde sku' været nemmere med en tabel...
Avatar billede lsskaarup Nybegynder
17. juni 2009 - 19:43 #12
Ups, forkert link jeg også gav det, køre sandelig godt... http://www.eksperten.dk/spm/878587
Avatar billede ebusiness Nybegynder
17. juni 2009 - 20:16 #13
Hmm, jeg kan ikke rigtigt lide din CSS stil, du sætter display til table værdier for dine divs. Det er ikke noget jeg har erfaring med, men det virker en sådan lidt beskidt, og jeg har ingen anelse om hvorfor du overhovedet roder med display i den her situation. Du har et par divs som ikke har nogen bredde til at omkranse menupunkterne, jeg ved ikke hvor meget forskel det gør, men jeg ville ihvertfald vælge at sætte den bredde. Dine menupunkter er jo så også alt for store til at være på den linje, specielt punkt 2, hvad skal alt den margin gøre godt for?
Avatar billede lsskaarup Nybegynder
17. juni 2009 - 21:28 #14
Nu er det "work in progress", især netop med menupunkterne og bl.a. den der omkredser.

Men hensyn til table værdier, så er det dét alle de "tutorials" jeg har læst på nettet, siger man skal gøre.
Avatar billede ebusiness Nybegynder
17. juni 2009 - 22:20 #15
"Men hensyn til table værdier, så er det dét alle de "tutorials" jeg har læst på nettet, siger man skal gøre."

Link tak.
Avatar billede lsskaarup Nybegynder
17. juni 2009 - 23:00 #16
Hov, fik ikke lige skrevet, at jeg skal have centreret indholdet både horisontalt og vertikalt. Kan det gøres på andre måder end via table layout property'en?
Avatar billede ebusiness Nybegynder
18. juni 2009 - 00:16 #17
Her er et hack, inkl. JavaScript til automatisk at slå det fra når vinduet er for lavt så toppen ikke forsvinder. (Er JavaScript ikke slået til bruges den sikre ikke-centrerede metode.)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<meta name="Author" content="Jacob Christian Munch-Andersen">
<title></title>
</head>
<body>
<div id="container" style="width:100%;top:300px;position:absolute;left:0px;">
<div style="position:absolute;top:-300px;left:0px;width:100%">
<div id="content" style="height:600px;width:600px;background-color:red;margin:auto;">tekst</div>
</div>
</div>
<script>
function setbox(){
    var contentheight=600
    var h=0
    if(typeof(window.innerHeight)=='number'){
        h=window.innerHeight
    }
    else if(document.documentElement && document.documentElement.clientHeight){
        h=document.documentElement.clientHeight
    }
    if(h<contentheight){
        document.getElementById("container").style.top=(contentheight/2)+"px"
    }
    else{
        document.getElementById("container").style.top="50%"
    }
}
onresize=setbox
setbox()
</script>
</body>
</html>
Avatar billede lsskaarup Nybegynder
18. juni 2009 - 08:32 #18
Centrere den ikke alt vertikalt, for det er ikke alt jeg skal have centeret vertikalt.

Du skriver at det er et hack, men hvad er så mest beskidt? Et javascript hack (som ikke virker hvis javascript er slåt fra) eller en css property (der ud fra hvad jeg har kunnet finde er implementeret i alle nyere browsere)?
Avatar billede ebusiness Nybegynder
18. juni 2009 - 13:53 #19
Jo, det her er beregnet til at centrere alt vertikalt, hvis det kun er et element inde i et andet du ønsker centreret så er det betydeligt meget nemmere.

Jeg ved præcis hvordan den her kode virker, den gør det ens i alle browsere (i modsætning til table hacket som bruger flere forskellige metoder oveni hinanden). Koden centrerer blot ikke hvis JavaScript er slået fra, siden vil stadigvæk være fint synlig. Hvis du tror på at dit indhold er lavt nok til at det kan vises uden scrollbars på alle skærme så kan JavaScript delen skrottes. "Beskidt" er jo et løst begreb, men personligt finder jeg mit eget hack renere.
Avatar billede lsskaarup Nybegynder
18. juni 2009 - 20:23 #20
Kan jeg bruge din kode til at centrere et element inde i et andet og hvordan?
Avatar billede ebusiness Nybegynder
18. juni 2009 - 20:52 #21
Jo, sådan her, men jeg forstår egentlig ikke hvorfor du ønsker det. Er du sikker på at det er det du har brug for?

<div style="width:800px;height:800px;position:relative;background-color:red;">
<div style="position:absolute;left:50%;top:50%">
<div style="height:600px;width:600px;background-color:green;position:absolute;left:-300px;top:-300px;">tekst</div>
</div>
</div>
Avatar billede lsskaarup Nybegynder
18. juni 2009 - 21:07 #22
Måske, måske ikke, jeg eksperimentere lidt rundt med forskellige muligheder

Hvis ikke jeg sådan ser forskellige muligheder i live, så kan jeg ikke rigtigt vurdere dem i forhold til hinanden.
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