Avatar billede cargo_online Nybegynder
03. februar 2010 - 11:31 Der er 8 kommentarer

Baggrund Fullscreen

Hej
Mine evne i CSS er begrænset, derfor har et problem, som håber nogen kan hjælpe mig med.

Hvordan i CSS (kun css) gør jeg sådan at har en fullscreen baggrund af et billede, med disse kriterier:

1. Fullscreen billede
2. Ingen Horisontale scrolling på baggrunden, den forbliver, selvom man scroller på sidens indhold.
3. Skalere efter browser vinduets størrelse, så det ser normalt uden lige meget hvilken opløsningen bruger benytter.

Håber nogen har et svar, dog ingen links, da vil gerne have det forklaret, derfor alle de point.

Cargo.
Avatar billede showsource Seniormester
03. februar 2010 - 11:44 #1
1. Det kan du ikke
2. background-attachment: fixed;
3. Det kan du ikke

Til 1 og 3:
Hvis nu ALLE brugte som skærmopløsning, var der lidt chance for at du kunne.
Men hvad nu hvis jeg minimerer mit vindue ?
Eller gør det større ?
Avatar billede cargo_online Nybegynder
03. februar 2010 - 11:57 #2
Okay, så det skal laves uden om css? Nogen forslag til det?
Avatar billede showsource Seniormester
03. februar 2010 - 12:26 #3
Det eneste der nok vil virke 100% er hvis du laver siden i flash, som skal vises i fullscreen.

Hvis jeg ændrer browser str. blot nogle px, skal du jo igen til at finde x og y for vinduet.
Og du skal så placere dit billede i en underliggende div, hvor width og height passer til.
D.v.s. alt andet indhold skal ligge ovenpå den div.

Mit råd er at du glememr din oprindelige tanke, og i stedet laver et design som ikke skal ta' højde for browser str. eller brugerens tekststr.
Avatar billede cargo_online Nybegynder
03. februar 2010 - 13:27 #4
Okay, surt.. Men du har ret.
Avatar billede lolman Nybegynder
04. februar 2010 - 04:51 #5
.. ahh.. jeg er sikker på at man kan lave noget i javascript...


noget med divs i flere lag med image i nederste og så resize alt efter browser størrelse .... hmmm... dette er noget som kun er TESTET I FIREFOX måske det også vil virke i ie6,7,8?


<!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>Untitled Document</title>
<style type="text/css">
body {margin:0;overflow:hidden;}
#body_bg {position:absolute;top:0;left:0;}
#new_body {position:absolute;top:0;left:0;width:100%;height:100%;overflow:auto;}
</style>
<script type="text/javascript">
window.onload=function(){
    document.getElementById("body_bg_img").setAttribute("we",document.getElementById("body_bg_img").offsetWidth);
    document.getElementById("body_bg_img").setAttribute("he",document.getElementById("body_bg_img").offsetHeight);
    makeSureResize = false;
    resize_bg();
}
window.onresize=function(){
    if(makeSureResize) clearInterval(makeSureResize);
    makeSureResize=setInterval("resize_bg()",100);
}
function resize_bg() {
    element = document.getElementById("body_bg_img");
    if (document.all) {
        bw = document.body.clientWidth;
        bh = document.body.clientHeight;               
    } else {
        bw = window.innerWidth;
        bh = window.innerHeight;           
    }
    bwh = bw/bh;
    iw = element.getAttribute("we");
    ih = element.getAttribute("he");
    iwh = iw/ih;
    if (bwh>iwh) {
        element.width=bw;
        element.height=element.getAttribute("he")*(bw/iw);
    } else {
        element.width=element.getAttribute("we")*(bh/ih);
        element.height=bh;
    }
    document.getElementById("body_bg").style.left=0-(element.offsetWidth-bw)/2+"px";
    document.getElementById("body_bg").style.top=0-(element.offsetHeight-bh)/2+"px";
}
</script>
</head>
<body>
<div id="body_bg"><img id="body_bg_img" alt="" src="bg.jpg" /></div>
<div id="new_body">bodys indhold!!</div>
</body>
</html>


inspirererende ikk... ??
Avatar billede lolman Nybegynder
04. februar 2010 - 04:54 #6
noget du skal være opmærksom på er-hvis billedet kan blive strukket ud til dobbelt størrelse og derfor vi 2 x 2px
Avatar billede lolman Nybegynder
05. februar 2010 - 14:54 #7
okay det der først sker er at vi laver et par div bokse .. #body_bg og #new_body.

#body_bg indeholder baggrundsbilledet som et faktisk billede og ikke som baggrundsbillede.
#new_body kommer til at indeholde alt det indhold du eller bare ville have lagt lige efter body.

--- body
<div id="body_bg"><img id="body_bg_img" alt="" src="bg.jpg" /></div>
<div id="new_body">bodys indhold!!</div>
--- /body

Med stylen placerer vi vores 2 div-bokse i det top-venstre  hjørne af skærmen.
#new_body bliver gjort 100% høj og 100% bred og får tilføjet scroll - overflow:auto;
body får fjernet sin scroll - overflow:hidden;

--- style
body {margin:0;overflow:hidden;}
#body_bg {position:absolute;top:0;left:0;}
#new_body {position:absolute;top:0;left:0;width:100%;height:100%;overflow:auto;}
--- /style

Nu bar vi det sådan set bare som et normalt baggrunsbillede i top venstre hjørne.

Det der sker i JS er at vi justerer billedets bredte og højde alt efter hvor stort browservinduet er, det gøres med funktionen resize_bg() - læs mere inde i koden.
window.onload -  starter når siden bliver hentet - Sætter to attributter we og he i vores billede. we="[BILLEDETS BREDTE i 1:1]" og he="[BILLEDETS HØJDE i 1:1]".
Der efter starter vi også resize_bg();
Nede i window.onresize - køres hver gang browseren resizes - starter vi også resize_bg().

Kig ved function resize_bg();


--- JS
window.onload=function(){
    document.getElementById("body_bg_img").setAttribute("we",document.getElementById("body_bg_img").offsetWidth);
    document.getElementById("body_bg_img").setAttribute("he",document.getElementById("body_bg_img").offsetHeight);
    makeSureResize = false;
    resize_bg();
}
window.onresize=function(){
    if(makeSureResize) clearInterval(makeSureResize);
    makeSureResize=setInterval("resize_bg()",100);
}
function resize_bg() {
    // FØRST FINDER VI VORES BILLEDE
    element = document.getElementById("body_bg_img");
    // SÅ FINDER VI BROWSERENS HØJDE OG BREDTE
    if (document.all) {
        bw = document.body.clientWidth;
        bh = document.body.clientHeight;             
    } else {
        bw = window.innerWidth;
        bh = window.innerHeight;         
    }
    // FINDER BILLEDETS HØJDE OG BREDTE I 1:1 UD FRA VORES TIDLIGERE ATTRIBUTTER we OG he
    iw = element.getAttribute("we");
    ih = element.getAttribute("he");
    // HER DESINERER VI FORHOLDET MELLEM BILLEDETs OG BROWSERENs HØJDE OG BREDTE
    bwh = bw/bh;
    iwh = iw/ih;
    // NU SKER DER DET AT VI FINDER UD AF OM BILLEDET SKAL SKALERES TIL AT PASSE I HØJDEN ELLER BREDTEN SÅ VI UNDGÅR NOGET HVIDT PÅ SKÆRMEN
    if (bwh>iwh) { // BREDTEN SKAL PASSE OG HØJDEN GÅR LIDT UD OVER.
        element.width=bw; // BREDTE
        element.height=element.getAttribute("he")*(bw/iw); // HØJDE. udregning HØJDE1:1*(BROWSER BREDTE/BILLEDE BREDTE);
    } else { // HØJDEN SKAL PASSE OG BREDTEN GÅR LIDT UD OVER.
        element.width=element.getAttribute("we")*(bh/ih); // BREDTE
        element.height=bh; // HØJDE
    }
    // TILSIDST RYKKER VI BILLEDET TILSVARERENDE OP OG TIL VENSTRE SÅ DET CENTRERES:
    document.getElementById("body_bg").style.left=0-(element.offsetWidth-bw)/2+"px";// udregning: (BILLEDE ny bredte)-(BROWSER BREDTE)/2
    document.getElementById("body_bg").style.top=0-(element.offsetHeight-bh)/2+"px";// udregning: (BILLEDE ny højde)-(BROWSER HØJDE)/2
}
--- / JS
Avatar billede cargo_online Nybegynder
09. februar 2010 - 10:39 #8
Hej, jeg prøver lige det der. Tak, vender tilbage.
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