Avatar billede venchil Nybegynder
03. august 2006 - 20:07 Der er 18 kommentarer

div altid på bunden af siden

Hej eksperter!
Jeg har et lille problem ang. en div, som jeg skal have til altid at være i bunden af en side, ligemeget om man scroller eller hvad man nu ellers gør.

Er der nogen der kan hjælpe?
Avatar billede mclemens Nybegynder
03. august 2006 - 20:27 #1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<style type="text/css">
html,body{height:100%;margin:0px;padding:0px;}

html{height:100%;width:100%;}

#tops{position:absolute;top:0px;left:0px;background:#aaa;height:100px;width:100%;}

#nybodyydre{position:absolute;top:0px;height:100%;}
#nybodyindre{position:relative;height:100%;}
#nybodyydre>#nybodyindre{min-height:100%;height:auto;}

#nybody{position:relative;padding-top:100px;width:100%;}

#footer,#spacerdiv{height:100px;}
#footer{position:absolute;bottom:0px;left:0px;background:#aaa;width:100%;}
#spacerdiv{clear:both;width:100%;}

#bil{float:left;width:200px;background:#555;}
#bim{background:#666;}
#bir{float:right;width:200px;background:#777;}
</style>
</head>
<body>


<div id="tops">Test</div>

<div id="nybodyydre"><div id="nybodyindre">
<div id="nybody">
<div id="bil">test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>test<br>testesttest slut<br></div>
<div id="bir">test</div>
<div id="bim">test</div>
<div id="spacerdiv">&nbsp;</div>
</div>

<div id="footer">Test</div>

</div></div>

</body></html>
Avatar billede mclemens Nybegynder
03. august 2006 - 20:27 #2
Finder lige nogle links...
Avatar billede mclemens Nybegynder
03. august 2006 - 20:29 #3
http://www.eksperten.dk/spm/712486#rid6300689
- i tråden er lidt forskelligt ...
Avatar billede venchil Nybegynder
03. august 2006 - 20:44 #4
Jeg har nok ikke forklaret ordentligt så... Hvordan kan jeg gøre sådan at diven altid er synlig i bunden, selvom der er scroll... Altså sådan, at den lægger sig oven på alt andet content, og bliver liggende i bunden, selvom der er scroll?
Avatar billede mclemens Nybegynder
03. august 2006 - 20:44 #5
Nåh, ok det er meget lettere :o)
Avatar billede venchil Nybegynder
03. august 2006 - 20:46 #6
Der skal da noget javascript til? Eller...? Kan du vise kode? :P
Avatar billede mclemens Nybegynder
03. august 2006 - 20:46 #7
Hvad med kunstige frames?
Avatar billede mclemens Nybegynder
03. august 2006 - 20:47 #8
[ Der skal da noget javascript til? Eller...? Kan du vise kode? :P ]
- Yes, det gør vi lige...
Avatar billede mclemens Nybegynder
03. august 2006 - 20:49 #9
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<style type="text/css">
#followit{
position:absolute;bottom:0px;left:0px;
width:100%;height:100px;background:#aaa;
}
</style>

<script type="text/javascript">
var tpops="bottom"; // "top" eller "bottom"
var tpopt=0; // Antal pixels fra top/bottom position
var rpops="left"; // "right" eller "left"
var rpopt=0; // Antal pixels fra right/left position
var trefval=10; // Antal ms. mellem alignment af div

var ww,wh,fi,fioh,fiow;

window.onload=function(){
ww=document.body.offsetWidth;
wh=(tmp=window.innerHeight)?tmp:document.documentElement.clientHeight;

tmp=document.getElementById("followit");
fi=tmp.style;fioh=tmp.offsetHeight;fiow=tmp.offsetWidth;
alignit(0);
setInterval("alignit(1);",trefval);
}

function alignit(tmp){
if(tmp==0){fi.top="auto";fi.right="auto";}

var dmcst=(tmenu=document.documentElement.scrollTop)?tmenu:document.body.scrollTop;
var dmcsl=(lmenu=document.documentElement.scrollLeft)?lmenu:document.body.scrollLeft;

tmpy=(tpops=="bottom")?wh-tpopt-fioh+dmcst:tpopt+dmcst;
tmpx=(rpops=="right")?ww-rpopt-fiow+dmcsl:rpopt+dmcsl;

fi.top=tmpy+"px";
fi.left=tmpx+"px";
}

</script></head>

<body onresize="alignit();" style="margin:0px;height:100%;">

<table style="width:100%;border:1px solid #000;"><tr><td>Test start<br><div style="height:700px;">&nbsp;</div><br>Test slut</td></tr></table>

<div id="followit">Test</div>

</body></html>
Avatar billede mclemens Nybegynder
03. august 2006 - 20:50 #10
Avatar billede mclemens Nybegynder
03. august 2006 - 20:53 #11
Der er også en css i samme tråd men IE og FF forstår reservation af plads til scroller lidt forskelligt - og width:100%; vil også give problemer i den løsning da den kan dække over scrolleren til det andet layer... http://www.eksperten.dk/spm/717389#rid6318274
Avatar billede mclemens Nybegynder
03. august 2006 - 20:53 #12
- Anbefaler javascriptet...
Avatar billede venchil Nybegynder
03. august 2006 - 20:56 #13
Den virker efter intentionen, men i Mozilla Firefox på Mac (det eneste det er testet i) kan man blive ved med at scrolle nedad, lidt efter lidt... Man kan også se at der er en meget lille forsinkelse på den, kan det undgås?
Avatar billede mclemens Nybegynder
03. august 2006 - 21:02 #14
[kan man blive ved med at scrolle]
... hmm, kan ikke få den til det FF på PC...

Forsinkelse kan ikke undgåes i javascript (timeout
kan ikke komme meget tættere end 2 cifrede ms. )
- Man kan selvfølgelig kalde onmousemove også og onkeydown
... men det hjælper nok ikke så meget igen ...

- table tagget skal nok lige rettes:

<table style="width:100%;border:1px solid #000;margin-bottom:100px;">

- glemte margin-bottom:100px; ...
Avatar billede mclemens Nybegynder
03. august 2006 - 21:04 #15
Som sagt hjalp ikke meget...

var trefval=10; // Antal ms. mellem alignment af div
^ - Meget mindre end 10ms virker heller ikke rigtig i de fleste browsere...



<script type="text/javascript">
var tpops="bottom"; // "top" eller "bottom"
var tpopt=0; // Antal pixels fra top/bottom position
var rpops="left"; // "right" eller "left"
var rpopt=0; // Antal pixels fra right/left position
var trefval=10; // Antal ms. mellem alignment af div

var ww,wh,fi,fioh,fiow;

window.onload=function(){
ww=document.body.offsetWidth;
wh=(tmp=window.innerHeight)?tmp:document.documentElement.clientHeight;

tmp=document.getElementById("followit");
fi=tmp.style;fioh=tmp.offsetHeight;fiow=tmp.offsetWidth;
alignit(0);
setInterval("alignit(1);",trefval);
}

function alignit(tmp){
if(tmp==0){fi.top="auto";fi.right="auto";}

var dmcst=(tmenu=document.documentElement.scrollTop)?tmenu:document.body.scrollTop;
var dmcsl=(lmenu=document.documentElement.scrollLeft)?lmenu:document.body.scrollLeft;

tmpy=(tpops=="bottom")?wh-tpopt-fioh+dmcst:tpopt+dmcst;
tmpx=(rpops=="right")?ww-rpopt-fiow+dmcsl:rpopt+dmcsl;

fi.top=tmpy+"px";
fi.left=tmpx+"px";
}

document.onmousemove=function(){alignit(1);}
document.onkeydown=function(){alignit(1);}

</script>
Avatar billede mclemens Nybegynder
03. august 2006 - 21:11 #16
eksempel med css med det varierer lige ca. 20px
i IE vs. FF - så FF ikke ser så godt ud som IE...

(FF vil have 17 px margin over til scrollere da FF reserverer plads til den
- det gør IE ikke derfor er matcher den med de 17 px ca. over til scrolleren...
... prøv at sætte en baggrund på div'en med de 17 px margin-right...)



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

<style type='text/css'>
html,body{
padding:0px;
margin:0px;
height:100%;
overflow:hidden;
background:#ff0;
}

#bodyen{
position:relative;
width:100%;
height:100%;
overflow:auto;
background:green;
overflow-x:hidden;
}

#followit{
position:absolute;
bottom:0px;
left:0px;
z-index:99;
height:100px;
width:100%;
}
#followit2{
border:2px solid #000;
background:#aaa;
z-index:99;
height:96px;
margin-right:20px;
}
</style>

</head>
<body><div id='bodyen'><div style="margin-right:17px;"><table border=0 cellpadding=0 cellspacing=0 style="width:100%;margin-bottom:100px;"><tr><td>start<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><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><br><br><br>slut</td></tr></table>
</div></div>

<div id="followit"><div id="followit2">Test</div></div></body>
</html>
Avatar billede mclemens Nybegynder
03. august 2006 - 21:11 #17
Har ikke flere løsningsforslag nu - det var både JS og CSS...
Avatar billede mclemens Nybegynder
03. august 2006 - 21:14 #18
(har dog ingen mac så ved ikke om det kan spise css'en)
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