Avatar billede foxmulder58 Praktikant
26. november 2005 - 22:22 Der er 14 kommentarer og
1 løsning

Forklaring på CSS

Hej Eksperter,

er der en der kan hjælpe mig med at beskrive hvad disse CSS informationer gør:


.bodywrap {
    background-color: transparent;
    position: relative;
    width: 650px;
    left: auto;
    top: 0px;
    right: auto;
    bottom: 0px;
    margin: 0px auto;





mvh
Mads
Avatar billede apo Praktikant
26. november 2005 - 22:30 #1
background-color: transparent; - Sætter baggrunden til gennemsigtig.
position: relative; - Angiver at elementet har en relativ position.
width: 650px; - bredden af elementet er 650px.
left: auto; - ?
top: 0px; - Elementet er positioneret 0 pixels fra toppen.
right: auto; - ?
bottom: 0px; - Elementet er positioneret 0 pixels fra bunden.
margin: 0px auto - Centrerer elementet i midten af et dokument (Kræver at elementets bredde er defineret).

Sådan cirka :-)
Avatar billede johan.o Nybegynder
26. november 2005 - 23:41 #2
Og..

margin: 0px auto;

Når to værdier er defineret, som her, så er den første top og bund margin og den anden er højre og venstre margin. Så top og bund er 0px. Højre og venstre sættes til identiske værdier når der skrives auto, og hvis du så samtidig definerer bredde på det element du sætter margin på (altså style="width: 100px; margin: 0px auto;") så vil auto gøre højre og venstre margin så store som muligt og derved centrerer elementet i forhold til det omkransende element.

F.eks.:

<body>
<div style="width: 800px; margin: 0px auto;"> --> centrerer denne div i forhold til <body>
<table style="width: 400px; margin: 0px auto;"> --> centrerer denne tabel i forhold til ovenstående div
</table>
</div>
</body>

Mvh. Johan
<
Avatar billede foxmulder58 Praktikant
26. november 2005 - 23:43 #3
apo + johan 0. >> smid et svar begget 2 hvis jeg gerne vil have uddybet spørger jeg bare lige her i denne tråd hvis det er ok med jer!.


mvh
Mads
Avatar billede apo Praktikant
26. november 2005 - 23:53 #4
Helt i orden :-)

I øvrigt: Når værdien i en CSS-regel er '0' (F.eks. margin:0px; - top:0px; - osv), behøver du ikke at angive enheden (Enhed = px, pt, em, % osv) på værdien - Du kan altså nøjes med at skrive: margin:0; - top:0; - osv.

Dette gælder _kun_ for værdien '0'. Lige så snart, værdien er f.eks. 1 _skal_ der angives enhed, f.eks.: margin:1px;

Det betyder ikke det store, men man sparer lidt tid og plads :-)
Avatar billede johan.o Nybegynder
27. november 2005 - 00:12 #5
position: relative;

Position har vist 4 mulige værdier. (static; relative; absolute; fixed;)

Default er static, som positionerer elementet i forhold til document flow uden nogen form for beregninger.

Relative er næsten identisk med static, bortset fra 2 vigtige forskelle :
1.: Elementets position er beregnet i forhold til document flow. Det betyder i teorien at det øverste venstre hjørne indeholder en form for anker.
2.: Elementet kan placeres offset i forhold til document flow. Ved at definerer top og left properties på elementet kan man flytte det i forhold til document flow. F.eks. style="position: relative; top: 10px; left: 10px;" så beregnes øverste venstre hjørne af elementet (anker) og derefter placeres elementet 10px til højre og 10px ned i forhold til ankeret.
Hvis man 'offset'er et relative placeret element så fylder det i document flow som om man IKKE havde lavet offset. Så hvis man laver left: 10px; så er der 10px 'luft' til venstre fpr elementet og til højre overlapper elementet efterfølgende elementer med 10px;

Absolute tager elementet ud af document flow og placerer det 'ovenpå' andet indhold. Elementet placeres med top og left.

Eksempel der viser lidt om ovennævnte muligheder :

<div> --> placeres i document flow uden nogen beregning.

<div style="position: relative; left: 10px; top: 10px;"> --> elementets position beregnes og flyttes 10px til højre og 10px ned. Elementet fylder i document flow som om det IKKE var placeret offset.

<div style="position: absolute; left: 10px; top: 10px;"> --> elementets position beregnes og tages ud af document flow.

Prøv selv at 'lege' med forskellige eksempler. F.eks. prøv at ligge mærke til forskellen på disse to :

<body>
<div style="width: 200px; height: 200px; margin: 0px auto; border: 1px solid red;">
<div style="position: absolute; left: 10px; top: 10px; border: 1px solid red;">Test</div>
</div>
<div style="position: relative; width: 200px; height: 200px; margin: 0px auto; border: 1px solid red;">
<div style="position: absolute; left: 10px; top: 10px; border: 1px solid red;">Test2</div>
</div>

Fixed placerer et element lige som absolute MEN altid i forhold til øverste venstre hjørne af dit browser vindue, derfor vil et fixed element ikke scrolle !

Mvh. Johan
Avatar billede johan.o Nybegynder
27. november 2005 - 00:41 #6
left: auto; -->

Av, det var en af de svære :)

auto er faktisk den 'værdi' f.eks. left, top, right og bottom gives hvis ingen anden værdi er defineret altså default value. Der er såvidt jeg kan forstå fra w3.org ikke præcis defineret hvordan en 'browser' skal positionerer i forhold til denne værdi, men 'auto' indikerer at browseren selv skal beregne en værdi i forhold til den sammenhæng elementet indgår i. F.eks. beregnes et elements bredde (width) nogenlunde således :

left + margin-left + border-left-width + padding-left + width + padding-right + border-right-width + margin-right + right

Hvis alle værdier er defineret med f.eks. 10px undtagen left som er sat til auto, så beregner 'browseren' selv hvad left skal være for at opfylde de andre værdier. I dette tilfælde er right jo så sat til 10px, det betyder at elementets højre kant placeres 10px til venstre for det omkransende elements højre kant. Hvis dette omkransende element er 200px bredt så regner 'browseren' selv ud hvad left skal være for at det hele passer sammen. Forestil dig for eksempel at ALLE værdierne er sat til 10px så fylder elementet altså 9 * 10px = 90px. Så det kan du ikke placerer i en 200px bred container. Nu er det jo MEGET sjældent at vi definere alle de ovenstående værdier og det er så der auto kommer ind og hjælper med til at de værdier vi har defineret bliver overholdt. Man kan vel populært sige at auto fylder hullerne ud for os :)

Mvh. Johan
Avatar billede johan.o Nybegynder
27. november 2005 - 01:04 #7
Jeg ved dette link er på engelsk men det indeholder super god information om emnet :

http://www.w3.org/TR/REC-CSS2/visuren.html

Og naturligvis så spørger du bare her hvis der er noget du vil have uddybet, som også apo siger.

Forresten med hensyn til apo's bemærkning om 0 og 0px, så er det naturligvis korrekt hvad 'han' siger. Dog syntes jeg altid det er en god ide at undlade disse 'specielle' ting. Der er mange eksempler bl.a. brugen af ; i style="", der er det ikke nødvendigt at sætte det sidste ; -->

style="position: relative; width: 100px" er korrekt og dette -->
style="position: relative; width: 100px;" er også korrekt.

Det virker måske lidt som fluek... men det er vist en general betragtning hos mange at hvis man altid sætter disse tegn og endelser så løber man ind i færre fejl, men den erfaring gør du dig jo sikkert selv.

Det er forresten også aktuelt i forbindelse med brugen af ' til omkransning af....øh ja nu kommer jeg til kort med hensyn til navne på forskellige elementer...men se her :

...ja okay det er måske mere aktuelt i PHP programmering ?...:)..men

mysql_query("SELECT * FROM db WHERE id=$_POST[id]")

det er vist en iorden syntaks men den er meget farlig, forestil dig f.eks. $_POST[id]="21 DROP db" ... ARGh farvel database ..havde jeg nu bare ALTID brugt ' til omkransning af 'værdier' -->

mysql_query("SELECT * FROM db WHERE id='$_POST['id']'") så er jeg bedre sikret. Der er mange flere ting man skal sikre sin database med, men nu ville jeg jo også bare prøve at forklarer hvorfor man ikke skal undlade px på 0 værdier :)))) ha ha..nej nej nu må jeg vist hellere gå i seng :)

Mvh. Johan
Avatar billede johan.o Nybegynder
27. november 2005 - 01:55 #8
Med hensyn til auto, så er den kun valid på left og right i ovenstående eksempel, du kan f.eks. ikke skrive :

.test {
width: 10px;
left: 10px;
right: 10px;
margin-left: 10px;
margin-right: 10px;
padding-left: 10px;
padding-right: 10px;
border-left: 10px;
border-right: auto;
}

og så forvente at den selv sætter border-right til det der nu mangler. Men i dette eksempel virker det fint :

.test {
width: 10px;
left: auto;
right: 10px;
margin-left: 10px;
margin-right: 10px;
padding-left: 10px;
padding-right: 10px;
border-left: 10px;
border-right: 10px;
}

der flyttes det element som denne style sættes på mod højre. :)

Godnat.....og min hustru vender sig nu rundt fra sin dybe søvn på sofaen og siger 'hvad laver jeg her ???' tsk tsk gå dog i seng :) - Godnat

Mvh. Johan
Avatar billede foxmulder58 Praktikant
27. november 2005 - 17:33 #9
tusind tak,

Smider i et svar?

mvh
mads
Avatar billede johan.o Nybegynder
27. november 2005 - 19:12 #10
Jamen naturligvis :)

Mvh. Johan
Avatar billede foxmulder58 Praktikant
28. november 2005 - 09:04 #11
apo >> smider du også svar?
Avatar billede apo Praktikant
28. november 2005 - 16:57 #12
fox > johan.o er kommet med nogle meget detaljerede forklaringer, så jeg synes at pointene skal gå til ham :-)
Avatar billede foxmulder58 Praktikant
28. november 2005 - 17:56 #13
apo > Ok meget respektfuldt af dig.

Så takker jeg dig for dit svar!

mvh
Mads
Avatar billede apo Praktikant
28. november 2005 - 18:12 #14
Velbekomme :-)
Avatar billede johan.o Nybegynder
28. november 2005 - 18:32 #15
Tak for points :)
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