Avatar billede apo Praktikant
10. oktober 2005 - 03:09 Der er 5 kommentarer og
1 løsning

Div skal forblive centreret, selv om der scrolles

Hej :-)

Hvordan får jeg en fast positioneret <div>, til at forblive centreret på skærmen, selv om vinduet scolles?

Jeg har forsøgt med screen.availHeight, men det har ingen effekt.

Apo
Avatar billede olebole Juniormester
10. oktober 2005 - 05:22 #1
<ole>

<!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>TITLE</title>
<style type="text/css">
body, html {
    height: 100%;
    margin: 0;
    padding: 0;
}
#mySlider {
    position: absolute;
    width: 400px;
    height: 300px;
    top: 125px;
    z-index: 100;
    border: 1px solid red;
}
#bodySpacer {
    width: 2000px;
    height: 2000px;
}
</style>
<script type="text/JavaScript">
var oSlider = docElm = scrollEnabled = null;
function currStyle(o, prop) {
    return ((o.currentStyle)? o.currentStyle[prop] : (window.getComputedStyle)? document.defaultView.getComputedStyle(o, null).getPropertyValue(prop) : false);
}
function placeSlider() {
    var y, x = ((docElm.clientWidth-oSlider.offsetWidth)/2);
    y = oSlider.getAttribute("initTop") * 1;
    oSlider.style.left = (docElm.scrollLeft+x) + "px";
    oSlider.style.top = (docElm.scrollTop+y) + "px";
}
window.onload = function() {
    oSlider = document.getElementById("mySlider");
    oSlider.setAttribute("initTop", parseInt(currStyle(oSlider, "top")));
    docElm = document.documentElement;
    placeSlider();
    scrollEnabled = true;
}
window.onscroll = window.onresize = function() {
    if (!scrollEnabled) return;
    placeSlider();
}
</script>
</head>
<body>

<div id="mySlider" class="myClass">hukuu</div>

<div id="bodySpacer">Bare en stor mother af et div til at introducere scrollbars med</div>

</body>
</html>

- men det kræver, du bruger en fuld DTD  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
10. oktober 2005 - 05:28 #2
- en enkelt unødig parentes, der er tilovers fra en allerede slettet 'dirty-typing':

function placeSlider() {
    var y, x = ((docElm.clientWidth-oSlider.offsetWidth)/2);

- kan ligeså godt være:

function placeSlider() {
    var y, x = (docElm.clientWidth-oSlider.offsetWidth)/2;
Avatar billede apo Praktikant
10. oktober 2005 - 17:12 #3
Ah, det var åbenbart lidt mere omfattende end jeg forventede. Jeg skal bruge det sammen med pop-up'en fra spørgsmålet her: http://www.eksperten.dk/spm/654462

Dog har jeg ændret lidt i opsætningen:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="da">
<head>
<title>Pop-up TEST</title>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta http-equiv="Content-Language" content="da">
<meta http-equiv="imagetoolbar" content="no">
<meta http-equiv="imagetoolbar" content="false">
<link rel="shortcut icon" href="/favicon.ico">
<style type="text/css">
html, body {
    margin: 0;
    padding: 0;
    width: 100%;
    height: 100%;
    background-color: #FFFFFF;
}
#centerDiv {
    margin: 0 auto;
    width: 400px;
}
.alertPos {
    /* Topmargenen = Den negative værdi af halvdelen af den samlede højde.
    Venstremargenen = Den negative værdi af    halvdelen af den samlede bredde. */
    margin: -60px 0 0 -100px;
    padding: 0;
    position: absolute;
    left: 50%;
    top: 50%;
    width: 200px;
    height: 120px;
    border: 2px outset threedhighlight;
    z-index: 1000;
    display: none;
    background-color: #E6E6E6;
}
.alertTitel {
    padding: 5px;
    background-color: #828282;
    font-family: verdana, tahoma, sans-serif;
    font-size: 12px;
    font-weight: bold;
    color: #FFFFFF;
}
.alertTekst {
    height: 50px;
    padding: 10px;
    font-family: verdana, tahoma, sans-serif;
    font-size: 11px;
    font-weight: normal;
    color: #000000;
    }
.alertKnap {
    padding: 5px;
    height: 30px;
    text-align: center;
}
</style>
</head>

<body>
<script type="text/JavaScript">
function showPop() {
    var pop = document.getElementById("gnu");
    //pop.style.left = "400px";
    //pop.style.top = "400px";
    pop.style.display = "block";
}
function hidePop() {
    var pop = document.getElementById("gnu");
    pop.style.display = "none";
}
</script>

<div id="gnu" class="alertPos">
    <div class="alertTitel">Besked</div>
    <div class="alertTekst">Dette er alertbeskeden...</div>
    <div class="alertKnap"><button style="width:50px; height:25px;" onclick="hidePop();return false;">Luk</button></div>
</div>

<button onclick="showPop()">Vis</button>

</body>
</html>

Men jeg kan ikke få det smedet sammen, med eksemplet fra tråden her.
Avatar billede apo Praktikant
14. oktober 2005 - 16:42 #4
Har du en idé til hvordan jeg får smedet de to scripts sammen, ole?
Avatar billede apo Praktikant
21. oktober 2005 - 17:49 #5
ole > Har du helt glemt spørgsmålet her? :-(
Avatar billede apo Praktikant
23. oktober 2005 - 18:28 #6
Så lukker jeg her.

// 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