Avatar billede googolplex Novice
02. juli 2003 - 19:33 Der er 14 kommentarer og
1 løsning

Child, Parent element mv.

Jeg sidder og prøver at tygge mig igennem css dokumentationen på www.w3.org. Er der nogen der kender et andet godt link til en god og overskuelig forklaring på begreberne, 'inheritance', 'child element', 'parent', 'ancestor', 'sibling' osv. ?
Avatar billede roenving Novice
02. juli 2003 - 19:53 #1
overchord henviste lige til denne -- har ikke selv checket den ud ...
http://html.dk/tutorials/css/
Avatar billede roenving Novice
02. juli 2003 - 20:52 #2
Tjah, der fik du jo ikke så meget om de begreber, men jeg kan da lige prøve at oversætte ...

Husk css tager udgangspunkt i dom'en, altså document object model og dermed den form for hierarki, som opstår fordi f.eks. en tabel er indeholdt i body, men omkranser tr, som igen omkranser td ...

Som udgangspunkt arves et elements egenskaber (inheritance) altid til et underliggende element -- men der findes special-tilfælde, et godt eksempel er links, som jo altid har haft deres egen egenskabstype på et dokument ...

På den baggrund findes der så child elements og parents og man kan simpelt og effektivt referere til specielle udgaver, f.eks. de div'er som er inde i tabelceller:
td div {style}

Den udvidede model er efterkommer (ancestor), hvor enhver efterkommer uanset om det er børn, børnebørn, oldebørn eller whatever kan angives med:
td * {style}

-- og den specielle udgave er f.eks. alle p-tags, som forekommer inde i tabeller -- uanset om de iøvrigt findes indeni eller udenfor andre tags (divs og spans og sådan):
td * p {style}

Og så er der sibling, hvor det hurtige ord på dansk er søskende, men det skal forstås på den måde, at det bare betyder man er samme antal generationer fra et givet sted

(((-- og altså godt kan være både et vindue og en dør, men man sidder på samme væg og i samme hus, men f.eks. på forskellig etage, så set fra huset eller fra væggen er man siblings men ikke set fra etagen )))

-- og nu kom min umiddelbare css-kendskab til kort, for den kan jeg ik' li'e finde en måde at angive


-- men jeg håber også at du har fået en ide om nytten af dette -- og så er der forøvrigt et herligt eksempel på w3c med benyttelse af denne mulighed, såvidt jeg husker en <em>, som forekommer inde i en h1 ...
Avatar billede roenving Novice
02. juli 2003 - 20:55 #3
-- og jeg glemte lige at angive at mellemrum i angivelserne ovenfor bare betyder ancestor, skal man angive et direkte barn skal man bruge >

-- så nogle af afsnittene ovenfor blev en slags avanceret vrøvl, som skal have dette med !-) for at være rigtige
Avatar billede googolplex Novice
02. juli 2003 - 21:54 #4
Ok, det jeg leder efter er du inde på her:

Husk css tager udgangspunkt i dom'en, altså document object model og dermed den form for hierarki, som opstår fordi f.eks. en tabel er indeholdt i body, men omkranser tr, som igen omkranser td ...

Jeg mangler egentlig 'bare' en oversigt over hvad der arver fra hvad ? Hvis jeg eksempelvis har:

<html>
<body>
  <table>
  <tr>
    <td>
    </td>
  </tr>
  </table>
</body>
</html>

Er det så altid sådan at td arver fra tr, tr fra table, table fra body ?

Hvordan forholder det sig med divs, spans osv.

Hvad hvis jeg har en masse divs:

<body>
<div class="class1">
<div class="class2">
<div class="class3">
</div>
</div>
</div>
</body>

Arver class3 så fra class2, altså den omkringliggende div - eller fra Body ?

Grunden til at jeg spørger er, at elementerne i mine stylesheets ikke altid (læses: stort set aldrig :P) arver som jeg forventer det og så ender mine sheets som en værre gang rod fordi jeg prøver at redde mig ud af situationen :(
Avatar billede roenving Novice
02. juli 2003 - 22:13 #5
Du skal være enormt opmærksom på krydsende properties, og at der findes noget, som det ikke er særlig relevant at arve

-- et godt eksempel på det kunne være noget background, som man ikke sjældent angiver med background: -- altså samle-propertien, så bliver det svært at styre enkelt-egenskaber også ...

og du skal være opmærksom på opførsel af forskellige egenskaber -- for selvom en text-input gladeligt tager en baggrund vil den jo ikke arve den fra et element oven over den i hierarkiet -- den er jo ikke baggrund i forhold til en td, den ligger inde i ...

Når det er sagt, så kunne et hurtigt gæt på en ofte set fejl være at en _senere_ forekommende style-definition *også* matcher og derfor overtager ...

Man kan sige at css læser bagfra indtil den finder en match og så stopper, når den skal style et element

-- og her har vi fat i source-kode-orden -- et eksternt stylesheet vil oftest komme før et internt style-sheet, og en lokalt angivet property vil override alt andet ...

-- mere rigtigt end at sige, at der læses bagfra er, at der læses forfra og så opbygges et bibliotek over de styles, som skal bruges, men det er så klart at biblioteket ikke kan være færdigt, før bunden er nået, og så er der sikkert blevet hevet en bog eller flere ud og erstattet med nogle andre ...

Et lille eksempel (jeg kunne ikke lige finde det jeg havde fat i igår, som også illustrerede):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>Eksemple på style</TITLE>
<META NAME="Generator" CONTENT="Stone's WebWriter 3.5">
<STYLE TYPE="text/css">
a {color: #ff0000;
text-decoration:none;
font-weight:bold;
}
.andetLink a{
color: #0000ff;
text-decoration:underline;
font-weight:bolder;
}
.tredjeLink a{
font-family:arial;
color: #0077ff;
text-decoration:overline;
font-weight:100;
}
</STYLE>
</HEAD>
<BODY>
<A HREF="#">Et link med standard-style</A>
<TABLE CLASS="andetLink">
<TR><TD><A HREF="#">Et link med andetLink-style</A><BR></TD></TR>
<TR class="tredjeLink"><TD><BR><A HREF="#">Et link med tredjeLink-style</A><BR></TD></TR>
<TR><TD><A HREF="#">Et link med andetLink-style</A><BR></TD></TR>
</TABLE>
<TABLE>
<TR><TD><BR><A HREF="#">Et link med standard-style</A></TD></TR>
</TABLE>
</BODY>
</HTML>
Avatar billede roenving Novice
02. juli 2003 - 22:23 #6
-- Hov ...

læse fremad og bagud -- når vi snakker om styles direkte på tags læses de i DOM-orden, det er kun style-tags og eksterne stylesheets, som læses i source-kode-orden ...

-- en nem illustration ville med det ovennævnte være at sætte et ekstra link ind sammen med et af de andre, og lave en anden tekstfarve

-- og bemærk jeg har brugt inheritance for styre links opførsel i det ovennævnte
Avatar billede roenving Novice
02. juli 2003 - 22:26 #7
Og så lidt yderligere illustration, på hvilken rækkefølge, der læses i:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>Eksemple på style</TITLE>
<META NAME="Generator" CONTENT="Stone's WebWriter 3.5">
<STYLE TYPE="text/css">
a {color: #ff0000;
text-decoration:none;
font-weight:bold;
}
.andetLink a, a.andetLink{
color: #0000ff;
text-decoration:underline;
font-weight:bolder;
}
.tredjeLink a{
font-family:arial;
color: #0077ff;
text-decoration:overline;
font-weight:100;
}
</STYLE>
</HEAD>

<BODY>
<A HREF="#">Et link med standard-style</A>
<TABLE CLASS="andetLink">
<TR><TD><A HREF="#">Et link med andetLink-style</A><BR></TD></TR>
<TR class="tredjeLink"><TD><BR><A HREF="#" class="andetLink">Et link med tredjeLink-style men andenlink-class</A><br><A HREF="#">Et link med tredjeLink-style</A><BR></TD></TR>
<TR><TD><A HREF="#">Et link med andetLink-style</A><BR></TD></TR>
</TABLE>
<TABLE>
<TR><TD><BR><A HREF="#">Et link med standard-style</A><br><A HREF="#" STYLE="color:green">Et link med standard-style men lokal farve</A></TD></TR>
</TABLE>
</BODY>

</HTML>
Nu har vi lige pludseligt et andetLink, som bruger tredjeLink-properties -- der er match for begge to, så tredjeLink-class bruges
Avatar billede roenving Novice
02. juli 2003 - 22:28 #8
-- håber ikke du blev mere perpleks *g*
Avatar billede googolplex Novice
02. juli 2003 - 23:42 #9
Det gjorde jeg :P Nej, det meste gav mening :)

Men kan du give mig et svar på de eksempler jeg kom med ? Bare

Denne sætning:

'når vi snakker om styles direkte på tags læses de i DOM-orden, det er kun style-tags og eksterne stylesheets, som læses i source-kode-orden'

Hvad er DOM orden ?
Source-kode-orden, er det bare den måde koden er nested på ?

Husk at smid et svar :)
Avatar billede googolplex Novice
03. juli 2003 - 00:08 #10
Forresten, fandt selv dette link, det virker up to date, måske du også kan bruge det :P

http://www.westciv.com.au/style_master/academy/css_tutorial/
Avatar billede =maddog= Nybegynder
03. juli 2003 - 07:45 #11
Doc Javascript har en tutorial i DOM
http://www.webreference.com/js/column40/
bare forsæt hele vejen til column 45. Det skulle vel egentlig også berøre childs, parents, orphans, inheritance, siblings og alt det andet terminologiske vedrørende dokument strukturen, hvis jeg ikke husker meget galt.
Avatar billede roenving Novice
03. juli 2003 - 15:53 #12
DOM-orden er hierarki-træet, som vi tidligere i tråden havde fat i ...

Source-kode-orden gælder -- skal jeg vist lige understrege -- kun for style-definitionerne (altså class m.v.) ...

Som du kan se på det sidste eksempel har en af de indre td'er faktisk tre match for style -- de kan faktisk arrangeres på flere måder:

-- Source-kode-orden (i stylesheets m.m.): standard (som jo vil gælde for alle links), andetLink og tredjeLink

-- DOM-kode-orden (indefra og ud): andetLink, tredjeLink, standard ...

-- men som det fremgår sættes stylen efter den sidst forekommende style-definition og altså _ikke_ efter den class, som jo egentlig er sat lokalt direkte på tagget ...

-- der er en hel del flere permutationer, som jeg lige sad og tænkte på ...

-- men skal vi ik' si'e du har fået nok for din 25-øre i denne omgang ,-)
Avatar billede googolplex Novice
03. juli 2003 - 16:25 #13
Jo roenving, men du glemte jo noget... Her er et anagram, så kan du tygge på den:

Anagram: VARS ;)
Avatar billede roenving Novice
03. juli 2003 - 18:19 #14
Hvor mange vil du have (altså vars)
'-)
Avatar billede roenving Novice
03. juli 2003 - 19:40 #15
-- og tak for points ;~}

-- det var zq ellers meget godt for indsigten at skulle prøve at forklare *gg*
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