07. februar 2004 - 19:09Der er
23 kommentarer og 1 løsning
Relative værdier i CSS
Hej Jeg skal til at designe en side uden brug af rammer, og har i den forbindelse valgt at opbygge sitets struktur vha. CSS-teknologien.
Altså: til venstre skal der være en tom udfyldningsplads. I midten skal der være selve indholdet være med en fast bredde, fx 700px. Til højre skal der sidt være endnu en udfyldningsplads.
Det er i sig selv ikke noget problem at lave selve indholdssiden, da den benytter en absolut størrelse. Det andet er lidt et problem: hvordan sættes de til en relativ værdi, så de selv udnytter den resterende plads?
Hvordan kan det være at man ikke kan bruge fx "height: 100%" når man har valgt "position: absolute"? Og hvad kan et. alternativ være?
kunne jeg godt tænke mig en header med en fastsat størrelse og så et andet "div" hvor indholdet kunne være. Indholdet vil jeg gerne have til at tage resten af pladsen (height).
Jeg har prøvet følgende, men får det ikke til at virke helt: #top { background-color:#000000; height: 150px;
jo, men du bliver nok nødt til at skrive det sådan her: <div style="width:700px;margin:0px auto;height:100%"> <div id="indhold"> <div id="top">HEADER</div> INDHOLD </div> </div>
også skal stylen skrives sådan her: <style type="text/css"> BODY,HTML {height:100%;} BODY {margin:0px;padding:0px;} #top { background-color:#000000; height: 150px;
Når jeg sætter en baggrund ind under "indhold" sker der intet: #indhold { background-color:#996666; height: 100%; background-image:url(TopHeader_02.gif); background-attachment: fixed; background-position: left top; background-repeat: no-repeat; } Mærkeligt nok, hvis jeg fjerner "background-repeat" så vises grafikken ganske vist, bare gentaget - hvilket ikke er formålet?
det skyldes at baggrunds-billedet er skjult bag headeren. Du kan bare gøre sådan i stedet: #indhold { background-image:url("logo.png"); background-position: 0px 150px; background-repeat:no-repeat; background-color:#996666; height:100%; }
Den med scrollbaren er dog lidt sværere at få til at virke ordentligt. Umiddelbart kan du løse det på denne måde: <body> <div id="contentDiv"> <div id="top">HEADER</div> <div id="indhold"> INDHOLD </div> </div> </body>
scrollbaren kommer til at være på hele boksen - altså også der hvor headeren er. Håber det er i orden lige nu, da det er den bedste løsning jeg umiddelbart kunne komme på hvis resten samtidig skulle virke :-)
Tak endnu engang. Jeg har prøvet begge modeller - enten med scrollbaren inde i "indhold" og den gamle med scrollbaren i bodyen. Jeg kan egentlig bedst lide den gamle når alt kommer til alt - og nu virker baggrunden også :D
Til jer begge to: Send mig et "svar" og jeg skal give jer jeres point for ulejligheden :D
avj >> Hvis du fortryder kan vi altid løse det. Glad for også at kunne hjælpe dig lidt . Også et meget fint link du kom med - den skal jeg lige se nærmere på ;-)
Hej igen... Ved godt at spørgsmålet egentlig er besvaret, men der er noget der giver en mærkelig virkning, når jeg sætter et baggrundsbillede til at være aller nederst på siden. Baggrundsbilledet skal nemlig vises neder på siden altid; uanset hvor meget "fyld" der er i indholdsruden. Jeg har vedlagt selve html'en og CSS'en. Det er "#bund" der er det nederste baggrunds-div.
hmm, jeg kunne ikke undgå at lægge mærke til at siden ikke centrerer i IE - mærkeligt da margin:0px auto; plejer at virke. Desuden kan der opstå problemmer i mozilla hvis der kommer for meget tekst og der er specificeret en bestemt højde, da teksten blot vil gå ud over kanten i stedet for at forstørre den. Løsningen burde gerne virke i både mozilla og IE (og til dels Opera, hvor der er lidt problemmer med bundens bredde). Jeg har desuden lige slettet den div du centrerede med - du kan ligeså godt bruge din indholdsboks til det:
hov, hvis man sletter den yderste div skal man lige rette noget: BODY > #indhold { /* altså BODY i stedet for DIV */ height:auto; min-height:100%; }
Det overstående er et lille CSS trick hvor man udelukker IE ved at bruge en selector den ikke forstår (i dette tilfælde >). På den måde kan man rette den lille fejl med højden ;-)
TAK endnu engang... Jeg lærer mere og mere! Jeg har fået et mærkeligt problem (dette lover jeg skal blive den sidste i denne tråd!). Jeg har en horisontal menu placeret inden for "top"-divet. Koden ser således ud: ------------- <style media="all" type="text/css"> .menu { position: absolute; top: 146px; background-color:#000000; width: 700px; height: 14px; filter:alpha(opacity=50); } a.hovedmenu { font-family:Arial, Helvetica, sans-serif; color:#FFFFFF; width: 100%; font-size: 12px; font-weight:bold;
} </style>
-------------
Bagefter er der genereret en hel del Javascript-kode (dette er en Dreamweaver-popup-menu). Og derefter mine links.
Inden jeg fik det seneste tip fra dig virkede linksene fint, hvor jeg havde indstillet dem til popup-menuerne skulle komme under dem, når musen blev ført hen over et pågældende link. Efter din seneste kode er dette ikke længere tilfældet - nu vises opopup-menuerne et par hundrede pixels længere til højre fra selve linket. Jeg kan naturligvis sætte det op sådan at popup-menuerne vises med en "x" på -200 og så ser det korrekt ud - dog ikke i Windows 98 (jeg bruger XP).
Har du et forslag?
JEg skal lige sige at ellers "virker" hele siden upåklagelig.
Jeg tror problemmet er at dine dreamwaver menuer bruger en absolut positionering - hvilket de fleste tror betyder en position i forhold til siden. I virkeligheden bliver et element med position:absolute; placeret efter første element det ligger indeni, som selv er blevet positioneret - fx med position:relative; Det du oplever er (hvad jeg tror i hvert fald) at du regner med at menuerne bliver placeret efter siden, men da din #indhold div har propertyen position:relative; bliver dine menuer placeret efter den i stedet. Umiddelbart vil det ødelægge footeren hvis du fjernede position:relative - så i stedet vil jeg anbefale dig at lave dine javascript menuer før (eller efter) du starter på din indholdsdiv. På den måde bliver menuerne placeret efter siden og ikke indholdsdiven.
Jeg ved godt tråden er lukket, men jeg har et problem, jeg håber du vil hjælp mig med, skovenborg...
Jeg har set at ved udskrift vises siden forkert - teksten "går ud over" højre-marginen... Jeg har prøvet at sætte følgende ind bagefter det andet stylesheet: <style type="text/css" media="print"> #indholdtypografi{ margin: 0px; } BODY,HTML { text-align:left; } </style>
hej jeg tror det ville være en god ide hvis du oprettede et nyt spørgsmål. på den måde kommer du ud til mange flere af eksperterne det er jo ikke alle der har været i kontakt med denne tråd, og det kunne jo være at skovenborg er taget på 3ugers ferie :-). derudover kunne det jo være at andre kunne bruge svaret på dit spørgsmål, og det har jo en lidt anden vinkel end relative værdier.
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.