Closed
Bug 33443
Opened 25 years ago
Closed 24 years ago
IMG HEIGHT="xxx%" doesn't work under all circumstances
Categories
(Core :: Layout, defect, P3)
Core
Layout
Tracking
()
RESOLVED
WORKSFORME
Future
People
(Reporter: dl001i, Assigned: pavlov)
References
()
Details
(Keywords: compat, testcase)
Using Build: 2000031508
According to the HTML 4.01 specs regarding the Height (and width) attributes of
the IMG tag,
"...lengths expressed as percentages are based on the horizontal or vertical
space currently available, not on the natural size of the image, object, or
applet."
Now, while this isn't entirely clear, I think that the majority of content, as
well as browser, developers would agree to the following points:
"available space" refers to the width or height of the parent element, minus
any style-defined padding, and the space that other content above of below the
image occupies.
In the event that the IMG is a direct decendant of the <BODY> tag, it should be
the height or width of the current browser window (again, minus any padding.)
Well, Mozilla is kinda funky about this when it comes to the Height attribute.
Under certain circumstances, it will behave exactly as I have described.
Examples are, when it is placed within a DIV tag with a predefined height, an
IMG with a %-based height will scale to the available vertical space in the
DIV. However, when an identical IMG tag is placed in a table within a TD with
a predefined height, it behaves exactly as the w3c says it shouldn't - that is,
it is displayed at the image's actual height.
IMGs with %-heights also render at their actual height when positioned as
direct children of the BODY element.
(Internet Explorer renders these as it is supposed to. if you view my sample
page (http://malsyned.resnet.rochester.edu/other/test.html) with both IE and
Mozilla, you can see the difference.)
Also, all of these observations are turned on their ass in wholely
unpredictable ways when the heights are specified with the HEIGHT attribute
instead of using STYLE="height: xxx%".
Steps to reproduce:
1. Make a table
2. Make a TD with a height set to a specific value
3. Put an IMG inside it with a height defined in terms of %
Aditional Information:
Mozilla doesn't appear to have the same problems with Widths defined in terms
of %s. I haven't tested how it deals with other nesting combinations involving
Height=%, only <BODY><IMG>, <DIV><IMG>, and <TABLE><TR><TD><IMG>
Comment 1•25 years ago
|
||
On a current CVS build (pulled just before the tree opened today)
for Linux, the test page renders as described by the reporter. (I
can't say if the behavior is wrong by the spec, but it does still
render that way.)
Platform/OS changed to All/All on the strength of this happening
under Linux too.
(I apologize if any of this is wrong; sages on #mozillazine suggested
it was right to confirm this bug without being sure of what the spec
said should happen, due to the bug's age.)
Status: UNCONFIRMED → NEW
Ever confirmed: true
OS: Windows 2000 → All
Hardware: PC → All
Comment 2•25 years ago
|
||
Here's where the quote
comes from: http://www.w3.org/TR/html4/struct/objects.html#h-13.7.1
I disagree with the original bug report on one point:
"In the event that the IMG is a direct decendant of the <BODY> tag, it should be
the height or width of the current browser window (again, minus any padding.)"
As expressed in the quote: "... based on the horizontal or vertical space
currently available", 'space currently available' refers to the space available
taking other content into account.
In the simple case of a html consisting of a line of text, an image with height
100%, and another line of text, both lines should be visible and the image
should be as tall as possible. Sizing down the browser implies sizing down the
image up to and including 0px.
What to do if the "other content" on its own is taller than one browser height?
Well, the question is, what is the "current space available"?
Consistency dictates it to be 0px; if you size down the above example to where
scrollbars appear, the image shouldn't pop back in any form, but keep being 0px
high.
Waqar: I think you took img issues from buster, right?
Assignee: rickg → waqar
Comment 5•25 years ago
|
||
I agree with the original bug report and disagree with the comments by Peter
Annema for the following reason: The percentage HEIGHT attribute was
originally defined for Netscape 2.0, and the HTML 4.0 spec is simply trying to
formalize this specification. Therefore, Mozilla should maintain the original
functionality of the percentage HEIGHT attribute as it was implemented in prior
versions of Netscape (and later in Internet Explorer). I think one of the
goals of the HTML 4.0 spec was to maintain compatibility with existing
implementations whereever possible. Changing the behavior of existing
attributes would break existing web pages unnecessarily. I think that the
original statement is correct: "In the event that the IMG is a direct
decendant of the <BODY> tag, it should be the height or width of the current
browser window (again, minus any padding.)".
Comment 6•25 years ago
|
||
You're right, Chris. Of course Mozilla shouldn't break current pages. However,
there is an inconsistency between how images inside a div or table, and images
directly as child of a body are dealt with. An inconsistency which doesn't make
sense to me.
I propose therefore that in NavQuirk mode (currently all documents which
don't have their DTD set to HTML 4.0x Strict) the original report's advice be
followed to keep compatibility with existing pages, while in HTML 4.0x Strict
mode <table>s, <div>s and <body>s are dealt with equally, like
dl001i@mail.rochester.edu put it:
'"available space" refers to the width or height of the parent element, minus
any style-defined padding, and the space that other content above of below the
image occupies.' [and of course left and right of the image]
Comment 9•25 years ago
|
||
Our behaviour in strict/standard mode is fine. That is, we are treating the
HEIGHT attribute of the IMG element just like the "height" property in CSS.
For simple consistency, this is IMHO the best solution.
However, in quirks mode we are not doing the same as Nav4. According to CSS, if
the parent element has a height of 'auto', then percentage heights on child
elements should also be treated as 'auto', but in NavQuirks mode we should be
treating percentage values for 'HEIGHT' of elements that are children of BODY
to be relative to the viewport height.
I think. I haven't checked carefully.
See also:
http://slip/projects/marvin/html/img_height_percent.html (Netscape intranet)
http://www.thing.net/~flux/
Comment 10•25 years ago
|
||
This bug has been marked "future" because the original netscape engineer working
on this is over-burdened. If you feel this is an error, that you or another
known resource will be working on this bug,or if it blocks your work in some way
-- please attach your concern to the bug for reconsideration.
Comment 12•24 years ago
|
||
*** Bug 57766 has been marked as a duplicate of this bug. ***
Comment 13•24 years ago
|
||
*** Bug 58502 has been marked as a duplicate of this bug. ***
Comment 14•24 years ago
|
||
new url testcase from bug 58502
nominating for mozilla0.9
Comment 15•24 years ago
|
||
*** Bug 63138 has been marked as a duplicate of this bug. ***
Assignee | ||
Comment 16•24 years ago
|
||
imglib
Assignee: waqar → pavlov
Status: ASSIGNED → NEW
Component: Layout → ImageLib
QA Contact: petersen → tpreston
Assignee | ||
Comment 17•24 years ago
|
||
worksforme
Status: NEW → RESOLVED
Closed: 24 years ago
Component: ImageLib → Layout
QA Contact: tpreston → petersen
Resolution: --- → WORKSFORME
You need to log in
before you can comment on or make changes to this bug.
Description
•