[HTML] Lege <TR> heeft toch een hoogte

Pagina: 1
Acties:

  • Anakin239
  • Registratie: September 2001
  • Laatst online: 10:59
Ik zit met het volgende probleem. Ik ben een web app aan het maken waarbij velden moeten verdwijnen en verschijnen afhankelijk van het antwoord. Nu gaat dat prima alleen loop ik tegen het volgende probleem aan.

Als ik lege rijen heb, dat wil zeggen rijen gevuld met hidden div's dan hebben deze toch een hoogte. Weet iemand een mogelijkheid om deze lege rijen een hoogtte van 0 te geven? Ik heb al zaken als padding en margins op 0 zetten geprobeerd. Het hoeft overigens alleen in IE te werken.

Hieronder een voorbeeldje de code die het probleem goed weergeeft.

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title></title>
    </head>
    <body>
        <table style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; 
                        PADDING-BOTTOM: 0px; MARGIN: 0px; 
                        BORDER-TOP-STYLE: none; PADDING-TOP: 0px; 
                        BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; 
                        BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: none">
            <tr>
                <td>Gevulde row</td>
            </tr>
            <tr>
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr bgcolor="black">
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr>
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr bgcolor="black">
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr>
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr bgcolor="black">
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr>
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr>
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr bgcolor="black">
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr>
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr bgcolor="black">
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr>
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr bgcolor="black">
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr>
                <td><div style="display:none">Even testen</div>
                </td>
            </tr>
            <tr>
                <td>Laatste gevulde row</td>
            </tr>
        </table>
    </body>
</html>

Verwijderd

'height:0'?

  • Anakin239
  • Registratie: September 2001
  • Laatst online: 10:59
Height=0 op de TD of de TR heeft geen effect.

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 15:04
Misschien een domme opmerking omdat je later meer cellen per rij zou gaan willen gebruiken, maar waarom gebruik je in godsnaam een tabel met maar 1 cel per rij??
code:
1
2
3
4
5
6
<div id="container">
 <div>gevulde koek</div>
 <div style="display: none">lege div</div>
 <div style="display: none">lege div</div>
 <div>etcetera</div>
</div>


Lijkr me persoonlijk makkelijker....

Regeren is vooruitschuiven


  • watzie
  • Registratie: Juni 2001
  • Laatst online: 16-05 15:09
Dat kan niet want een table row heeft geen height attribuut (dus ook geen height style)

  • Anakin239
  • Registratie: September 2001
  • Laatst online: 10:59
Het is inderdaad de bedoeling dat er meerdere cellen in de rij komen. Dit is slechts een voorbeeldje om het probleem te illustreren.

  • Willem
  • Registratie: Februari 2001
  • Laatst online: 15:50
:X

* Willem ducks

Zou trouwens als je spacing/padding wilt hebben binnen een td gaan werken met margin:x; en padding:x; ... :)

Motor (of auto) onderhoud bijhouden


  • ritsjoena
  • Registratie: December 2001
  • Laatst online: 16-06-2024
Vergeet niet je lettertype te verkleinen voor de betreffende rijen. Als deze namelijk groter is dan de rijhoogte neemt hij die als minimale hoogte (is mijn ervaring). Zelfs als de rij verder leeg is.

[ Voor 11% gewijzigd door ritsjoena op 27-04-2004 10:20 ]


Verwijderd

om één of andere vage reden wil het helpen als je inplaats van:
code:
1
2
3
<tr>
    <td></td>
</tr>


dit doet:

code:
1
<tr><td></td></tr>


dus geen enters tussen je tr / td tags. Ik weet uit ervaring dat sommige browser de neiging hebben die witruimte van een enter mee te nemen.

  • watzie
  • Registratie: Juni 2001
  • Laatst online: 16-05 15:09
(sorry da'k nog geen directe oplossing voor je probleem lever, ben ook effe aan het kijken, maar toch nog effe een kleine opmerking omdat ik nou eenmaal vind dat je dingen moet doen zoals ze moeten...)
je gebruik van div is niet echt correct hier.
<div>gebruik je voor langere stukken over het algemeen, en specifiek wanneer je blocks (bijv <table> etc) wilt omspannen.

als je inline wilt stijlen, moet je <span> gebruiken.
In jouw voorbeeld dus absoluut overal waar div staan span.
Met het SPAN element kan een beperkt deel van een HTML-document worden ingesloten. Met behulp van de attributen STYLE, CLASS, of ID kan aan dat deel een stijl worden gekoppeld. Het SPAN element heeft een vergelijkbare functie als het DIV element, alleen mag het slechts inline inhoud bevatten en geen elementen op blokniveau (zoals P, UL, TABLE en FORM).

  • ritsjoena
  • Registratie: December 2001
  • Laatst online: 16-06-2024
Nu ik Watzie's reactie lees herinner ik het me. DIV plaatst een "enter" om een duidelijk onderscheidbaar blok te krijgen. Dit zorgt dus voor een ectra regel in je kolom en dus extra hoogte. SPAN is inderdaad vel beter in dit geval.

  • Anakin239
  • Registratie: September 2001
  • Laatst online: 10:59
Cellpadding, spacing en margins in de cell werken ook niet.

Bedankt voor de tip over spans en divs. Overigens lost dat het probleem niet op. Het verwijderen van de enters ook niet. Ook als ik geen div plaats in de rijen treedt dit probleem op.

[ Voor 42% gewijzigd door Anakin239 op 27-04-2004 10:32 ]


Verwijderd

Anne merkt op dat als je een DIV op 'display:none' zet je het uit de normal flow haalt. En voor al die HTML denkende mensen hier. Ik gaf een CSS idee (geen idee of het werkt) en dat had niks te doen met height=0 of andere rare attributen.

Maar de TR op 'display:none' zetten moet zeker helpen, blijft de vraag natuurlijk waarom je uberhaupt tabellen gebruikt.

[ Voor 4% gewijzigd door Verwijderd op 27-04-2004 10:34 ]


  • Anakin239
  • Registratie: September 2001
  • Laatst online: 10:59
Anne,

de display op 0 zetten werkt inderdaad, maar ik had gehoopt op iets van een andere mysterieuze property waardoor ik geen extra slag nodig heb na de generatie van de pagina om rijen op display 0 te zetten.

  • Copyman
  • Registratie: Januari 2001
  • Laatst online: 22-05 22:48

Copyman

Dode muis

Het kan eventueel ook met:

Cascading Stylesheet:
1
2
3
td {
  font-size:0;
}


Of alleen voor die ene TD een rule maken:

Cascading Stylesheet:
1
2
3
4
5
6
7
8
#emptyTd {
  font-size:0;
}


<tr>
  <td id="emptyTd"></td>
</tr>

[ Voor 82% gewijzigd door Copyman op 27-04-2004 13:25 ]

Zeer belangrijke informatie: Inventaris


  • InZane
  • Registratie: Oktober 2000
  • Laatst online: 06:59
watzie schreef op 27 april 2004 @ 10:14:
[...]


Dat kan niet want een table row heeft geen height attribuut (dus ook geen height style)
Uh als iets geen height attribuut heeft heeft kan het wel een CSS height hebben hoor.
Kweenie waar je die wijsheid vandaan hebt..

Ben het verder helemaal eens met anne.
Divjes in een td.. beetje vreemde constructie.

[ Voor 13% gewijzigd door InZane op 27-04-2004 15:37 ]


  • Anakin239
  • Registratie: September 2001
  • Laatst online: 10:59
ok, ok, point taken. Divjes in een TD is niet helemaal juist.

Maar ondertussen heb ik nog geen oplossing waar ik 100% gelukkig van wordt.

De pagina wordt op basis van vragen uit een database opgebouwd en er kunnen meerdere vragen in een rij staan.

Met de manier van Anne moet ik eerst de vragen toevoegen vervolgens bepalen of alle vragen in een TR onzichtbaar zijn en dan de rij onzichtbaar maken. Had liever gehad dat de rij gewoon een hoogte van 0 kreeg.

  • efd
  • Registratie: Juli 2000
  • Laatst online: 18-10-2024

efd

Gewoon
code:
1
2
3
<table border=0 cellpadding=0 cellspacing=0>
  <tr><td></td></tr>
</table>

Het is nou eenmaal zo.


  • Anakin239
  • Registratie: September 2001
  • Laatst online: 10:59
En dat werkt dus niet.

Zet er maar eens het volgende in. Je zal zien dat er een mooie barcode ontstaat.

HTML:
1
2
3
4
5
6
7
8
9
<tr bgcolor="black"><td></td></tr>
<tr ><td></td></tr>
<tr bgcolor="black"><td></td></tr>
<tr ><td></td></tr>
<tr bgcolor="black"><td></td></tr>
<tr ><td></td></tr>
<tr bgcolor="black"><td></td></tr>
<tr ><td></td></tr>
<tr bgcolor="black"><td></td></tr>

  • efd
  • Registratie: Juli 2000
  • Laatst online: 18-10-2024

efd

En een <tr style="display: none;"> ?

Het is nou eenmaal zo.


  • Anakin239
  • Registratie: September 2001
  • Laatst online: 10:59
Dat werkt inderdaad, zie hierboven ook. Maar ik ben op zoek naar een andere oplossing.

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 15:04
Anakin239 schreef op 27 april 2004 @ 15:50:

De pagina wordt op basis van vragen uit een database opgebouwd en er kunnen meerdere vragen in een rij staan.
Kun je dan niet gewoon zorgen dat de rijen en cellen alleen gegenereerd worden als ze nodig zijn?? Heb je ook geen divjes meer in je cellen, iedereen blij...

* T-MOB mist het algehele plaatje nu een beetje

Regeren is vooruitschuiven


  • Anakin239
  • Registratie: September 2001
  • Laatst online: 10:59
Laten we de divjes buiten beschouwing laten. Daar komen spans te staan of inputs.

En ze moeten wel aanwezig zijn maar geen ruimte in nemen.

Verwijderd

Het wordt er niet duidelijker op*

  • Anakin239
  • Registratie: September 2001
  • Laatst online: 10:59
Ok, dan probeer ik het nog een keer.

Wat ik zoek is een oplossing waarbij ik de TR niet op een display van none hoef te zetten en waarbij de onderstaande code geen barcode oplevert.

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title></title>
    </head>
    <body>
        <table cellpadding=0 cellspacing=0 border=0 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; 
                        PADDING-BOTTOM: 0px; MARGIN: 0px; 
                        BORDER-TOP-STYLE: none; PADDING-TOP: 0px; 
                        BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; 
                        BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: none">
            <tr><td>Gevulde row</td></tr>
            <tr bgcolor="black"><td></td></tr>
            <tr ><td></td></tr>
            <tr bgcolor="black"><td></td></tr>
            <tr ><td></td></tr>
            <tr bgcolor="black"><td></td></tr>
            <tr ><td></td></tr>
            <tr bgcolor="black"><td></td></tr>
            <tr ><td></td></tr>
            <tr bgcolor="black"><td></td></tr>
            <tr><td>Laatste gevulde row</td></tr>
        </table>
    </body>
</html>

Verwijderd

Zoiets? :?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title></title>
    </head>
    <body>
        <table cellpadding=0 cellspacing=0 border=0 style="padding:0px; margin:0px; BORDER-COLLAPSE: collapse;">
            <tr><td>Gevulde row</td></tr>
            <tr><td></td></tr>
            <tr ><td></td></tr>
            <tr><td></td></tr>
            <tr ><td></td></tr>
            <tr><td></td></tr>
            <tr ><td></td></tr>
            <tr><td></td></tr>
            <tr ><td></td></tr>
            <tr><td></td></tr>
            <tr><td>Laatste gevulde row</td></tr>
        </table>
    </body>
</html>

  • InZane
  • Registratie: Oktober 2000
  • Laatst online: 06:59
Ik snap nog steeds niet wat er tegen display: none; is :/

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 15:04
OK, probeer ik het ook nog eens..
In mijn beste test heb ik in IE een streepje van 1px voor elkaar kunnen krijgen (Moz deed het toen perfect). Misschien is het dus een idee om op een andere manier je probleem op te lossen...

Bijvoorbeeld door serverside te zorgen dat een onnodige <tr> niet in het bestand komt. (Je vragen komen toch uit een db?).

Of door niet met een tabel te werken maar met andere elementen. Hoe belangrijk is het dat vragen die nu in een rij staan ook deze rijvorm behouden? Kun je niet af met floatende divs in een container...

Kortom in welke context staat je probleem?

Regeren is vooruitschuiven


  • Anakin239
  • Registratie: September 2001
  • Laatst online: 10:59
Iedereen bedankt voor de pogingen.

Zoals T-Mob zegt zal ik op zoek gaan naar een andere oplossing.
Pagina: 1