SpookiePower wrote:
> John S. Thomsen wrote:
>
> <snip>
>
>> td {
>> width:100px; /* 1. søjle */
>> }
>> td+td {
>> width:200px; /* 2. søjle */
>> }
>> td+td+td {
>> width:100px; /* 3. søjle */
>> }
>> </style>
>> <table>
>> <tr><td>1<td>januar<td>100
>> <tr><td>2<td>februar<td>100
>> <tr><td>3<td>marts<td>100
>> </table>
>
> Når jeg kopier din kode ind i et html dokument, så virker
> det præcist som jeg gerne vil have det til. Men når jeg
> smider det ind i min asp kode, så går det galt. Men det
> er nok fordi jeg ikke gør det rigtigt.
Måske. Jeg ved det ikke. Jeg bruger ikke asp.
> Men det undre mig lidt hvordan cellerne i tabellen ved hvilken
> bredde de skal have. Jeg kan se du har skrevet td, td+td, ...
> men jeg kan ikke se en fobindelse til cellerne.
Nærmere granskning af CSS 2.1 paragraf 6.4.1 punkt 3 samt paragraf 6.4.3
giver svaret på det.
http://www.w3.org/TR/CSS21/cascade.html#cascading-order
http://www.w3.org/TR/CSS21/cascade.html#specificity
Her har jeg plukket det ud, som er væsentligt i dette tilfælde:
"more specific selectors will override more general ones."
"count the number of element names ... in the selector (= d)"
selektoren td består af 1 element
selektoren td+td består af 2 elementer
....
Når man kigger på et td element i tabellen, så vinder den selektor, som
har flest elementer.
Selektoren td+td+td, som svarer til 3 <td> elementer lige efter
hinanden, matcher 3. søjle, hvilket betyder at den selektor bestemmer
over bredden af 3. søjle.
Selektoren td+td+td matcher ikke 1. og 2. søjle og har derfor intet at
skulle have sagt i disse tilfælde.
Selektoren td+td matcher 2. søjle og 3. søjle, men da 3. søjle bestemmes
af den mere specifikke selektor td+td+td, så får selektoren td+td kun
noget at skulle have sagt over 2. søjle.
Selektoren td matcher alle søjle, men med samme slags argumenter som
ovenover, så bestemmer selektoren td kun over 1. søjle, selv om den også
matcher 2. og 3. søjle.
> En anden ting der undre mig, er at du ikke afslutter en
> celle med </td> og at 100 bare for lov til at "hænge" der
> for enden. Det virker fint, men jeg ville gerne vide hvordan
> det fungere.
Jeg bruger klassisk HTML syntaks, hvor man i visse tilfælde gerne må
undlade en række tags fortrinsvis sluttags.
Det nuværende udkast til en HTML5 specifikation har et sæt regler for
den slags, hvorfra følgende to citater stammer:
Regel 1: "A tr element's end tag may be omitted if the tr element is
immediately followed by another tr element, or if there is no more
content in the parent element."
Regel 2: "A td element's end tag may be omitted if the td element is
immediately followed by a td or th element, or if there is no more
content in the parent element."
<table>
<tr><td>1<td>januar<td>100
<tr><td>2<td>februar<td>100
<tr><td>3<td>marts<td>100
</table>
I denne tabel er der 3 <tr>. De første 2 <tr> efterfølges af endnu et
<tr>, så derfor kan </tr> udelades. Det 3. <tr> efterfølges ikke at
flere elementer i <table>, så derfor kan </tr> også udelades her.
Samme argumentation gør </td> til en frivillighedens sag om man ønsker
at medtage eller ej.
Det gælder selvfølgelig kun i html og ikke xhtml, hvor den slags
undladelser er en dødssynd, men intet tyder på at xhtml overtager nettet
foreløbig. Så sent som i går kom denne melding fra Google:
"Google have no interest in XHTML"
som kan læses på dette link:
http://lists.w3.org/Archives/Public/public-html/2007Nov/0332.html
når man erstatter "We" med "Google" og "the XML serialisation" med XHTML
i dette citat:
"We have no interest in the XML serialisation"