W3C home > Mailing lists > Public > public-css-testsuite@w3.org > January 2011

RE: [RC4] margin-left-001 invalid

From: Arron Eicholz <Arron.Eicholz@microsoft.com>
Date: Tue, 11 Jan 2011 01:51:44 +0000
To: "css21testsuite@gtalbot.org" <css21testsuite@gtalbot.org>
CC: "public-css-testsuite@w3.org" <public-css-testsuite@w3.org>
Message-ID: <07349ECFC3608F48BC3B10459913E70B12B18475@TK5EX14MBXC140.redmond.corp.microsoft.com>
On Monday, January 10, 2011 5:27 PM Gérard Talbot wrote:
> Le Lun 10 janvier 2011 16:17, Arron Eicholz a écrit :
> > http://test.csswg.org/suites/css2.1/20101210/html4/margin-left-001.htm
> >
> > The HR element is by default per HTML4.01 set with align=center this
> > has no mapping in CSS 2.1
> 
> Consider that HR element is a block-level element and it's empty by
> design: it has no inline boxes. So, the attribute specification align=center can
> not be mapped to and should not be mapped to
> 'text-align: center' in CSS. It has to be with 'margin-left: auto' and
> 'margin-right: auto'.

You are making an assumption that there are no inline boxes. There is nothing saying you can't create inline boxes. At this point the implementation can chose to implement HR however it sees fit. Now granted I am not saying that creating inline boxes is the right thing to do. I just saying, off the top of my head, I can't think of any clarification in CSS saying you can't create them in this case.

> 
> HTML4 states it is aligned "with respect to the surrounding context".
> http://www.w3.org/TR/html4/present/graphics.html#h-15.3

I understand what HTML4 says but there is nothing in CSS 2.1 that requires CSS to apply to the HR's align attribute in any way. The closest text is section 6.4.4 and even that is only a suggestion.

> > and thus setting margin-left on the HR element still may do nothing if
> > the align attribute isn't overridden which can be the case.
> >
> > This case should be removed from the CSS 2.1 test suite because it is
> > testing an assumption of how HR elements are handled in CSS which
> > isn't clear.
> 
> Where should the following <div> go in this example?
> 
> div
> {
> border: 1px inset;
> margin-left: 0px;
> width: 33%;
> }
> 
> <body>
>  <div></div>
> </body>

The div should be aligned left.

> Now, why should it be any different for <hr> then?

The HR may be aligned left it may be aligned center CSS doesn't say how you override HTML attributes in all cases. And it doesn't in this specific case.

Section 6.4.4 states that presentational attributes "may" be overridden by CSS but it doesn't say that they have to for every case.

After rereading section 6.4.4 I am even more convinced that this case is invalid as it stands. At the very least this case should have a "may" flag and less strict pass conditions to allow it to pass if the HR is centered or left aligned.

--
Thanks,
Arron Eicholz
Received on Tuesday, 11 January 2011 01:52:25 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 01:52:37 GMT