Avatar billede Slettet bruger
01. marts 2004 - 14:36 Der er 23 kommentarer og
1 løsning

2 div-elementer skal altid have samme højde

Hej

Jeg har defineret 2 div elementer. Den ene er en menu der står i højre side og den anden er selve indholdet på siden. De to elemeter skal altid have samme højde, sådan at hvis der står meget i "indholds-elemetet" på en side, så skal "menu-elementet" blive tilsvarende højere.
Derud over skal begge elementer som udgangspunkt fylde resten af siden uanset om der står noget i elementerne eller ej (jeg har nogle elementer ovenover) og uanset skærmopløsningen.
Der må ikke bruges tabeller eller frames.

Håber det er til at forstå og at der er en der kender svarene. På forhånd tak.
Avatar billede skovenborg Nybegynder
01. marts 2004 - 17:21 #1
Prøv den her:
http://www.skovenborg.frac.dk/exp/spm471674.htm

Bruger et ganske lille stykke grafik til baggrund - så man snyder sig faktisk til den illusion at de er lige store ;-)
Avatar billede Slettet bruger
01. marts 2004 - 17:47 #2
Tak, men det tror jeg ikke helt at jeg forstår. Hvordan ser background.png ud?
Avatar billede skovenborg Nybegynder
01. marts 2004 - 18:01 #3
Det såmen bare en 200x1px rødt billede. Når du skriver:
background:url("background.png") #00f repeat-y;

Bruger den background.png (som er den røde farve) og gentager den verticalt med repeat-y. #00f er den blå farve du ser, som udfylder der hvor baggrundsbilledet ikke er. Jeg har dog også sat den røde baggrundsfarve på menuDiv'en i tilfælde af at browseren ikke viser billeder.
Avatar billede Slettet bruger
01. marts 2004 - 23:07 #4
Hej igen
Det ser ud til at fungere godt, men jeg har dog stadig to problemer. Det ene er at jeg har nogle div elementer over de to div elementer ("menu" og "indhold") og de har ikke altid en fast højde og derfor er det ikke til at sætte det baggrundsbillede til, uden at det kan ses i elementerne oven over.
Det andet er at "menu" og "indhold" elementerne præcis skal fylde resten af skærmen uanset hvilken opløsning der bruges. Med mindre at der står mere i "indhold" end der er plads til i én skærmhøjde.
Håber du også har en god løsning til det?
Avatar billede skovenborg Nybegynder
02. marts 2004 - 00:53 #5
kunne du ikke smide et link eller noget kode (helst link seføli' ;-)

Umiddelbart er den løsning jeg viste dig der også den mest enkle der findes - men det klart at den ikke altid vil virke lige godt. Denne løsning er mest til to stk. divs som fyldes hele skærmhøjden og udvider sig automatisk hvis der kommer for meget indhold i. Men selvom den ikke virker her er den meget rar at kunne jo ;-)
Avatar billede Slettet bruger
02. marts 2004 - 01:45 #6
Ja, den er så absolut rar at kunne. Jeg kan desværre ikke sende et link, da jeg laver det lokalt. Men her kommer koden, som jo så ikke er helt som jeg gerne vil have den :-)

Først selve siden og bagefter stylesheetet.

<html>
<head>
<title><%=sHtml_title%></title>


<link rel="stylesheet" type="text/css" href="\includes\css\stylesheet_frontpage_screen.css">
</head>


<body style="margin: 0px;">

<div id="topbar">
<%=sTitle%>
</div>

<div id="logobar">
</div>

<div id="personalmenubar">
</div>

<div id="rightmenu">
Menu<br><br>
</div>

<div id="content">
Indhold<br><br>

</div>

<div id="bottombar">
</div>

</body>
</html>

.....og så stylesheetet


<style type="text/css">

BODY {
    padding:0px;
}


#topbar {
    position: relative;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 20;

    background-color:#24A520;
    text-indent: 20px;
    font-family: arial, verdana, sans-serif;
    color: #FFFFFF;
    font-weight:bold;
    font-size: 14px;
}

#logobar {
    position: relative;
    left: 0px;
    top: 1px;
    width: 100%;
    height: 45px;

    background-color:#D4D0C8;
    text-indent: 20px;
    font-family: arial, verdana, sans-serif;
    color: #000000;
    font-weight:bold;
    font-size: 16px;
}

#personalmenubar {
    position: relative;
    top: 0;
    left: 0px;
    width: 100%;

    background-color:#b1b19f;
    text-indent: 20px;
    font-family: arial, verdana, sans-serif;
    color: #24A520;
    font-weight:bold;
    font-size: 14px;
}

#rightmenu {
    position: relative;
    TOP: 3px;
    left: 0px;
    width:120;
    float: left;
           
    height: ;   
    background-color:#D4D0C8;
    padding-left: 5px;
    font-family: arial, verdana, sans-serif;
    color: #000000;
    font-weight:none;
    font-size: 14px;
}

#content {
    position: relative;
    top: 3px;
    left: 10px;

    height: ;   
    background-color: #FF80C0;
    font-family: arial, verdana, sans-serif;
    color: #000000;
    font-weight:none;
    font-size: 14px;
}

#bottombar {

    position: relative;
    top: 0px;
    left: 0px;
    width: 100%;

    background-color:#b1b19f;
}

</style>
Avatar billede mik789 Nybegynder
02. marts 2004 - 08:29 #7
ved ikke om jeg har forstået dig rigtigt...
hvis det er sådan at de to div'er altid skal se ud som om de er lige så høje som vinduet (eller dokumentet?), hvordan kan du så samtidig tale om at "De to elemeter skal altid have samme højde, sådan at hvis der står meget i "indholds-elemetet" på en side, så skal "menu-elementet" blive tilsvarende højere"? Det er da to forskellige ting. Og det sidste, at indholdet af den ene gør den anden tilsvarende højere, kan man jo ikke se hvis de begge skal være lige så høje som vinduet.
//mik
Avatar billede Slettet bruger
02. marts 2004 - 11:19 #8
:-) Jeg syntes også det er lidt svært at forklare, men her prøver jeg lige igen:

Øverst er der 3 elementer, der alle er 100% i bredden og varierer i højden.
Nederst er der 1 element, der også er 100% i bredden, dog med en fast højde.
I mellem er der 2 elementer, der står ved siden af hinanden. Disse 2 elementer har fast bredde, men varierer i højden og de skal altid være lige høje. Som udgangspunkt skal de 2 elementer dog have en højde, så de øverste 3 elementer og det nederste element præcis er inde for skærmens højde. Der vil dog være tilfælde, hvor der er så meget i de forskellige elementerne at de ikke kan være inde for én højde af skærmen og det er også ok.
Håber det gjorde det lidt klarer og at I ved hvordan jeg skal løse det?
Avatar billede mik789 Nybegynder
02. marts 2004 - 13:51 #9
"Der vil dog være tilfælde, hvor der er så meget i de forskellige elementerne at de ikke kan være inde for én højde af skærmen og det er også ok."

Og hvad skal der så ske i dette tilfælde? Skal der så vises en scrollbar i midterområdet (altså fuldstændig som hvis det var et frameset men en fast top, en fast bund, og en midterramme med lodret scrollbar)? Eller hvad?
Avatar billede Slettet bruger
02. marts 2004 - 14:01 #10
I det tilfælde hvor det ikke kan være inden for skærmen, må den scrollbar, der er i browseren, bare benyttes og så kan man ikke uden at scrole ned se det element der er i bunden.
Nej, jeg vil aldrig have en scrollbari midterområdet og jeg vil ikke benytte frames. Giver det mening?
Avatar billede roenving Novice
02. marts 2004 - 22:25 #11
Har du virkelig <style>-tags i din /includes/css/stylesheet_frontpage_screen.css-fil ?-)

-- ellers vil jeg lige prøve at kigge på det !-)
Avatar billede Slettet bruger
02. marts 2004 - 22:34 #12
Ja, er det forkert?
Avatar billede skovenborg Nybegynder
02. marts 2004 - 22:44 #13
ja ;-)
Avatar billede roenving Novice
02. marts 2004 - 22:44 #14
Ja, for når du linker til den, er det jo i forvejen fastlagt, at det er et stylesheet, så principielt er det en fejl ...

-- og bemærk også, at jeg havde ændret fra backslash til almindelige slashes, som jo er det, du principielt skal bruge på en webside (serveren skal nok finde frem i dit mappe-hierarki !-)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hold højden</title>
<style type="text/css">
html,body {
    margin:0px;
    padding:0px;
    height:100%;
}
#topbar {
    position: relative;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 20px;
    background-color:#24A520;
    text-indent: 20px;
    font-family: arial, verdana, sans-serif;
    color: #FFFFFF;
    font-weight:bold;
    font-size: 14px;
}
#logobar {
    position: relative;
    left: 0px;
    top: 1px;
    width: 100%;
    height: 45px;
    background-color:#D4D0C8;
    text-indent: 20px;
    font-family: arial, verdana, sans-serif;
    color: #000000;
    font-weight:bold;
    font-size: 16px;
}
#personalmenubar {
    position: relative;
    top: 0px;
    left: 0px;
    width: 100%;
    background-color:#b1b19f;
    text-indent: 20px;
    font-family: arial, verdana, sans-serif;
    color: #24A520;
    font-weight:bold;
    font-size: 14px;
}
#rightmenu {
    position: relative;
    TOP: 3px;
    left: 0px;
    width:120px;
    float: left;
    background-color:#D4D0C8;
    padding-left: 5px;
    font-family: arial, verdana, sans-serif;
    color: #000000;
    font-weight:none;
    font-size: 14px;
}
#content {
    position: relative;
    top: 3px;
    left: 10px;
    background-color: #FF80C0;
    font-family: arial, verdana, sans-serif;
    color: #000000;
    font-weight:none;
    font-size: 14px;
}
#bottombar {
    position: relative;
    top: 0px;
    left: 0px;
    width: 100%;
    background-color:#b1b19f;
}
</style>
<script type="text/javascript">
var divs = ['content','rightmenu'];
var faste = ['topbar','logobar','personalmenubar','bottombar']
function syncronizeDivs(){
    var maxH = document.body.offsetHeight - 6;
    d = document.getElementsByTagName("DIV");
    for(i=0;d.length>i;i++){
        for(j=0;faste.length>j;j++){
            if(d[i].id==faste[j])maxH -= d[i].offsetHeight;
        }
    }
    for(i=0;d.length>i;i++){
        for(j=0;divs.length>j;j++){
            if(d[i].id==divs[j])maxH = Math.max(maxH,d[i].offsetHeight);
        }
    }
    for(i=0;d.length>i;i++){
        for(j=0;divs.length>j;j++){
            if(d[i].id==divs[j])d[i].style.height=maxH + 'px';
        }
    }
}
</script>
</head>
<body onload="syncronizeDivs()">
<div id="topbar">
Hold højden
</div>
<div id="logobar">
</div>
<div id="personalmenubar">
</div>
<div id="rightmenu">
Menu<br><br>
</div>
<div id="content">
Indhold<br><br>
</div>
<div id="bottombar">
</div>
</body>
</html>
Avatar billede roenving Novice
02. marts 2004 - 22:47 #15
-- og så rettede jeg lige nogle småfejl i stylesheetet, men jeg har dog ikke gået det igennem med en tættekam (du havde glemt px et par gange, css kræver at få en målestok, selvom visse browsere prøver at gætte !-)

-- og til min simple udvikling var det jo enklere at lægge stylesheetet inde, du kan bare lige rette og så flytte det ud igen !-)
Avatar billede roenving Novice
02. marts 2004 - 22:58 #16
-- bemærk også, at jeg måtte sætte html,body{height:100%} ind, for ellers er der ikke en meningsfuld højde !-)

-- og så kigger jeg lige på en løsning, som holder i både ie og mozilla ...
Avatar billede roenving Novice
02. marts 2004 - 23:09 #17
Umiddelbart kunne jeg ikke finde nogen fejl i denne version:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hold højden</title>
<style type="text/css">
html,body {
    margin:0px;
    padding:0px;
    height:100%;
}
#topbar {
    position: relative;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 20px;
    background-color:#24A520;
    text-indent: 20px;
    font-family: arial, verdana, sans-serif;
    color: #FFFFFF;
    font-weight:bold;
    font-size: 14px;
}
#logobar {
    position: relative;
    left: 0px;
    top: 1px;
    width: 100%;
    height: 45px;
    background-color:#D4D0C8;
    text-indent: 20px;
    font-family: arial, verdana, sans-serif;
    color: #000000;
    font-weight:bold;
    font-size: 16px;
}
#personalmenubar {
    position: relative;
    top: 0px;
    left: 0px;
    width: 100%;
    background-color:#b1b19f;
    text-indent: 20px;
    font-family: arial, verdana, sans-serif;
    color: #24A520;
    font-weight:bold;
    font-size: 14px;
}
#rightmenu {
    position: relative;
    TOP: 3px;
    left: 0px;
    width:120px;
    float: left;
    background-color:#D4D0C8;
    padding-left: 5px;
    font-family: arial, verdana, sans-serif;
    color: #000000;
    font-weight:none;
    font-size: 14px;
}
#content {
    position: relative;
    top: 3px;
    left: 10px;
    float:left;
    background-color: #FF80C0;
    font-family: arial, verdana, sans-serif;
    color: #000000;
    font-weight:none;
    font-size: 14px;
}
#bottombar {
    clear:left;
    position: relative;
    top: 0px;
    left: 0px;
    width: 100%;
    background-color:#b1b19f;
}
</style>
<script type="text/javascript">
var divs = ['content','rightmenu'];
var faste = ['topbar','logobar','personalmenubar','bottombar']
function syncronizeDivs(){
    document.getElementById('content').style.width = document.body.offsetWidth - 135 + 'px';
    var maxH = document.body.offsetHeight ;
    d = document.getElementsByTagName("DIV");
    for(i=0;d.length>i;i++){
        for(j=0;faste.length>j;j++){
            if(d[i].id==faste[j])maxH -= d[i].offsetHeight;
        }
    }
    for(i=0;d.length>i;i++){
        for(j=0;divs.length>j;j++){
            if(d[i].id==divs[j])maxH = Math.max(maxH,d[i].offsetHeight);
        }
    }
    for(i=0;d.length>i;i++){
        for(j=0;divs.length>j;j++){
            if(d[i].id==divs[j])d[i].style.height=maxH + 'px';
        }
    }
}
</script>
</head>
<body onload="syncronizeDivs()">
<div id="topbar">
Hold højden
</div>
<div id="logobar">
</div>
<div id="personalmenubar">&nbsp;
</div>
<div id="rightmenu">
Menu<br><br>
</div>
<div id="content">
Indhold<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</div>
<div id="bottombar">&nbsp;
</div>
</body>
</html>
Avatar billede roenving Novice
02. marts 2004 - 23:11 #18
-- og jeg måtte lige tilføje 'noget' til de to tomme divs, som ikke havde højde ...

Det ser for mig ud som om den klassiske IE-fejl med fysiske linjeskift ved td'er går igen med divs !-)
Avatar billede Slettet bruger
02. marts 2004 - 23:48 #19
Super - mange tak. Det var lidt mere avanceret end jeg selv kunne komme op med, men det ser ud til at det virker. Tak til alle, der gav en hånd med.
roenving sender du lige et svar så du kan få point.
Avatar billede roenving Novice
02. marts 2004 - 23:51 #20
Velbekomme '-)
Avatar billede Slettet bruger
03. marts 2004 - 18:57 #21
Hej Igen. Jeg ved godt at dette spørgsmål er afsluttet, men jeg er løbet ind i et uforudset problem. Det er at jeg har en tabel, der er breddere end "indhold"-div elementet og så ryger tabellen ned under "right-menu"-div elementet. I stedet ville der være perfekt, hvis "indhold" og barene over og baren under blev tilsvarende breddere, således at det fylder mere end bredden af skærmen.
Håber I har en god løsning til det også.
Avatar billede Slettet bruger
04. marts 2004 - 12:59 #22
Jeg har oprettet det som nyt spørgsmål - se:
http://www.eksperten.dk/spm/473045
Avatar billede roenving Novice
25. december 2006 - 00:23 #23
Tid til afslutning ?-)
Avatar billede roenving Novice
25. december 2006 - 23:22 #24
Tak for point ;~}
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