- From: Gérard Talbot <www-style@gtalbot.org>
- Date: Sat, 05 Nov 2016 17:47:51 -0400
- To: scratch65535@att.net
- Cc: Oriol Bugzilla <oriol-bugzilla@hotmail.com>, W3C www-style mailing list <www-style@w3.org>
Le 2016-11-04 14:49, Oriol Bugzilla a écrit :
> - everything would be what's now called an "inline" element, and
> flow with the text unless disrupted by a <br> or similar. There
> would be no "natural" block elements, though "display:block"
> could be a way to generalise a <br>.
Oriol Bugzilla answered you correctly on this.
> - there would be no privileged styling. Just as a function call
> is equal to inline code, a class= would have the same precedence
> as a style=.
It does not right now. The correct usage for class attribute is to style
a group of elements which have a meaning, some kind of logic inside the
webpage designer. An inline style is (should be!) for an unique element.
Therefore, an inline style should be more specific than a class.
"
count 1 if the declaration is from is a 'style' attribute rather than a
rule with a selector, 0 otherwise (= a) (In HTML, values of an element's
"style" attribute are style sheet rules. These rules have no selectors,
so a=1, b=0, c=0, and d=0.)
(...)
count the number of other attributes and pseudo-classes in the selector
(= c)
"
CSS 2.x, section 6.4.3 Calculating a selector's specificity
https://www.w3.org/TR/CSS21/cascade.html#specificity
https://www.w3.org/TR/CSS22/cascade.html#specificity
When calculating specificity, an inline style attribute will have
precedence over a class attribute.
Eg:
div.test {color: red;}
...
<div style="color: green;" class="test">Test passes if this text is
green.</div>
> Where they appear at the same level, the last one
> seen prevails (i.e., the reading direction of the human language
> breaks any ties).
I am not sure what you mean here. If we are talking of the same CSS
property and same specificity, then the last one in code order wins:
"
Finally, sort by order specified: if two declarations have the same
weight, origin and specificity, the latter specified wins. Declarations
in imported style sheets are considered to be before any declarations in
the style sheet itself.
"
CSS 2.x, section 6.4.1 Cascading order
https://www.w3.org/TR/CSS21/cascade.html#cascading-order
https://www.w3.org/TR/CSS22/cascade.html#cascading-order
Eg:
http://test.csswg.org/suites/css2.1/nightly-unstable/html4/sort-by-order-001.htm
> - attributes, unless set/cleared within the element by a style=
> or class=, would be inherited from the nearest enclosing element.
This is already the case for inheritable properties, for properties that
are inherited by default. What Oriol Bugzilla answered you is correct.
> a <div> inside a <td> would inherit from the <td>, including
> those attributes inherited by the <td> from the <tr>, the <table>
> and all the way up. (...)
> the <div> in the example could set/clear its own value for
> border. If it didn't, it would inherit from the <td> if the <td>
> set/cleared the border attribute, or from the <table> if the
> table did so, and so on all the way up to the <body>
All of the border properties are not inherited by default. See the
"Inherited?" column in this page:
https://www.w3.org/TR/CSS21/propidx.html
What you advocate is, in my opinion, not suitable. Some properties (like
border-style, border-width, border-color, etc...) should not be
inherited by default.
> - all styling attributes in HTML 4.* would be afforded PCP-CSS
> equivalents.
HTML 4.* styling attributes are already although it must be emphasized
here that the specificity of HTML 4.* attributes is zero.
"
The UA may choose to honor presentational attributes in an HTML source
document. If so, these attributes are translated to the corresponding
CSS rules with specificity equal to 0, and are treated as if they were
inserted at the start of the author style sheet. They may therefore be
overridden by subsequent style sheet rules. (...)
"
CSS 2.x, section 6.4.4 Precedence of non-CSS presentational hints
https://www.w3.org/TR/CSS21/cascade.html#preshint
https://www.w3.org/TR/CSS22/cascade.html#preshint
> Thus instead of "margin:auto" there would be a
> "center" attribute because any graphic designer knows what
> "center" means
Center is always related to some kind of reference point. When a graphic
designer wants to center an element inside another element, then both
elements must be defined and a specific logic must also defined and be
used depending on various conditions.
If your graphic designer wants to center an absolutely positioned
("position: absolute") element inside another element, then he will have
to use precise code. And the code and the logic will be different if the
enclosing element is itself positioned or not, if the enclosing element
has horizontal padding or not, if the horizontal padding is symetrical
or not, etc..
If your graphic designer wants to center a statically positioned
("position: static") element inside another element, then he will have
to use precise code and different code.
If your graphic designer wants to center an inline ("display: inline")
element inside another element, then he will have to use precise code
and different code.
If your graphic designer wants to center a block box ("display: block")
element inside another element, then he will have to use precise code
and different code.
Eg:
CSS Horizontal alignment:
when to use margin-left, margin-right and when to use text-align
http://www.gtalbot.org/NvuSection/NvuWebDesignTips/HorizontalAlignment.html
If your graphic designer wants to center an image in the background of
another element, then he will have to use precise code.
"background-position: center" is unique in that it just does not center
an image but it centers the center of such image in the center of
another element, and this, both horizontally and vertically. On the
other hand, if you do "left: 50%; top: 50%", then you will only center
*_the left and top edges_* of the element at the center of the padding
box of its containing block and *_not the center_* of the element.
Eg:
Set Blue box's position to relative, then press OK and then set Yellow
box's position to absolute, set Yellow box's Left to 50%, then press OK,
in this page
http://www.gtalbot.org/DHTMLSection/Positioning.html
and you will understand what I mean. You would not get an equivalent
result with an image that is styled with "background-position: 50%"
which is equivalent to "background-position: center".
> while "margin:auto" is a total mystery to anyone
> who hasn't looked it up and even to some who have. Practitioners
> should not have to look things up unless there is no reasonable
> alternative.
"margin: auto" can be hard to understand if and when a specification
lacks good, useful, helpful, interactive examples, judicious schemas,
illustrations. "margin: auto" can be hard to use if there are no good
tutorials on the web about its appropriate usage.
> Similarly, "element-spacing" (or "cell-spacing", or
> both) rather than "border-spacing" because one might very well
> want spacing between elements even without wanting or having
> borders.
Just consider that padding or margin (it depends on the design and
elements involved) is spacing between elements that have no borders
then.
Most web designer people on the web do not rely on inheritance, probably
because they are not aware of it. This flaw leads them to over-declare,
over-define, over-style, over-specify and over-redefine declarations in
their style sheets.
Most web designer people on the web do not count on and rely on user
agent style sheet rules because they do not understand how the cascade
works; and so, many of them use css resets to "zero" many properties
with the universal selector... a grave error in my opinion. 10 years
ago, it made sense to css reset *_a few_* properties of *_a few_*
elements because browser manufacturers were not trying to communicate
with each other and reach agreements for the benefits of the web but
that has changed.
Most web designer people on the web have problems with use of margin
because margin collapsing is more difficult to understand. And a
minority of them abuse "position: absolute" and/or still add dozens or
hundreds of <br> and in order to finely control positions of
elements in their pages.
Overall, all of this creates bloated CSS code (it's not rare to see
several style sheets applying to a webpage with hundreds of rules in
minified style sheets) that eventually does not even work as intended as
soon as the visitor has some specific viewport and some accessibility
requirements. CSS was originally designed, among other design principles
and goals, to reduce code, to reuse code and simplify maintenance
without excluding anyone or any media: I do not see this on the web.
Gérard
Received on Saturday, 5 November 2016 21:48:29 UTC