Avatar billede flushout Nybegynder
02. august 2005 - 01:07 Der er 28 kommentarer og
1 løsning

problem med css positionering af div

Hejsa

Jeg er ved at udvikle en side, som jeg opbygger med div's. Mit problem er, at det div der bør være nederst på siden hele tiden flytter op. Jeg er ikke vildt stærk i CSS positionering, så jeg kan ikke finde en løsning selv. Jeg forsøgte med lidt javascript, dog uden held =/

Det der skal gøres er: Div'ne 'container' og 'footerContainer' skal skaleres/placeres afhængigt af hvor megen tekst der er i Div'ne 'mainContent' og 'hojresideContent'

Sitet kan ses her: http://www.jgldesign.dk/tst/index.html

Her er html og css koden, for dem der ikke gider klikke sig ind på siden:

---------------------
HTML:
---------------------

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Forside</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript">
    function alignDivCenter(id) {
        document.getElementById(id).style.left = document.body.offsetWidth/2-326;
    }
    onresize = function() {
        alignDivCenter('container');
    }
</script>
</head>
<body onload="alignDivCenter('container')">
<div id="container" class="container">
    <div id="headerContainer" class="headerContainer">
        <img src="header.jpg" alt="" />
    </div>
    <div id="mainContent" class="mainContent">
            <h1>Overskrift1</h1>
            <p>langt indhold....</p>
    </div>
    <div id="hojresideContent" class="hojresideContent">
            <h1>Overskrift1</h1>
            <p>langt indhold....</p>
    </div>
    <div id="footerContainer" class="footerContainer">
        <img src="footer.jpg" alt="" />
    </div>
</div>
</body>
</html>

---------------------
CSS:
---------------------

BODY
    {
    background-color:#EDECEC;
    }

H1
    {
    color: #7F5D04;
    font-family :  Verdana, Geneva, Arial;
    font-size : 8pt;
    text-decoration : none;
    font-weight: bold;
    }
P
    {
    color: #666666;
    font-family :  Verdana, Geneva, Arial;
    font-size : 8pt;
    text-decoration : none;
    font-weight: normal;
    }
.container
    {
    background-color:#D7D7D7;
    position:relative;
    top:0px;
    left:0px;
    width:653px;
    height:600px;
    z-index:0;
    }
.headerContainer
    {
    position:absolute;
    top:0px;
    left:0px;
    width:653px;
    z-index:2;
    }
.footerContainer
    {
    position:absolute;
    bottom:0px;
    left:0px;
    width:653px;
    z-index:3;
    }
.mainContent
    {
    position:absolute;
    top:253px;
    left:15px;
    width:408px;
    z-index:4;
    }
.hojresideContent
    {
    background-image:url('rightback.jpg') repeat-y;
    position:absolute;
    top:250px;
    left:469px;
    width:186px;
    z-index:5;
    }

---------------------

På forhånd mange tak for hjælpen! =)
Avatar billede flushout Nybegynder
02. august 2005 - 01:09 #1
En anden lille ting..

background-image:url('rightback.jpg') repeat-y;

burde så vidt jeg ved gentage billedet 'rightback.jpg' i y aksen i hele div'ets højde.. hvorfor sker det ikke?

Endnu engang tak =)
Avatar billede foxmulder58 Praktikant
02. august 2005 - 01:15 #2
jeg har engang fået et JavaScript der tilpassede DIV tags mht. størrelse, du skal selv ændre variablerne således de passer med dine divs :


<script type="text/javascript">
var divs = ['main','menu'];

function syncronizeDivs(){
    var maxH = 0;
    d = document.getElementsByTagName("DIV");
    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>

<body onload="syncronizeDivs()">
Avatar billede flushout Nybegynder
02. august 2005 - 01:16 #3
ok.. jeg fandt fejlen i min css.. den skal se sådan ud:

background-image:url('rightback.jpg');
background-repeat:repeat-y;

Jeg kan ikke løse mine andre problemer :(
Avatar billede foxmulder58 Praktikant
02. august 2005 - 01:19 #4
nu anvender du en DOCTYPE der ikke er god i samspil med CSS. Har du prøvet at se hvordan siden formateres via en anden DOCTYPE?

mvh
Mads
Avatar billede foxmulder58 Praktikant
02. august 2005 - 01:20 #5
altså via denne DOCTYPE;


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">


mvh
Mads
Avatar billede flushout Nybegynder
02. august 2005 - 01:23 #6
Ja, jeg har forsøgt at løse problemet på den måde. Desværre hjælper det ikke :'(
Avatar billede flushout Nybegynder
02. august 2005 - 01:24 #7
Jeg tror at løsningen er en form for javascript (er dog ikke sikker), men jeg valgte alligevel at poste det her, da det er her det hører til..
Avatar billede foxmulder58 Praktikant
02. august 2005 - 01:26 #8
har du prøvet funktion med syncronize divs?


mvh
Mads
Avatar billede flushout Nybegynder
02. august 2005 - 01:28 #9
ja, jeg prøvede lige... det kan være jeg brugte den forkert, men det virker ikke. Du kan se min implementering på siden: http://www.jgldesign.dk/tst/index.html
Avatar billede flushout Nybegynder
02. august 2005 - 01:31 #10
Det fik siden til at hoppe helt over til venstre (halvt ude af skærmen) i firefox!?
Avatar billede foxmulder58 Praktikant
02. august 2005 - 01:36 #11
ØV! havde håbet det hjalp, er på vej i seng nu  ....håber der er en der kan hjælpe dig...kigger ind på tråden imorgen...er sikker t på at der er nogen der måhave en løsning i ærmet til dig!

vi ses nok herinde imorgen!


mvh
Mads
Avatar billede flushout Nybegynder
02. august 2005 - 01:38 #12
k lyder godt =) Jeg vil også smutte i seng, jeg glæder mig til at høre hvordan man fikser det!
Avatar billede foxmulder58 Praktikant
02. august 2005 - 01:38 #13
ja håber jeg også at det bliver fikset..flot side iøvrigt!

mvh
Mads
Avatar billede flushout Nybegynder
02. august 2005 - 02:20 #14
Jeg har fået løst problemet med en modificeret version af dit script:

-----------------
function syncronizeDivs(){
    var maxH = 0;
    d = document.getElementsByTagName("DIV");
    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 (divs[j] == 'footerContainer'){
                    maxHmod = parseInt(maxH + 260);
                    if(d[i].id==divs[j])d[i].style.top=maxHmod + 'px';   
                }
                else {
                    if (divs[j] == 'container'){
                        maxHmod = parseInt(maxH + 260);
                        if(d[i].id==divs[j])d[i].style.height=maxHmod + 'px';   
                    }
                    else {
                        if (divs[j] == 'hojresideContent'){
                            maxHmod = parseInt(maxH + 30);
                            if(d[i].id==divs[j])d[i].style.height=maxHmod + 'px';   
                        }
                        else {
                            if(d[i].id==divs[j])d[i].style.height=maxH + 'px';   
                        }
                    }
                }
        }
    }
    document.getElementById('container').style.left = document.body.offsetWidth/2-326;
}
-----------------

Der er dog stadig en detalje jeg gerne vil have til at virke. Når siden resizer kalder jeg i onresize funktionen. Mit problem er, at højden på de forskellige divs ikke bliver korrekt. De bliver nu for lange, indtil jeg trykker F5 og opdaterer.

Hvis der er en smartere måde at gøre det på end dette ville jeg også værdsætte det, da det tager lidt tid for browseren at positionere siden vha. denne metode.
Avatar billede jesper-moeller Nybegynder
02. august 2005 - 02:21 #15
Prøv at flytte din "footerContainer"
(Fik det til at virke her.)

Fra:
</div>
    <div id="hojresideContent" class="hojresideContent">
            <br />
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://jigsaw.w3.org/css-validator/validator?uri=http://www.jgldesign.dk/tst/index.html"><img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a></p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://validator.w3.org/check?uri=referer"><img border="0" src="http://www.w3.org/Icons/valid-html40" alt="Valid HTML 4.0!" height="31" width="88"></a></p>
            <br /><br />
<div id="footerContainer" class="footerContainer">
        <img src="footer.jpg" alt="" />
    </div>
</div>
</div>


til:
</div>
    <div id="footerContainer" class="footerContainer">
        <img src="footer.jpg" alt="" />
    </div>
    <div id="hojresideContent" class="hojresideContent">
            <br />
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://jigsaw.w3.org/css-validator/validator?uri=http://www.jgldesign.dk/tst/index.html"><img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a></p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://validator.w3.org/check?uri=referer"><img border="0" src="http://www.w3.org/Icons/valid-html40" alt="Valid HTML 4.0!" height="31" width="88"></a></p>
            <br /><br />
</div>
</div>
Avatar billede flushout Nybegynder
02. august 2005 - 02:26 #16
ok.. jeg kan se, at jeg pga mine +260 og +30 i kombination med onResize får lavet en løkke, der laver div'ne længere og længere når man justerer størrelsen på browservinduet. Det skal det self ikke... hmm .. jeg tror jeg er for træt nu.. sengetid :P
Avatar billede flushout Nybegynder
02. august 2005 - 02:30 #17
Tak for forslaget jesper-moeller, men det gjorde ingen forskel.. hverken med javascript eller uden..
Avatar billede jesper-moeller Nybegynder
02. august 2005 - 02:34 #18
Oki... virkede ellers her...*G*
Avatar billede flushout Nybegynder
02. august 2005 - 02:36 #19
ok.. sært.. jeg prøvede det i IE 6 og Firefox 1.0.4 ingen af dem reagerede på ændringen..!?
Avatar billede jesper-moeller Nybegynder
02. august 2005 - 02:40 #20
kan være dety var en ældre version a din side jeg legede med
Avatar billede jesper-moeller Nybegynder
02. august 2005 - 07:10 #21
Efter en nats arbejde med noget grafik, fik jeg lyst til at bryde hjerne med noget andet... så tog et kig på din side.
Hvad jeg ved om javascript kan der ikke skrives mange linje om. men tænkte om det script overhovedt behøves (Hvis det kun er til for at styre divs) ??
Well...skal jeg ikke gøre mig klog på

Men her er min version af løsningen på problemet med footeren  (Uden javascript  - med lille ændringsforslag .*G*)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

    <head>
        <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
        <title>Forside</title>
        <style media="screen" type="text/css"><!--
body          { font-size: 100%; font-family: verdana, Arial, Helvetica, Geneva, sans-serif; background: #edecec url(back.jpg) repeat-y fixed center ; text-align: center; margin: 0px; padding: 0px; border: 0px }
/*
    Lav et nyt bagrunds billed på 654px brede * 1px høj til mainContent
    istedet for baggrunds billedet "back.jpg"
*/
#wrapper            {  margin-right: auto; margin-left: auto; position: relative; z-index: 0; top: 10px; width: 654px; height: 100%; visibility: visible }
#wrapper        { text-align: left;  position: relative !important }

#headerContainer { position: absolute; z-index: 2; top: 0px; left: 0px; width: 654px; height: auto; visibility: visible }
#mainContent            { background: url(rightback.jpg) fixed center ; padding: 15px 221px 15px 15px; position: absolute; z-index: 3; top: 239px; left: 0px; width: 415px; visibility: visible }
#hojresideContent      { position: absolute; z-index: 4; top: 239px; left: 457px; width: 186px; height: auto; visibility: visible }
#footerContainer            { color: #ff9; font-size: 7pt; background-image: url(footer.jpg); margin: 15px 0px 0px; position: absolute; z-index: 5;  left: 0px; width: 654px; visibility: visible }

h1    { color: #7F5D04; font-size : 8pt; text-decoration : none; font-weight: bold;}
p    { color: #666666; font-size : 8pt; text-decoration : none; font-weight: normal; }
--></style>
    </head>

    <body>
        <div id="wrapper">
            <div id="headerContainer">
                <img src="header.jpg" alt="">
                <div id="hojresideContent">
                    <!-- Hvis højre side indeholde menuer ef nogen slags bør diven stå før main -->
                    <br>
                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></p>
                    <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img style="border:0;width:88px;height:31px" src="http://www.w3.org/Icons/valid-html40" alt="Valid HTML 4.0!"></p>
                </div>
                <div id="mainContent">
                    <h1>Et lille forslg til din side</h1>
                    <p>istedet for de stor W3C m&aelig;rker i kanten , s&aring; tror jeg siden ville v&aelig;re p&aelig;nere hvis du placere sm&aring; tekstlinks til w3c i bunden af siden isted.<br>
                        Tror det ville v&aelig;re mere diskret og p&aelig;nere</p>
                    <h1>Overskrift2</h1>
                    <p>Donec vitae eros. Morbi dictum neque nec urna. In vehicula eros sed sapien. Integer in diam. Fusce non justo id lectus malesuada venenatis. Ut eu mauris at nulla blandi laoreet. Suspendisse suscipit congue diam. Aliquam erat volutpat. Curabitur diam. Phasellus non lacus. Nulla sagittis nunc.</p>
                    <h1>Overskrift1</h1>
                    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer et wisi. Pellentesque sit amet dui. Curabitur sollicitudin tortor sit amet mauris. Quisque magna leo, gravida sit amet, lacinia d, tincidunt eget, lacus. pellentesque metus magna, blandit ut, rhoncus at, accumsan ac, metus. Aenean pharetra tincidunt libero. Class aptent taciti sociosqu ad litora to- rquent per conubia nostra per inceptos hymenaeos.</p>
                    <h1>Overskrift2</h1>
                    <p>Donec vitae eros. Morbi dictum neque nec urna. In vehicula eros sed sapien. Integer in diam. Fusce non justo id lectus malesuada venenatis. Ut eu mauris at nulla blandit laoreet. Suspendisse suscipit congue diam. Aliquam erat volutpat. Curabitur diam. Phasellus non lacus. Nulla sagittis nunc</p>
                        <div id="footerContainer">
                        Siden er lavet af John .... HTML4.01/CSS2 Valideret af <a href="http://jwww.w3c.org/">w3C</a></div>
                </div>
               
            </div>
        </div>
    </body>

</html>

Har virket i alle de browsere jeg har teste i....
Eneste minus...hvis indholdet af siden er mindre end vinduet vil footeren ikke nå bunder af vinduet ,,, men stopper efter indholdet (men vikre den andevej.)

Og ja... noget af CSS ku være smartere ...men jeg er træt....og på vej iseng  (Natarbejde tager på en *G*)

Håber det kan være til nogen hjælp
Avatar billede roenving Novice
02. august 2005 - 10:18 #22
Jeg har vist en Hold-mig-i-bunden-ting her, måsker er det det, du skal bruge: http://www.eksperten.dk/spm/634694 !-)
Avatar billede flushout Nybegynder
02. august 2005 - 20:39 #23
ok.. nu nærmer det sig kraftigt. Nu kan jeg kun se et problem.

Div'et 'hojresideContent' skal gerne have height:100%; Det virker også fint i Firefox, men i Explorer bliver det kun den højde billedet i div'et har. Er der nogen der kan forklare mig hvad jeg har lavet forkert?

html:
http://www.jgldesign.dk/tst/

style:
http://www.jgldesign.dk/tst/style.css

Takker =)
Avatar billede roenving Novice
03. august 2005 - 09:45 #24
100% af hvad ?-)

-- du skal også sætte højden for dokument- og body-elementet: html,body{height:100%;}
Avatar billede flushout Nybegynder
03. august 2005 - 21:25 #25
Ok, det er nu sat.

100% af højden af det div det ligger i, altså div'et 'content'.
Avatar billede flushout Nybegynder
03. august 2005 - 22:43 #26
Jeg har midlertidigt løst problemet med et lille javascript, men jeg vil gerne have det løst med css hvis det er muligt!?

Der skal også snart deles points ud.. jesper-moeller og foxmulder58, jeg har brugt dele fra begge af Jeres løsninger, så hvis i lægger et svar så får i nogle points.. =)
Avatar billede flushout Nybegynder
04. august 2005 - 22:49 #27
... vil i have points? ...
Avatar billede flushout Nybegynder
12. august 2005 - 10:01 #28
ok.. jeg giver jer et par dage til og så lukker jeg.
Avatar billede flushout Nybegynder
17. august 2005 - 10:12 #29
lukker
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