Drop tables til design, og få fuld udbytte af CSS! |
Historie
Fordi vi benytter XHTML skal vi starte med at fortælle browseren at dette er XML (som XHTML jo kommer af). Samtidig fortæller vi at det er XHTML version 1.1, dansk sprog, hvilke tegn der er bruges osv. Informationen er for så vidt ligegyldig for personen der skal se siden, men nødvendig for at browseren kan vise siden ordentligt! Desuden fortæller vi at vi gerne vil bruge vores stylesheet, default.css, og at det kun kan bruges i forbindelse med fremvisning på en skærm, eller en projekter. Resten af dokumentet er helt analogt. Vi har et banner, en menu, bestående af punkter og noget indhold (content). Alt samme inddelt i div-tags. Hvis vi så siden i en browser nu, ville den se ualmindelig kedelig ud. Derfor skal vi nu igang med CSS'en... Under default-mappen skal du oprette en fil med navnet basic.css. Åbn også den og skriv følgende: body { Hvis vi så resultatet i browseren nu, ville der ikke komme noget som helst, da vi jo refererer til default.css i samme mappe som index.html ligger i. Det gør vi noget ved. Åbn default.css og skriv: @charset "ISO-8859-1";@import "default/basic.css"; Tadaaa... Resultatet ses med det samme, men hvad skete der lige?? Først fortalte vi hvilken type bogstaver der findes i dokumentet, @charset "ISO-8859-1", hvilket ikke giver noget synligt resultat. Men @import "default/basic.css" til gengæld: En smart ting ved CSS, er at man kan importere andre CSS-dokumenter. På den måde kan du let holde tingene adskilt, eller f.eks. importere standard indstillinger, hvis du udvikler til et stort firma som har nogle standarder for hvordan deres overskrifter, links osv., skal se ud. Lad os straks oprette endnu et CSS-dokument under default-mappen, banner.css. Vi kan ligeså godt smide den ind i default.css med det samme, så der nu står:
Åbn den, og lad os få placeret banneret. Vi starter med følgende: #banner { Nu bliver det interessant!! Vi tager det en linie ad gangen: 1. #banner { #-tegnet fortæller at der refereres til noget med en id-attribut i HTML'en. I dette tilfælde, objektet med id'et "banner" (det samme id må kun være at finde en gang på hver side, alternativt må man bruge class). 2. position: absolute; Position fortæller hvordan elementet skal positioneres. static ignorerer positioneringen (standard). relative sætter objektet i forhold til hvor det står. absolute sætter det præcist på pladsen, afhængig af afstanden fra kanterne. Og til sidst fixed som holder objektet fast på stedet, også når der scrolles (understøttes ikke af Internet Explorer). 3. left: 0px; Sætter objektets venstre kant 0 pixels i forhold til venstre kant af indholdssiden. 4. top: 0px; Sætter objektets top kant 0 pixels i forhold til toppen af indholdssiden. Resten burde være til at gennemskue. Se resultatet i din browser. Hmmm... Det er næsten godt nok, men teksten kunne måske godt sættes lidt mere præcist. Tilføj dette til banner.css: #banner h1 { Vi tager det endnu en gang, linie for linie: 1. #banner h1 { Nu sætter vi egenskaber for alle de h1-tags der findes inde i #banner-id'et. Dette er intet mindre end genialt, da vi på den måde ikke behøver at give hver h1 en klasse eller et id, men blot kan referere til #banner-id'et, og finde alle h1-tags derfra! 2. padding: 6px 0px 6px 10px; At opstille tingene på denne måde kaldes for "shorthand-properties". I stedet kunne vi have skrevet padding-top: 6px; padding-right: 0px; osv., men dette er hurtigere. Tallenes rækkefølge er: top, right, bottom, left. Altså start fra top, og så med uret rundt. 3. margin: 0px; Igen en shorthand-property. I stedet for at fortælle hver eneste margin hvor lang den skal være, sætter vi dem alle sammen til 0px. Vi kunne også have skrevet margin: 0px 0px 0px 0px;, men dette er betydelig nemmere. Næste trin er menu'en... Tilføj: @import "default/menu.css"; til default.css, og opret filen menu.css i default-mappen. Lad os starte med at placere den: #menu { Her er tingene helt gennemskuelige! Hvis du undrer dig over måden background-color er skrevet på, så kan du læse mere på http://www.eksperten.dk/artikler/80. Det næste vi skal, er at fjerne margin og padding fra ul-tag'et. En "Unordered List" (ul) indeholder som standard lidt margin, og lidt padding (desværre lidt afhængig af browseren). I menu.css skriver vi derfor: #menu ul { margin: 0px; padding: 0px;}Hvis du har fulgt med, burde ovenstående ikke blive forklaret nærmere. Hvad med vores h2-tag? Vi har efterladt noget tekst hvor i der står "Dette er hoved-menu'en", men egentlig har vi ikke brug for det!! Det er lavet så andre design-udviklere måske kunne gøre brug af det!! ;) #menu h2 { Så forsvandt det også!! Læg mærke til at der i HTML'en er skrevet <h2><span>Dette er hoved-menu'en</span></h2>. Det gør vi fordi hvis nu nogen skulle have lyst til at smide et billede ind over vores menu, så kunne han/hun bare sætte span-tag'et til display: none;, og så sætte h2's background-image egenskab til noget! Der gives et eksempel på det senere! ;) Nu begynder vores side så småt at ligne noget... Dog skal den gøres meget pænere!! Vi smider også lige dette ind: #menu a { Vi referer til alle a-tags under #menu-id'et, fjerner understregningen, sætter tekst-farven til sort, bruger en gennemsigtig baggrundsfarve, så farven fra menu-id'et træder i gennem, sætter en fast bredde og siger at tag'et skal vises som en blok. Sidst nævnte er vigtigt, da vi på den måde fortæller browseren at dette ikke bare er et element som skal fylde bredden/højden af sig selv, men at vi er med til at bestemme hvor stort elementet skal se ud. Så skal vi ha' tingene til at se lidt smartere ud! #menu a:hover { Vi referer igen til alle a-elementer under menu-id'et, men denne gang sætter vi kun egenskaberne for det når det er :hover-aktivt. Mange tror godt nok at det kun er links der kan bruges hover på, men dette er ikke tilfældet! Måske skyldes det at det er endnu en funktion som Internet Explorer ikke understøtter, på andet end links! ;) På links kan der kun bruges :link og :visited. Mens der på resten også kan bruges :active, :hover og :focus. Vi går straks videre. Et par af de links vi har liggende er eksterne links, her angivet med klasse-navnet external. Dem ønsker vi at fremvise anderledes: #menu a.external:hover { Vi vælger menu-id'et, finder alle a-tags som en external-klasse og vælger kun hover-attributten. Av, vi er ved at være langt nede!! ;) Nu ser det pludselig anderledes ud! Det sidste vi skal have fat i er content-id'et. Smid @import "default/content.css"; Ind under default.css, og lad os så komme i gang: #content { Du burde kende det meste, right-egenskaben er dog ny. Denne sætter afstanden fra højre side af objektet til højre browser-kant (Internet Explorer er desværre lidt ringe til at finde ud af det. Det samme gælder bottom-egenskaben). En anden ny er overflow. Overflow fortæller hvordan tingene skal gemmes af vejen. Denne kan være: visible [standard, viser hele elementet]hidden [gemmer ting som ikke kunne være inde i boksen]scroll [laver scroll-bars lodret og vandret]auto [laver sroll-bars, hvis der er brug for det]inherit [arver egenskaben fra tidligere] Den næste er border-egenskaben. Igen en shorthand-egenskab som er sat til border-width: 1px;, border-style: solid; og border-color: black;. Hvis vi havde en masse underelementer, kunne vi nemt formatere disse også, men der til burde du nu selv have viden nok til at fortsætte. Som jeg lovede tidligere, skulle vi lave <h2><span>Dette er hoved-menu'en</span></h2>-tricket. Det kommer her: Åbn banner.css og tilføj først: #banner span { display: none;} Så forsvandt teksten først! Det næste vi skal er at ændre: #banner h1 { til #banner h1 { Vi tager det lige lidt ad gangen: 4. background-image: url("http://hermandsen.homepage.dk/exp/droptables/default/img/banner.png"); Vi referer til et billede som skal ligge i under h1-tag'et. Man referer til billedet ligesom ved normal HTML som f.eks. foobar. 5. height: 38px; Hvorfor 38px? Fordi banner-id'et er 50px, og vi i toppen og bunden af h1-tag'et har padding sat til 6px! 50px - 6px - 6px = 38px. Height og width-egenskaberne sætter højde og bredde på indholdet, uden padding, border og margin! Forklar det til Internet Explorer's box-model! 6. background-repeat: no-repeat; Når man sætter background-image, er standard for hvordan det skal genskabe sig: repeat. De andre egenskaber hedder: repeat-x, repeat-y og no-repeat, hvilket af navn, burde være til at gennemskue. Øvrige bemærkninger Læg lige mærke til hvor mange tables der er brugt! ;) Efter denne artikel, kunne du måske fristes til at tro at jeg ikke bryder mig meget om Internet Explorer. Jamen, hvor har du ret!! Jeg hader programmer som er fulde af fejl, ikke følger standarden og crasher i tide og utide!! Ville du ikke gøre det!? Alt HTML og CSS kan du finde på http://hermandsen.homepage.dk/exp/droptables/. Find evt. selv mere inspiration/information på http://www.csszengarden.com/ . //hermandsen |
Skrevet af: Jesper Hermansen | Dato : 2004-04-05 15:1 | Læst : 11285 gange