Closed Bug 88641 Opened 23 years ago Closed 23 years ago

CSS-declared table with height of 100% is not working

Categories

(Core :: CSS Parsing and Computation, defect)

x86
Windows 2000
defect
Not set
normal

Tracking

()

VERIFIED INVALID

People

(Reporter: joelp, Assigned: asa)

References

()

Details

Attachments

(1 file)

From Bugzilla Helper:
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20010628
BuildID:    2001062815

The page looks wrong in Mozilla, and not in other browsers. The problem did not
exist in Mozilla build 0.9.0, but it has resurfaced since build 0.9.1

I have seen this on other pages too, like my internal development page. Unknown
if this problem exists outside of XHTML 1.0, like HTML 4.0


Reproducible: Always
Steps to Reproduce:
1. Goto this site: http://www.inkvine.fluff.org/~peter/
2. Make sure code is correct to make the table 100% in height
3. Examine height of main table

Actual Results:  The table was not 100% in height.

Expected Results:  The table should be 100% in height.
I can verify that the above URL does not 100% the height of the table in Mozilla
2001063008.  The table is 100% in IE.

However, I can not seem to produce a reduced testcase.  I can not make a table
with a style of "height:100%" not be 100%.

I strongly suspect that Mozilla is rendering correctly and that there is a bug
in the page.  I will attach my failed attempt to reproduce this bug so someone
else can use it as a starting point of a testcase.
Attached file Failed Test Case
Thanks for your help, Greg. Are you making sure that in reproducing the test 
case, that is an XHTML 1.0 Strict Page, with the table being a class that has a 
value of height:100%?
This is a feature of CSS rather than a bug in Mozilla.

"Specifies a percentage height. The percentage is calculated with respect to the
height of the generated box's containing block. If the height of the containing
block is not specified explicitly (i.e., it depends on content height), the
value is interpreted like 'auto'."

http://www.w3.org/TR/REC-CSS2/visudet.html#the-height-property
Status: UNCONFIRMED → RESOLVED
Closed: 23 years ago
Resolution: --- → INVALID
Just to make it a little clearer for the reporter:

Henri pointed out that the the table is going to have a height of "auto".  The
spec also says that auto is caculated as filling up as much space as it can
bounded by its parent block or by child block elements.  Therefore, Mozilla is
rendering this page correctly.

"If it has block-level children, it is the distance from the top border-edge of
the topmost block-level child box, to the bottom border-edge of the bottommost
block-level child box. Only children in the normal flow are taken into account
(i.e., floating boxes and absolutely positioned boxes are ignored, and
relatively positioned boxes are considered without their offset). Note that the
child box may be an anonymous box."
I am trying to point out that when page enclosing table is set to 100%, Mozilla 
is generating the page as auto, and not 100%.

I'll read the spec some more to get this right, but the XHTML and CSS is W3C 
compliant, and your test case was irrelevant, since you added the 
class "enclosure" to the last <td>, and also since you did not encode it in 
XHTML.

Also notice how the table is not centered on the page. Same thing happens at 
this XHTML page: http://216.103.86.249/
Status: RESOLVED → UNCONFIRMED
Resolution: INVALID → ---
I'd also like to add that none of the tables are centered, and some of the 
boxes are not displaying the correct border colors.

This could be a XHTML-specific bug, so please follow up with XHTML test pages 
from now on.
According to the spec, "height:100%" is converted to "height:auto" when the
height of the containing box is not specified, but determined by the content.

The only thing I see in your code that is even trying to center the table is the 
<div class="centre"> 
centre  {text-align:center;}

According to the sec, text-align only applies to inline elements and therefore
will not center the table block element.

I don't see the "wrong border color" problem, but I do see borders that appear
to be too large compared with IE5.5.  I can not figure out shy the top and
bottom <tr> border is soo large.

BTW, I like the Netscape Rant.  That should be in the Mozilla FAQ on why Mozilla
is better than Netscape.

Marking "INVALID" because the main problem "height:100%" on tables are handled
correctly by Mozilla.  Might want to file a seperate bug on the border
color/size problem.
Status: UNCONFIRMED → RESOLVED
Closed: 23 years ago23 years ago
Resolution: --- → INVALID
Well, I got the page looking correctly in IE5 and IE6, but with Mozilla some of 
the borders are not all black, they have grey borders also. There is also a 
problem with the table not accepting its forced height, making my title image 
box looking tacky and wrong.

The page I used in this submission was done by my friend, PeterB. He doesn't 
completely agree with Mozilla's interpretation of the W3C spec [either do I], 
so we're going to read through it and figure out what is really going on.

Is there really a problem on the border color? 

Futhermore, I'm surprised that the W3C validator would pass this code as 
correct, where is displays perfectly in IE, but not Mozilla.

It looked great in 0.9 :|
Component: Browser-General → Style System
QA Contact: doronr → ian
style system
Pages can go through a validator and be syntactically correct, that doesn't mean
it'll do what you think it'll do... for example, if you want to make something
look red, and you say:

   p { color: green; }

...then the validator will say the CSS is perfectly valid, but it will still not
look red.

Anyway, in this case, the page has several things wrong with it that the 
validators won't catch.

The first is that the script is commented out. In HTML, that works, but in 
XHTML, it just results in the section being ignored. This is because in HTML
the <script> block is defined as being CDATA, whereas in XHTML it is not. The
easiest solution around that is to not use XHTML. If you really want to use 
XHTML then I would recommend keeping the script in an external file, like you
do for the other script.

If you don't believe me about the comment thing, tell the W3C validator to show
you the parse tree, and look to see what it thinks the contents of the second
<script> block is.

The problem that this bug mentions, though, is that 'height:100%' isn't giving
you the results you expect. The reason for this is that, as mentioned above,
percentage heights are treated as 'auto' if the parent block doesn't have an
explicit width. In this case, the parent of the table is a <div>, which has
no explicit height. Even if you have the <div>, the <body>, and the <html> 
elements all 'height:100%', you would still not get the effect you want, because
the containing block of the <html> element has itself got an 'auto' height.

The solution is to say:
   .container { position: fixed; top: 0; left: 0; right: 0; bottom: 0; }
...which makes the table take the same space as the viewport.

The other problem mentioned above is that you use 'text-align: center' to try to
align a table (as opposed to text). The property 'text-align' only aligns text
and other inline content like images on a line. The way to center a block is to
give it 'auto' margins, for example, to center a <div>:

   div { width: 100px; margin-left: auto; margin-right: auto; }

Overall, unless you have a very good reason to, I would strongly suggest not 
using XHTML at this stage, unless you serve it as text/xml (thus causing 
browsers to treat it completely as XML and not HTML or tag soup). There isn't
much point in using XHTML since no browsers really support it right now except
Mozilla, and it only supports it if you send it as text/xml; plus, as you have
discovered, there are subtle differences between how XHTML works and how tag
soup is treated by existing web browsers.

If you need references for any of my assertions, feel free to ask.

VERIFIED INVALID.
Status: RESOLVED → VERIFIED
*** Bug 93052 has been marked as a duplicate of this bug. ***
Ian your solution does not fix the page. Adding the container field to the main 
table does nothing.

Also, I can not figure out why all of the elements are off center, but 
perfectly aligned in IE. Can you explain that? I am following standards 
HTML/XHTML procedures, yet Mozilla is mangling everything.
Joel: Have you fixed the page to correct all the mistakes I mentioned above?
Yeah. Seriously, I gave it a lot of time making sure the code was just right 
and to standards. Finally got it done, and it still looked terrible in Mozilla, 
and made it look bad in IE, so I put it back.

I made table have this class:
.container { position: fixed; top: 0; left: 0; right: 0; bottom: 0; }

It did nothing.

I'll work more on aligning things with the example you mentioned. Problem is, 
once I have a table centered, every single element inside of it [text] is 
centered unless I specify it otherwise. That's extremely annoying.

I'm sure I'll figure it out in the end, or just no support Mozilla. I'm not 
even going to go with Netscape 4.x support. There's no way I'm going to add 
scripts or parts to my code just for one browser when the others don't even 
need it. :\ The code will either look right in all the browsers I'm concerned 
with, or just in IE if I can't get it to look right in Mozilla without messing 
it up in IE.
Joel: send me mail (ian@hixie.ch) with your page's address, and I can take a 
closer look.
Joel, be careful about using bugs on a piticular browser as a major visual piece
of your page.  Just because IE5.x, IE5.5, IE6.0 work does not mean that
Microsoft will not fix it in IE6.1, 6.5 or 7.0.

This is the main reason I develop all my code to work with IE/Mozilla.  No one
but myself uses my corprate Intranet pages on anything other than IE.  However,
makeing sure my code works in both browsers keeps browser specific bugs out of
my code that will hurt me latter on.  Most of my intranet systems will be in use
at a company for 5-10 years.  Must think to the future.  

It works both ways though, if I coded only to mozilla, then I would have many
Mozilla specific bugs.
*** Bug 201328 has been marked as a duplicate of this bug. ***
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: