- From: Anton Prowse <prowse@moonhenge.net>
- Date: Tue, 27 Apr 2010 22:37:59 +0200
- To: "www-style@w3.org" <www-style@w3.org>
- CC: Colt Antonio Pini <Colt.Pini@nau.edu>
In an attempt to make this whole thing a little clearer for Colt, who,
like many authors, might not be too familiar with the innards of CSS,
here's a quick summary (and I hope and expect that someone will correct
me if I end up being misleading or incorrect!):
The HTML language wants some things (such as headings and paragraphs) to
behave like chunks stacking vertically down the page; it uses the term
"block-level" to describe them. It wants other things (such as text) to
flow horizontally along the page; it uses the term "inline-level" to
describe them.
CSS wants to take responsibility for the styling of HTML, leaving HTML
to merely describe the semantics ("meaning") of the elements. Authors
were very much accustomed to the behaviour of the block-level and
inline-level things already specified by HTML, and so it was natural
that CSS needed to be able to describe these two behaviours itself.
Hence along came display:block and display:inline, which can be applied
to elements as the author sees fit.
CSS defines an "initial" value for every property, including the
'display' property, which is typically used for any document element
which didn't have a value for that property explicitly specified by the
author. There can only be one initial value of each property, and
interestingly the initial value of the 'display' property is "inline",
and so, if there were no more to it than this, everything that CSS
controlled would flow-and-wrap like text unless the author specified
otherwise.
Now, authors don't want to have to specify everything! And CSS can't
turn to the document language for hints about which elements should have
which behaviour for the unspecified things, since it is designed to not
be tied to a particular document language(*) (Mozilla Firefox uses a
non-HTML language to describe its user interface and uses CSS to style
it, for example). Thus, by necessity, CSS knows or cares nothing about
whether HTML specifies that an element known as P or H1 is defined to be
"block-level".
Instead, User Agent stylesheets are used to provide sensible starting
values for the various elements in the document language that the User
Agent deals with. For example, all mainstream HTML browsers internally
use either a real CSS stylesheet (or some other internal thing which
gives the end appearance of using one), and they invariably give all P
elements display:block and all SPAN elements display:inline, thus
conforming to authors' expectations about how those elements should
behave "by default".
Colt's IDE is flawed in its approach, blindly switching from
display:none to display:inline, which prompted his idea about returning
to the "default" value. But what does that mean? The User Agent
stylesheet value could be interesting, as Aryeh suggested. But maybe
Colt was more interested in "the previous value before he changed it"
(which was what Marcus and Boris were discussing), or something else.
(The "initial" value of a property is a red herring, as Boris pointed
out). Hence Boris' counter-question requesting clarification.
Cheers,
Anton Prowse
http://dev.moonhenge.net
[1]
Received on Tuesday, 27 April 2010 20:38:58 UTC