tabel van html naar css omzetten + kleuren toevoegen.

Status
Niet open voor verdere reacties.

djeric

Gebruiker
Lid geworden
22 nov 2006
Berichten
955
hallo.

ik heb nu een tabel gemaakt voor: deze pagina

en heb de volgende html code gebruikt:

HTML:
<TABLE BORDER="1" align="center">
 <TR>
 <TD ROWSPAN="11" valign="middle"> <img src="familie/diesel.JPG" width="198" height="269" alt=""></TD>
 <TD>Naam:</TD><TD>Diesel</TD>
 </TR>
 <TR>
 <TD>Ras:</TD><TD>Hollandse herder</TD>
 </TR>
 <TR>
 <TD>Geboorte datum:</TD><TD>26-09-2010</TD>
 </TR>
 <TR>
  <TD>Fokker:</TD><TD>van Leeuwen</TD>
 </TR>
 <TR>
 <TD>Kleur:</TD><TD>Goud gestroomd</TD>
 </TR>
 <TR>
 <TD>Beharing:</TD><TD>Kort harig</TD>
 </TR>
 <TR>
 <TD>Schoft hoogte:</TD><TD>geen informatie</TD>
 </TR>
 <TR>
 <TD>Gewicht:</TD><TD>geen informatie</TD>
 </TR>
 <TR>
  <TD>Medisch:</TD><TD>100%</TD>
 </TR>
 <TR>
 <TD>Keuring:</TD><TD>niet gekeurd</TD>
 </TR>
 <TR>
 <TD>Huidige functie:</TD><TD>Politiehond training</TD>
 </TR>
 </TABLE>

nu moet hij dus in een css komen en de kleuren aanpassen.
hoe krijg ik dit mooi op de zelfde manier in de css?
 
Laatst bewerkt:
Je haalt een paar dingen door elkaar.

De eerste:
Je zegt: van HTML naar CSS, maar alle webpagina's moeten in html. En CSS wordt ingezet voor de styling.
je bedoelt waarschijnlijk dat je van die tabel af wilt, om vervolgens div's te gebruiken.

De tweede:
Als je eerste bedoeling waar is (div's in plaats van tabel) dan denk je waarschijnlijk aan de kritiek op websites waar tabellen worden gebruikt om de lay-out te bepalen.
Die kritiek is terecht. Maar tabellen moeten nog steeds wel gebruikt worden om 'tabellarische' informatie te huisvesten.
En dat is wat jij hier hebt: informatie die in een tabel thuis hoort.


Tenzij ik je bedoeling helemaal mis heb begrepen,
zou ik zeggen: laten zoals het is.
 
Je zegt: van HTML naar CSS, maar alle webpagina's moeten in html. En CSS wordt ingezet voor de styling.
je bedoelt waarschijnlijk dat je van die tabel af wilt, om vervolgens div's te gebruiken.

ehm ja sorry, ik bedoelde van mijn tabel te bewerken in css met behulp van div.

wat kleurtjes aanpassen van de text. (liefst 2 kleuren) vragen 1 kleur, antwoorden andere kleur)
letter groote aanpassen.

in preciepe alles in een div, en dan met behulp van css, maar wel dat hij dus met een vaste breedte op de pagina staat.

ik heb hem enkel zelf in html code staan nog.
 
Laatst bewerkt:
Die tabel moet niet in een div. Zoals het nu is, is het goed
 
Zoals het nu is, is het goed

Ik moet de text toch een kleur geven. kleur geven die je in de css toch?
nu is de tekst blauw in de tabel. die wil ik een kleur geven. de vraag in bv rood het antwoord bv in geel.
 
Hoi djeric,
Ik zou eerst even de tabel binnenboord halen door de </div> die er vlak vóór staat, te verplaatsen naar meteen onder de </table>.

Verder moet je eens kijken naar de html om "kolom-groepen" te maken: www.w3.org/TR/html401/struct/tables.html#h-11.2.4.
Heb je die in de html erbij staan, dan kan je ze een class of id geven, en die verder met css gaan stylen.
 
Hoi djeric,
Ik zou eerst even de tabel binnenboord halen door de </div> die er vlak vóór staat, te verplaatsen naar meteen onder de </table>.
valt me op dat de inhoud dan idd netter onder elkaar komt. ik plaats alles dus in 1 div.

heb nu de tabel gemaakt met "colgroep" in de css. daar een achter grond kleur al vast staan.

zie:

Code:
.rijkleur1 { width: 150px; background-color: #FFFF99; }
.rijkleur2 { width: 150px; background-color: #FFFFCC; }

de rest heb ik in de html nu zo staan:

HTML:
<TABLE BORDER="1" align="center">
 <COLGROUP CLASS="rijkleur1">
 </COLGROUP>
 <COLGROUP SPAN="2" CLASS="rijkleur2">
 </COLGROUP>
 <TR>
 <TD ROWSPAN="12" valign="middle"> <img src="familie/diesel.JPG" width="198" height="269" alt=""></TD>
 </TR>
 <TR>
 <TD>Naam:</TD><TD>Diesel</TD>
 </TR>
 <TR>
 <TD>Ras:</TD><TD>Hollandse herder</TD>
 </TR>
 <TR>
 <TD>Geboorte datum:</TD><TD>26-09-2010</TD>
 </TR>
 <TR>
  <TD>Fokker:</TD><TD>van Leeuwen</TD>
 </TR>
 <TR>
 <TD>Kleur:</TD><TD>Goud gestroomd</TD>
 </TR>
 <TR>
 <TD>Beharing:</TD><TD>Kort harig</TD>
 </TR>
 <TR>
 <TD>Schoft hoogte:</TD><TD>geen informatie</TD>
 </TR>
 <TR>
 <TD>Gewicht:</TD><TD>geen informatie</TD>
 </TR>
 <TR>
  <TD>Medisch:</TD><TD>100%</TD>
 </TR>
 <TR>
 <TD>Keuring:</TD><TD>niet gekeurd</TD>
 </TR>
 <TR>
 <TD>Huidige functie:</TD><TD>Politiehond training</TD>
 </TR>
 </TABLE>
 
Laatst bewerkt:
Ja, het zit er aan te komen: je bent er bijna. :thumb:

Het valt niet zo op, maar de tabel bestaat uit 3 kolommen, want de foto zit ook in een kolom.
Die moet ook een <colgroep> krijgen, wil het goed gaan: want anders wordt de "rijkleur1" toegekend aan de eerste (foto)kolom, en "rijkleur2" aan de rest, want de span="2" betekent dat de laatste twee kolommen als groep worden samengevoegd.
Met de eerste <colgroup> hoeft verder niets te gebeuren, die is er alleen om alle kolommen te benoemen.

Ook netjes: de align="center" uit de html halen, en vervangen door css: table {margin: 0 auto;}, waardoor de tabel ook in het midden komt te staan. Tevens kan de table-border naar de css verhuisd worden.

Daarmee het kan worden:
HTML:
...
<table>

<colgroep></colgroep>
<colgroep class="rijkleur1"></colgroep>
<colgroep class="rijkleur2"></colgroep>

<tr>
... enz.
En:
Code:
table {
	margin: 0 auto;
	border: 1px solid green;
	}
.rijkleur1 { width: 150px; background-color: #FFFF99; }
.rijkleur2 { width: 150px; background-color: #FFFFCC; }

Zo zit achter de foto geen background-color, in de eerste middelste kolom is de achtergrond "donker-lichtgeel", en in de rechter kolom "licht-lichtgeel". :)

Met vriendelijke groet,
CSShunter
_________
PS: eigenlijk zouden de classes .kolomkleur1 en .kolomkleur2 moeten heten; maar al noem je ze .cirkelkleur1 en .driehoekskleur728, als de verwijzing in de html klopt, werkt het gewoon. ;)
 
Ja, het zit er aan te komen: je bent er bijna. :thumb:

Het valt niet zo op, maar de tabel bestaat uit 3 kolommen, want de foto zit ook in een kolom.
Die moet ook een <colgroep> krijgen, wil het goed gaan: want anders wordt de "rijkleur1" toegekend aan de eerste (foto)kolom, en "rijkleur2" aan de rest, want de span="2" betekent dat de laatste twee kolommen als groep worden samengevoegd.
Met de eerste <colgroup> hoeft verder niets te gebeuren, die is er alleen om alle kolommen te benoemen.

ok top:thumb:

Heb nu hier alles geupload en gevalideert;)

Alleen enkel de text in de tabel een kleur geven krijg ik niet gevonden. De vragen in een kleur en de antwoorden in een andere kleur.
2 kolommen in aparte kleur.

bestaat zoiets als een colgroep color hiervoor?
 
Nee, er is geen colgroup color o.i.d.
Het zou in principe moeten gaan met toevoeging van een color in de class van de <colgroup>, zou je zeggen.
MAAR!
In css hebben <colgroups>'s maar 4 eigenschappen die een style kunnen hebben, en daar zit "color" niet bij: :confused:
  1. border,
  2. background, (die werkt hier dus wel)
  3. width,
  4. visibility.
Zie de specificatie hier. Verdere style-elementen lopen stuk op het cascade-model: een tabel-cel zou bv. de color zowel moeten erven van de kolom als van de rij waar de cel in zit, en dat kan niet tegelijkertijd. Meer uitleg is hier te vinden op Hixie's Natural Log.


  • Ian "Hixie" Hickson zit dicht bij het vuur: o.a. ontwerper van de Acid-2 test, en één van de "CSS Samurai" van het Web Standards Project.

Dan zal er niets anders op zitten dan een extra class="gekleurd" voor de color te maken, en die apart aan alle cellen van de middelste kolom vast te maken (als de styles van de rechterkolom de default-waarden zijn):
HTML:
...
<tr>
    <td class="gekleurd">Naam:</td>
    <td>Diesel</td>
</tr>
<tr>
    <td class="gekleurd">Ras:</td>
    <td>Hollandse herder</td>
</tr>
<tr>
    <td class="gekleurd">Geboortedatum:</td>
    <td>26-09-2010</td>
</tr>
... enz.

Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
Dan zal er niets anders op zitten dan een extra class="gekleurd" voor de color te maken, en die apart aan alle cellen van de middelste kolom vast te maken (als de styles van de rechterkolom de default-waarden zijn):

of in een div plaatsen?


HTML:
<TABLE>
<COLGROUP></COLGROUP>
 <COLGROUP CLASS="vragen"></COLGROUP>
 <COLGROUP CLASS="antwoord"></COLGROUP>
 <TR>
 <TD ROWSPAN="12" valign="middle"> <img src="familie/diesel.JPG" width="198" height="269" alt=""></TD>
</TR>
 <TR>
 <TD><div id="vraag1">Naam:</div></TD><TD><div id="antwoord1">Diesel</div></TD>
 </TR>
 <TR>
 <TD><div id="vraag2">Ras:</div></TD><TD><div id="antwoord2">Hollandse herder</div></TD>
 </TR>
 <TR>
 <TD><div id="vraag3">Geboorte datum:</div></TD><TD><div id="antwoord3">26-09-2010</div></TD>
 </TR>
 <TR>
 <TD><div id="vraag4">Fokker:</div></TD><TD><div id="antwoord4">van Leeuwen</div></TD>
 </TR>
 <TR>
 <TD><div id="vraag5">Kleur:</div></TD><TD><div id="antwoord5">Goud gestroomd</div></TD>
 </TR>
 <TR>
  <TD><div id="vraag6">Beharing:</div></TD><TD><div id="antwoord6">Kort harig</div></TD>
 </TR>
 <TR>
 <TD><div id="vraag7">Schoft hoogte:</div></TD><TD><div id="antwoord7">geen informatie</div></TD>
 </TR>
 <TR>
  <TD><div id="vraag8">Gewicht:</div></TD><TD><div id="antwoord8">geen informatie</div></TD>
 </TR>
 <TR>
 <TD><div id="vraag9">Medisch:</div></TD><TD><div id="antwoord9">100%</div></TD>
 </TR>
 <TR>
 <TD><div id="vraag10">Keuring:</div></TD><TD><div id="antwoord10">niet gekeurd</div></TD>
 </TR>
 <TR>
 <TD><div id="vraag11">Huidige functie:</div></TD><TD><div id="antwoord11">Politiehond training</div></TD>
 </TR>
 </TABLE>

Code:
table {
	margin: 0 auto;
	border: 1px solid green;
	}
#vraag1 {
    color: #DC143C
	}
#antwoord1 {
    color: #3300CC;
	}
#vraag2 {
    color: #DC143C
	}
#antwoord2 {
    color: #3300CC;
	}
#vraag3 {
    color: #DC143C
	}
#antwoord3 {
    color: #3300CC;
	}
#vraag4 {
    color: #DC143C
	}
#antwoord4 {
    color: #3300CC;
	}
#vraag5 {
    color: #DC143C
	}
#antwoord5 {
    color: #3300CC;
	}
#vraag6 {
    color: #DC143C
	}
#antwoord6 {
    color: #3300CC;
	}
#vraag7{
    color: #DC143C
	}
#antwoord7 {
    color: #3300CC;
	}
#vraag8 {
    color: #DC143C
	}
#antwoord8 {
    color: #3300CC;
	}
#vraag9 {
    color: #DC143C
	}
#antwoord9 {
    color: #3300CC;
	}
#vraag10 {
    color: #DC143C
	}
#antwoord10 {
    color: #3300CC;
	}
#vraag11 {
    color: #DC143C
	}
#antwoord11 {
    color: #3300CC;
	}
.vragen { width: 150px; background-color: #FFFF99; }
.antwoord { width: 150px; background-color: #FFCC66; }

validator keurt deze goed, en ziet er goed uit in ie9 & firefox & google chrome browsers.

Deze laatste test in google chrome zag ik 1 foutje staan. de laaste rij vraag en antwoord is breder dan de rest van de kolommen
 
Laatst bewerkt:
Hoi djeric,
validatorfkeurt deze goed, en ziet er goed uit in ie9 & firefox & google chrome browsers.
Ja, klopt, ook Sadari en IE7 doen het bij mij goed (en in IE8 zal ook wel goed gaan).

=======
of in een div plaatsen?
Dat kan dus, en het is ook geldige code. Ik vind het alleen niet zo handig:
  • Voor de 22 cellen komen er 22 overbodige <div>'s bij.
  • De style kan net zo goed meteen aan de <td>'s (lees: de tabel-cellen) gekoppeld worden, dan kunnen de <div>'s gemist worden:
    HTML:
    <tr><td id="vraag1">Naam:</td><td id="antwoord1">Diesel</td></tr>
    <tr><td id="vraag2">Ras:</td><td id="antwoord2">Hollandse herder</td></tr>
    <tr><td id="vraag3">Geboortedatum:</td><td id="antwoord3">26-09-2010</td></tr>
    enz.
Je hebt ook elke cel een eigen id gegeven; dat is ook niet fout, maar het kan simpeler.
Als je begint met een color op te geven voor de hele tabel, dan krijgt alles in de tabel die tekstkleur.
  • Stel je neemt daarvoor het blauw van de rechterkolom, dan wordt het:
    Code:
    table { 
        ... 
        color: #3300CC;
        }
  • Hiermee kunnen alvast de 11 verwijzingen id="antwoord1", id="antwoord2", enz. in de rechterkolom gemist worden: de hele rechterkolom is in één klap blauw van tekst.
  • Nu hoeven alleen de 11 cellen van de middenkolom de afwijkende kleur te krijgen:
    HTML:
    <tr><td id="vraag1">Naam:</td><td>Diesel</td></tr>
    <tr><td id="vraag2">Ras:</td><td>Hollandse herder</td></tr>
    <tr><td id="vraag3">Geboortedatum:</td><td>26-09-2010</td></tr>
    enz.
En ook dit kan nog eenvoudiger. Met de id's krijgen alle middenkolom-cellen individueel hun tekstkleur. Maar deze tekstkleur is voor al deze cellen hetzelfde.
  • Dan kan je beter één class ipv 11 id's nemen: dat scheelt in de css 10 definities van dezelfde kleur:
    Code:
    .vraagkleur {
        color: #DC143C;
        }
  • En de html wordt er lekker kort en overzichtelijk van:
    HTML:
    <tr><td class="vraagkleur">Naam:</td><td>Diesel</td></tr>
    <tr><td class="vraagkleur">Ras:</td><td>Hollandse herder</td></tr>
    <tr><td class="vraagkleur">Geboortedatum:</td><td>26-09-2010</td></tr>
    enz.

=======
Deze laatste test in google chrome zag ik 1 foutje staan. de laatste rij vraag en antwoord is breder dan de rest van de kolommen
Je bedoelt waarschijnlijk: hoger. Ook dat klopt, en dat is een eigenaardigheid van Chrome, Opera en Safari.
Wat er gebeurt is dit:
  • De foto in de linkerkolom is wat hoger dan het totaal van de celhoogtes van de midden- en rechterkolom.
  • Firefox en Internet Explorer beginnen te rekenen met de foto-cel, en verdelen het overschot aan hoogte ponds-ponds-gewijs over de cellen aan de rechterkant. Die worden dus allemaal even hoog.
  • Maar Chrome, Opera en Safari doen het anders. Die beginnen de cellen aan de rechterkant gewoon op te vullen met de celhoogte die ze anders ook zouden krijgen. Bij de laatste cel krijgen ze in de gaten: Hé als ik dit nu ook doe, wordt de laatste cel te kort, en dat mag niet. Daar gieten ze dus de hele ruimte die de linkercel hoger is, in één keer in de laatste cel van de rechterkant.

Een bespreking van dit verschijnsel staat in dit topic:
helpmij.nl/forum/showthread.php/679127-Tabel-quot-valign-middle-quot-is-niet-in-alle-browsers-hetzelfde.

Om te ontkomen aan de opvul-methode van Chrome, Opera en Safari is de universele oplossing: deze browsers rustig hun gang laten gaan, en vervolgens via javascript de verschillende hoogtes opvragen en eerlijk verdelen.
  • Het principe van het script staat ook in dat topic (daar zijn er maar 5 cellen, en de verwijs-namen zijn anders).
  • Het implementeren gaf wat complicaties bij die site, maar daar was 13 reacties later geen spoor meer van over. ;)

Maar gelukkig kan het in jouw geval eenvoudiger:
  • Methode 1: de foto minder hoog maken.
  • Methode 2: de cel-hoogte aan de rechterkant meteen zelf al vergroten via wat extra padding boven en onder in de cellen, zodat de rechterkolommen samen altijd al hoger zijn dan de foto: dan doet het verdeel-probleem zich ook niet voor.

Ik zou voor methode 2 gaan, je bent uit de brand met:
Code:
td {
	vertical-align: middle;
	padding: .25em 0;
	}
Daarmee staat de foto ook verticaal in midden van de hoogte van de tekstcellen samen (zou ook ander kunnen).
Tenminste: bijna! Want bij het strict-Doctype zit onder een img nog een pixel of 3 aan speling (de hoogte van de neerhaaltjes bij letters als een p of q).
Dat valt weg te nemen met:
Code:
table img {
	vertical-align: top;
	}
Voor een wat betere vlakverdeling kan dan in één moeite door de foto ook wat ruimte links en rechts krijgen, bv.:
Code:
table img {
	padding: 0 15px;
	vertical-align: top;
	}

============
De totale css voor de tabel wordt dan niet meer dan dit:
Code:
table {
	margin: 0 auto;
	border: 1px solid green;
	color: #3300CC;
	}
table img {
	padding: 0 15px;
	vertical-align: top;
	}
td {
	vertical-align: middle;
	padding: .25em 0;
	}
.middenkolom  { width: 150px; background: #FFFF99; }
.rechterkolom { width: 150px; background: #FFCC66; }
.vraagkleur   { color: #DC143C; }

===========
En de testpagina voor het resultaat:

Zoiets?
Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
Zoiets?
Met vriendelijke groet,
CSShunter


Wauw! wat een aanvulling:thumb:
Maar idd veel minder werk in de html code, ik dacht in een keer aan een div.

Nu begin ik die tabellen aardig te begrijpen.
Ik zit vaak nog altijd met breedte's en hoogte's te rommelen.
Helemaal top door jou volledige goed gevulde uitleg!

:thumb:

zie hier
pagina geupload.

Validator html werkte goed, css kan ik wederom weer niet controleren. hun site gaf gisteren ook al onbereikbaar probleem met de server. (was soms wel te bereiken)

Ik ga door met de volgende pagina's.
mogelijk weer een nieuwe vraag in een nieuwe topic indien ik er echt niet uit komt.
:)
 
Ja, inderdaad: de css-validator ligt er momenteel uit als je een html-pagina (met toebehoren) laat controleren op valid css. :rolleyes:

Maar als je in de css-validator startpagina de rechtstreekse URL van het css-bestand invoert, doet is het wel. :)

In jouw geval zegt ie (hier): Gefeliciteerd! Geen fouten gevonden. :thumb:

Groetjes,
CSShunter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan