On 2.7.2013 18:21, Bronislav Klučka wrote:
On 2.7.2013 18:03, Tab Atkins Jr. wrote:
On Tue, Jul 2, 2013 at 8:52 AM, Bronislav Klučka
<[email protected]> wrote:
On 2.7.2013 17:28, Tab Atkins Jr. wrote:
On Tue, Jul 2, 2013 at 6:32 AM, Bronislav Klučka
<[email protected]> wrote:
2/ change of part attribute from DOMString to DOMTokenList
This sounds all right. part='' is already class-like, since multiple
elements can have the same part='' value. The example at your page is
pretty compelling about this ability's usage. I guess ::part() would
also expand to taking a list of idents.
Why would it? We have established convention for AND operator
.class1.class2
would became
::part(node-checked)::part(node-selected)
and for OR operator
.class1, .class2
would became
::part(node-checked), ::part(node-selected)
:matches(.class1, .class2)
would became
:matches(::part(node-checked), ::part(node-selected))
Oh, no no no. ::part() is not a pseudo-class, it's a pseudo-element -
it points to a brand new element, rather than filtering the one you've
got. The fact that part='' is acting like class='' notwithstanding,
using ::part() like would be an abuse of the syntax. If we want to
support this, it has to be through something like "::part(node-checked
node-selected)".
As an example of why violating the syntax model is a bad idea, this
directly conflicts with your desire to surface the ::part()s of nested
components - the thing that exposes them might be exposed as a
::part() as well, so you need to be able to chain off of an existing
::part(), like "x-video::part(controls)::part(play-button)" (assuming
the controls were actually implemented by another component nested
inside the <x-video> shadow tree).
~TJ
And back to
x-video::part(controls)::part(play-button)
example
how it would be different from
x-video ::part(controls) ::part(play-button)
or this wouldn't be possible? the only possibilities being
::part(play-button)
or
::part(controls)::part(play-button)
or
x-video::part(controls)::part(play-button)
Brona
I do not want to spam this topic so just last thought on pseudo-elements
and custom pseudo elements (parts), it's more generic issue (CSS
selector syntax)
the no-space syntax can work when there is only one pseudo-element and
usually the last one
p::first-letter - makes sense
thou as an "element:: it would be better to for something like
p ::first-letter or p > ::first-letter not to target first letters in
SPANs in P..
because its element within other element... not a filter
but when we start to nest and go more complex it becomes really strange
consider chessboard
------------------------------------------
with regular HTML+CSS one would go for something like
table td { background: silver; }
table tr:nth-of-child(2n + 1) td:nth-of-child(2n),
table tr:nth-of-child(2n) td:nth-of-child(2n + 1) { background: black; }
------------------------------------------
my way (wrong way)
chessboard ::part(cell) { background: silver; }
chessboard ::part(row):nth-of-child(2n + 1) ::part(cell):nth-of-child(2n),
chessboard ::part(row):nth-of-child(2n) ::part(cell):nth-of-child(2n +
1) { background: black; }
nesting working as usual (no change there), replacing TR and TD with
custom counterparts - intuitive, easy
------------------------------------------
correct way
chessboard::part(cell) { background: silver; }
chessboard::part(row):nth-of-child(2n + 1)::part(cell):nth-of-child(2n),
chessboard::part(row):nth-of-child(2n)::part(cell):nth-of-child(2n + 1)
{ background: black; }
mixing of pseudo classes and pseudo elements into one strange selector
one have to carefully read to separate parts, what is pseudo element,
what is pseudo class.
------------------------------------------
the fact is, that no space creates filtering and space created nesting
is throughout the CSS, regardless of selector (tag, class, id,
attrribute), with this only exception. pseudo element is not actually
filter on set of parents, but nested parts of all parents
p ::part(this1) + ::part(this2) makes sense and only one sense
p::part(this1) + p::part(this2) is confusing
as I wrote above, nesting several pseudo elements, allowing complex
selectors makes this a lot more confusing.
Brona