Avatar billede nielle Nybegynder
11. juni 2003 - 22:44 Der er 17 kommentarer og
2 løsninger

Hvordan kontrollere man border af en tabel via CSS?

Hvordan kontrollere jeg (via CSS eller CSS2) border i en tabel?

Jeg vil gerne lave en tabel som vist i:

http://www.acomma.com/udvikling2/template/demo_tabel.htm

- defineret ved: border="1" cellspacing="0" frame="void".

Mit problem er at jeg gerne vil af med 3D effekten og at jeg også gerne vil kunne bestemme f.eks. farve og stregtype af den indre border.

Jag kan gøre det ved at sætte styles for hver af td-tagsene, men det er jeg ikke vild med eftersom at dette f.eks. vil betyde at jeg skal sætte forskellige styles for hver af hjørne cellerne (Besværliggøres yderligere af at jeg ikke altid kender antallet af rækker i tabellen på forhånd idet at jeg udtrækker data fra en database).

Det burde vel være mulig at sætte en style for selve tabellen og så lade frame="void" om at klippe den ydre border af?
Avatar billede skovenborg Nybegynder
11. juni 2003 - 22:45 #1
Du kan lave et stylesheet hvor det står:
TD
{
border-color:#000000;
osv.
Avatar billede medions Nybegynder
11. juni 2003 - 22:47 #2
td {
  border: #000000 1px solid;
}

//>Rune
Avatar billede skovenborg Nybegynder
11. juni 2003 - 22:50 #3
skulle være svar ;-)

Du kan også prøve med TABLE istedet for TD.
Avatar billede medions Nybegynder
11. juni 2003 - 22:51 #4
Well, der kan jo oxo defineres en Class...!

Fx.

<style type="text/css">
  .TableBorder {
  border: #000000 1px solid;
}
</style>

<table class="TableBorder">
<tr>
.....

//>Rune
Avatar billede gonza.dk Nybegynder
11. juni 2003 - 22:52 #5
td
    {
    border-top:1px solid;
    border-left:1px solid;
    border-right:1px solid;
    border-bottom:1px solid;
    border-color: #0066cc;
    }
Avatar billede doggy82 Praktikant
11. juni 2003 - 22:53 #6
eller så'n her:

style="border-width: 1px;border-style:solid; border-color: #333333 #333333 #FFFFFF #333333;"
Avatar billede nielle Nybegynder
11. juni 2003 - 23:23 #7
Sig mig, læser folk ikke spørgsmålet før at de svarer? Enten det, eller også er det mig som ikke formulere mig klart. ;^)

Hvis jeg laver et CSS, hvor at jeg sætter en style for td-taggen, så vil denne slå igennem for alle tabellens celler - også hjørne- og kant-cellerne. Det var jo netop ikke det jeg ville have (se mit link).

Desuden er det lidt problematisk at sætte styles for td-taggen idet at dette også vil slå igennem for alle de tabeller hvor jeg ikke vil have det.

Løsningen er derfor at bruge en class. Denne kan jeg enten sætte på td- eller table-taggen. Jeg håber på en løsning med den sidste, idet at dette ville skulle spare mig for at definere sån’ cirka 8 special td-tags: en for hvert hjørne og hver kant. Samt et tilsvarende antal th-tags...

Border-coler løser måske nok mit farve-problem (så det skal skovenborg nok få nogle point for), men det løser ikke mit problem med at jeg vil af med 3D effekten (som bliver meget tydelig på en ikke-hvid baggrund - se mit link nu).

At begynde at sætte border-width og border-style etc. etc. for tabellen løser heller ikke noget! Det influere kun borderen som er rundt om tabellen, og ikke de interne borderstreger.
Avatar billede doggy82 Praktikant
11. juni 2003 - 23:31 #8
?!?!!?
Avatar billede doggy82 Praktikant
11. juni 2003 - 23:33 #9
Jeg fatter ikke en dyt, men alt hvad du har brug for at vide står her http://www.w3schools.com/css/css_border.asp  :)
Avatar billede gonza.dk Nybegynder
11. juni 2003 - 23:39 #10
td.topright
    {
    border-top:0px none;
    border-left:0px none;
    border-right:1px solid;
    border-bottom:1px solid;
    border-color: #0066cc;
    }

td.topcenter
    {
    border-top:0px none;
    border-left:1px solid;
    border-right:1px solid;
    border-bottom:1px solid;
    border-color: #0066cc;
    }

td.topleft
    {
    border-top:0px none;
    border-left:1px solid;
    border-right:0px none;
    border-bottom:1px solid;
    border-color: #0066cc;
    }

td.all
    {
    border-top:1px solid;
    border-left:1px solid;
    border-right:1px solid;
    border-bottom:1px solid;
    border-color: #0066cc;
    }

td.bottomleft
    {
    border-top:1px solid;
    border-left:0px none;
    border-right:1px solid;
    border-bottom:0px none;
    border-color: #0066cc;
    }

sådan? definer dem med <td class="topleft">

ellers forstår jeg nada af hvad det er du vil.
Avatar billede gonza.dk Nybegynder
11. juni 2003 - 23:40 #11
Der mangler lige et par stykker, men dem kan du jo selv lave :-D
Avatar billede gonza.dk Nybegynder
11. juni 2003 - 23:47 #12
table.style td
    {
    border-top:1px solid;
    border-left:1px solid;
    border-right:1px solid;
    border-bottom:1px solid;
    border-color: #0066cc;
    }

<table class='style'>....


Giver samme style på alle tabellens <td>'er... Måske er det der vi skal hen?
Avatar billede lordhead Nybegynder
12. juni 2003 - 07:39 #13
Det du siger, kan ikke løses vha. een class!

Du bliver simpelthen nødt til at sætte class på alle dine td's!
Tilgængæld kommer det til at virke, og du behøver, ikke at lave flere class efter du har lavet dette i dit CSS dokument:

.top-left-corner {
border-left: 1px solid black;
border-top: 1px solid black; }

.top-right-corner {
border-right: 1px solid black;
border-top: 1px solid black; }

.bottom-left-corner {
border-left: 1px solid black;
border-bottom: 1px solid black;

.bottom-right-corner {
border-right: 1px solid black;
border-bottom: 1px solid black;

her har du alle de class' du skal bruge til at lave en table ;-)
Avatar billede nielle Nybegynder
12. juni 2003 - 07:46 #14
gonza.dk -> Jeg vil jo *netop* undgå at skulle lave en hel masse td styles! Er det virkeligt ikke muligt at lave en table style?

Jeg ved godt at jeg kan løse problemet med at lave en masse td styles, men det er ikke særligt fleksibelt at arbejde med. I mit tilfælde skal jeg f.eks. bruge det i sammenhæng med at jeg trækker data ud af en database. I ASP ser dette nogenlunde således ud:

SQL = "SELECT col1, col2, col3 FROM minTabel ORDER BY col1"
set rs = Conn.Execute(SQL)

Response.Write("<table>")
do while not rs.eof
  Response.Write("<tr><td>" & rs("col1") & "</td><td>" & rs("col2") & "</td><td>" & rs("col2") & "</td></tr>")
  rs.MoveNext
loop
Response.Write("</table>")

Jeg kan sagtens regne ud hvor mange rækker der er og hvordan at jeg skal tilpasse logikken for at få sætte de forskellige classes på de enkelte celler alt efter hvor de kommer til at være endeligt placeret i den færdige tabel. Imidlertid vil jeg helt klart foretrække at kunne nøjes med at sætte en enkelt style og nogle atributter på table taggen.

Men hvis svaret er ”desværre, det kan ikke lade sig gøre” så er det jo også et svar.
Avatar billede nielle Nybegynder
12. juni 2003 - 08:10 #15
lordhead -> Jeg er efterhånden bange for at du har ret. Nogen gange synes jeg ikke at W3C er fremsynede nok! :^(

Points til dig og gonza.dk (for 23:39:12).
Avatar billede gonza.dk Nybegynder
12. juni 2003 - 09:59 #16
nielle -> ok, nu forstår jeg hvad det er du vil :o) men er desværre bange for, ligesom lordhead har nævnt, at det ikke kan lade sig gøre med en enkelt class. Håber du finder ud af det på en anden måde ;o)

Takker for points.
Avatar billede nielle Nybegynder
12. juni 2003 - 11:01 #17
gonza.dk -> Du er velkommen.

Forhåbentlig er jeg ikke den eneste der kan se hvorfor det ville være smart med denne mulighed? De var ellers på den rigtige vej da de indførte rules og frames attributterne for table-taggen.
Avatar billede gonza.dk Nybegynder
12. juni 2003 - 11:08 #18
nope, jeg kan godt se at det kunne være ret smart, og er da muligt at jeg sidder uden den viden at det rent faktisk _kan_ lade sig gøre, tror jeg dog ikke ;o)
Avatar billede lordhead Nybegynder
12. juni 2003 - 14:26 #19
nielle> Ja - det er (desværre) ikke muligt, efter hvad jeg ved!

Så må vi se om det vil blive muligt i en nær fremtid...

Takker 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