[CSSWG] Minutes Tucson F2F 2013-02-04 Monday Afternoon II: Backgrounds and Borders, Placeholder Styling

Backgrounds and Borders
-----------------------

   - Need more tests
   - RESOLVED: Drop 'space' from 'border-image-repeat' since not implemented
   - RESOLVED: move box-decoration-break from css3-background to fragmentation

Placeholder Styling
-------------------

   Discussed use cases and rationale for ::placeholder pseudo-element vs. :placeholder
   pseudo-class. Need for pseudo-element seems to be largely driven by the need
   to style the text color with 'opacity' so as to make it "fade" regardless of
   the input's color scheme. Pseudo-class allows styling the entire input element
   in response to the placeholder's visibility.

   Discussion points included:
     - pseudo-class vs. pseudo-element vs. both vs. reusing ::value pseudo-element
     - reusing SVG's 'fill-opacity' to address fading

====== Full minutes below ======

Backgrounds and Borders
-----------------------

   Peter: Where are we, and what do we need to do to move forward?
   dbaron: Also need more tests?

   fantasai: A handful of open issues.
   fantasai: One is on clarifying how spread works
   fantasai: I think mostly wording, but might be functionality once we
             figure out what's going on.

   <fantasai> http://dev.w3.org/csswg/css3-background/#changes-2012
   fantasai: There are changes since last CR that we resolved on.
   fantasai: So we'll need to republish LC once last set of clarifications
             goes in
   fantasai: I think that's maybe a day's work.
   fantasai: I think we're waiting for edits.
   fantasai: And yeah, we need more tests.

   Peter: Will Mozilla tests give us good enough coverage.
   dbaron: Probably not
   fantasai: Should get test coverage report for June and see where things
             are missing.
   fantasai: And get CR published for the June F2F.
   fantasai: ... a good target.
   fantasai: I think mainly a clarification about the spread radius.
             smfr, Bert and I will talk at one of the breaks.

   Bert: So there will be some tests coming in the
   Peter: ... the next month
   Bert: ... but those still won't give complete coverage.
   fantasai: That will probably get us to halfway on the test suite.

   Peter: Do other vendors (IE, WebKit) have tests?
   Rossen: [inaudible]
   smfr: probably have some; don't know what state they're in.  Some active
         implementation work on newer properties... maybe can get tests out
         of that.
   fantasai: Can you get the tests in reftest format?

   Bert: Apart from Opera, any implementations of
         background-repeat: spread | stretch ?
   fantasai: there's a 'space' value, not 'stretch'.

   fantasai: If we want to be consistent with flexbox, it should be space-between
   fantasai: Since flexbox led to 3 concepts of spacing (no space on ends,
             half-space on ends, full space on ends)
   fantasai: so we had to come up with keywords to distinguish; ideally
             B&B would be consistent with that
   Rossen: I don't think IE implements background-image: space
   dbaron: I think Gecko implements border-image-repeat: space

   fantasai: the option we should have put in spec for border-image is the
             one we didn't include in flexbox
   fantasai (responding to dbaron): border-image-repeat: space is no space
             at ends, but should be full space at ends
   Peter: do we want to change this?
   fantasai: on the plus side, we don't need to rename anything, we can
             just add new values
   Peter: If we're in CR, should we just drop and move to level 4?
   dbaron: I'd be in favor of dropping
   fantasai: I'd be in favor of dropping; then we can add all 3 spacing
             variants in level 4.

   Peter: anything else to shift?
   fantasai: Put box-decoration-break in fragmentation?

   dbaron: Level 4 could just be level 3 plus all the things we just took
           out of it.
   fantasai: I don't think level 4 is that far away.
   Peter: objections to removing?
   dbaron: background-repeat or border-image-repeat?
   dbaron: I think border-image-repeat: space probably interoperable
   fantasai: I think if it's in border it should stay in background
   dbaron: I don't see why.
   smfr: I don't think WebKit has space for border-image-repeat
   dbaron: Sorry, I was getting space and round mixed up
   dbaron: So I'm ok with dropping space from both.
   dbaron: We do stretch, repeat, and round for border-image-repeat.
   RESOLVED: drop 'space' from background-repeat and border-image-repeat
             in level 3 of backgrounds and borders

   fantasai: The next question is do we want to shift box-decoration-break
             to fragmentation?
   Bert: already marked at-risk
   RESOLVED: move box-decoration-break from css3-background to fragmentation

Topic: figuring out next topic
Peter: viewport units?
resolved last week
Peter: overflow?
dbaron: not ready
Peter: placeholder styling?

Placeholder Styling
-------------------
Scribe: fantasai

   fantasai: Seemed from the last discussion that pseudo-class was better
             option except for the one problem that you can't style the
             text with opacity
   fantasai: So makes sense to me to define the pseudo-class, and address
             opacity generally
   dbaron: I think it would be useful generally to be able to style the
           contents of an input
   Tantek: That's ::value from the old UI spec. Let's just use that.
   dbaron: It's not clear from the spec that ::value applies to input elements
   smfr: So pseudo-class applies to input element when it is showing placeholder
         text?
   smfr: So as soon as you click into it, and the placeholder text disappears,
         it no longer matches?
   Tab: If that's how the UI works, then yes
   plinss: Sounds like we're not going to do a pseudo-element, use pseudo-class
           and fix ::value?

   http://wiki.csswg.org/ideas/placeholder-styling
   Tab: sylvain added #6, which doesn't track the HTML name
   fantasai: I don't see a need to mismatch the name...
   <tantek> see also: https://bugzilla.mozilla.org/show_bug.cgi?id=457801
   <tantek> see also: https://developer.mozilla.org/en-US/docs/CSS/:-moz-placeholder

   TabAtkins: So question is what to do for the full solution
   fantasai: 3 + 5 seem useful to me
   fantasai: If there's other reasons to style the value, other than opacity,
             then we should have ::value
   fantasai: There's definitely other reasons to manage text opacity independently

   TabAtkins: Why did dbaron want ::value
   dbaron: Specifying backgrounds and borders turns off native theming in many
           cases, but it might be useful to specify backgrounds without turning
           off appearance
   dbaron: Would also rather solve this problem without a big project like #5
           (applying fill-opacity to all text)
   <dbaron> Tab: fill is complicated because of images; stroke is complicated
            in general
   fantasai: #5, just doing fill-opacity, doesn't seem more complicated (in
             fact seems less complicated) than adding a pseudo-element.
   fantasai: just multiply text color by that opacity
   dbaron: Concerned about Web compatibility
   ...

   smfr: Placeholder pseudo-class seems to blur styling the placeholder text
         with styling the value of the property
   smfr: Suppose you style the placeholder with a larger font size. Does
         the input shrink when you click to type into the input?
   tantek: An analogy to look at is styling ::first-line
   * fantasai doesn't get that
   smfr: I prefer to think of placeholder content as a pseudo-element.
         It sort of hovers over the top. I think that's how we implement it,
         too.
   smfr: So solution that uses pseudo-class to add fill-opacity doesn't seem
         quite right to me.
   plinss: Are there arguments in favor of pseudo-class over just
           pseudo-element?
   TabAtkins: pseudo-class is strictly more powerful
   TabAtkins: Can do other styling based on whether placeholder text is
              present, styling of the input not just its placeholder text
   <florian> From the bits I get via IRC, it seems to me that the combination
             of a pseudo class and ::value is good. generic and powerful.

   SimonSapin: Can't use :empty because input is always empty in the DOM.
   <dbaron> my old pseudo-attributes proposal:
            http://lists.w3.org/Archives/Public/www-style/2008Oct/0144.html

   smfr: I'm imagining a UA that wants to show placeholder even while you
         are typing
   fantasai: Might want to show it as a tooltip, even while you are typing
             a value
   fantasai: Seems to me that the pseudo-element better reflects the structure
             of what's going on
   fantasai: [summarizing smfr] the UA may want to display placeholder text
             in some way (off to the side, tooltip, etc.) simultaneous with
             a partially user entered input text value
   fantasai: In this case, you really don't want to be styling the input,
             you want to style specifically the placeholder text.
   SimonSapin: So, do we want to have separate pseudo-elements for the value
               and for the placeholder?
   ...
   dbaron: You wouldn't want the same style for a placeholder text displayed
           inline in the input vs. as a tooltip
   tantek: Are there cases where the placeholder is shown together with the
           value?
   fantasai: I think I might have seen cases where it's treated almost as
             a background image, you type over it as you type
   fantasai: I can see that it would be very useful for things like dates,
             IP addresses, phone numbers, other formatted text where leaving
             the placeholder visible until you type that character
             shows you exactly what you need to type next.

   <SimonSapin> HTML spec: "The placeholder attribute represents a short
                hint (a word or short phrase) intended to aid the user
                with data entry when the control has no value."
   <SimonSapin> 
http://www.whatwg.org/specs/web-apps/current-work/multipage/common-input-element-attributes.html#the-placeholder-attribute
   <fantasai> SimonSapin, you could use it as a tooltip easily, and that
              would be reasonable per HTML spec. I also agree with dbaron
              that we shouldn't apply ::placeholder styling to it if it's
              rendered as a tooltip rather than a placeholder, though.
   SimonSapin: "when the control has no value"

   <florian> pseudo-class + ::value or pseudo-element alone both make sense
             to me. Pseudo-class + fill-opacity feels a bit contrived.
             It would work, but doesn't sound like attacking the problem
             with orthogonal concepts that are likely to play well with
             future ideas.
   Tantek: I think that's why ::value would make sense
   Tantek: But I also see author wanting to clearly target one (::value)
           or the other (::placeholder)
   smfr agrees with this logic
   Tantek: we could have both a pseudo-element and a pseudo-class for
           placeholders
   dbaron: I'm fine with that, though might want to change pseudo-class
           to something more complicated, like e.g. :has-placeholder
   * smfr suggests :placeholding
Scribe: dbaron
    Discussion leads to :placeholder and ::placeholder-text.
    dbaron suggests that maybe it should be ::placeholder with the pseudo-class
            having another name

   fantasai: could we call it :blank?
   fantasai: Should we have :blank in general for form controls
   Tantek: object to :blank, too close to :empty
   fantasai, Tab: :empty is useless
   <dbaron> my old pseudo-attributes proposal (again :-):
            http://lists.w3.org/Archives/Public/www-style/2008Oct/0144.html
   dbaron: UA's exact conditions for when it shows a placeholder may vary
           a bit
   fantasai: why would you want to style the input as a function of when
             there's a placholder?
   Tantek: maybe styling a background?
   smfr: maybe UA wants to show placeholder only before the user has
         interacted with a field
   Tantek: we talked about "dirtied"
   dbaron: Along these lines, :valid and :invalid turned out useless,
           we needed our own variants
   Tab: now in the spec, :user-error
   Tab: so probably good to tie definition to actual UA semantics; otherwise
        things will turn useless again
   fantasai notes that :valid / :invalid is still useful for querySelector.
   Tantek: resist the temptation to abstract things into a different concept
   smfr: also an area where UAs might want to innovate

   fantasai: :placeholding and ::placeholder?
   smfr: I like ::placeholder, maybe :showing-placeholder?
   Bert: Can't we use ::value?
   Bert: never shown at the same time
   Tantek: easier for authors to understand styling just the placeholder
           text rather than jumping through :placeholder::value abstraction
   Tantek: less powerful but easier to use
   <florian> I like :showing-placeholder::value

   Bert: how would I go about suppressing the placeholder as a user?
   various: ::placeholder { opacity: 0 }
   * Bert pondering input[placeholder]::placeholder {display: tooltip}

   Peter, Tab: should support 'content' in addition to the ::first-line
               properties to support content: attr(placeholder)
   Tantek: I think we have rough consensus on ::placeholder and an unnamed
           pseudo-class

   dbaron: To some degree I'm still with Bert, not convinced we shouldn't
           use ::value
   plinss: If your placeholder is opacity 50%, and it goes to 0, you want
           it to transition over 1s, so that they could be displayed at
           the same time over a transitional period
   <florian> Do we plan to add ::value later and for other reasons? Because
             if yes, I wonder what the difference would be between
             ::placeholder and :placeholding::value. would they conflict?
             Do different things?

   tantek: Liked :has-placeholder
   dbaron: That's ambiguous, might mean "would show a placeholder if empty"
   plinss: That's :can-haz-placeholder
   RESOLVED: Add ::placeholder pseudo-element
   RESOLVED: Add a :is-showing-a-placeholder pseudo-class with a better name?
   <sylvaing> browsers who also have a ::value pseudo are screwed

   szilles: When you use the a pseudo-class are the properties that would
            be used when the placeholder is shown
   <tantek> http://wiki.csswg.org/spec/css4-ui#more-selectors
   <tantek> ":placeholder pseudo-class for when an input element is in
             the state of showing its placeholder text"
   <sylvaing> I don't understand the use-case for a pseudo-element
   * fantasai is still not convinced the pseudo-element is necessary given
              the pseudo-class
   <florian> I agree with sylvain, and would like an explanation on how
             that interacts with ::value for browsers that have it.
   <tantek> sylvaing - opacity
   <sylvaing> tantek, opacity is not an argument at all. we've been over this
   <sylvaing> you don't add pseudo-elements to work around a property
   <fantasai> florian, ::value styles the actual value. ::value does not
              apply to the placeholder text.
   <florian> fantasai, so what does :placeholding::value style? nothing?
   <fantasai> right
   <tantek> So it makes more sense to put the longer name on the pseudo-element

   Tantek: I think we should give the good name to the pseudo-class.
   Tantek: So :placeholder and ::placeholder-value
   * fantasai disagrees
   <tantek> and reserve the more generic name for the state of showing the
            placeholder
   <tantek> :placeholder

   <sylvaing> We can't have ::value and ::placeholder. they are the same
              thing in a different state.
   <fantasai> sylvaing, we're arguing that they're not
   <tantek> sylvaing - you missed the reason plinss gave above
   <tantek> you may want to transition them separately
   <fantasai> sylvaing, that in some cases it could make sense to show both
              simultaneously
   * stearns notes there's a placeholder attribute in HTML, which makes me
             think ::placeholder is better than ::value for this case
   <sylvaing> that is a use-case; but it implies other things e.g. these
              things always have the same size/position by default
   <sylvaing> you don't want authors to have to position/size two things
              every time they want a nice fade

   fantasai: So the reason I don't think the pseudo-class should be placeholder,
             and that the pseudo-element should be placeholder, is that the
             placeholder is a bunch of text; the input element is showing a
             placeholder but it is not a placeholder.
   Tab: I think that's overthinking the issue.
   Tantek: I think if you want to look at the name options in context.
   Tantek: I think :placeholder and ::placeholder-value is the least bad
           naming option.
   SteveZ: I think we need a set of name candidates, but shouldn't bikeshed here.
   Tantek: I think we just need to pick a set of names.
   Tab: I'd like to pick names today.
   <florian> I am with fantasai, placeholder to me can only be the name of
             the pseudo element
   fantasai: I don't want people to be confused into thinking that they're
             styling the placeholder when styling the input element.
   fantasai: ::placeholder and :showing-placeholder
   <florian> a bit verbose, but otherwise I like that
   Tantek: we also have :autofill that Mozilla and WebKit have both implemented
   Tantek: I think we have direction of simpler, shorter, thing being the
           pseudo class
   dbaron: Gecko has no auto-fill pseudo class
   <tantek> sorry - I misspoke - I assumed the bugs had been fixed/implemented
   <tantek> https://bugzilla.mozilla.org/show_bug.cgi?id=740979 and
            https://bugs.webkit.org/show_bug.cgi?id=66032

   * fantasai thinks we should break the topic and come back to it later
              when people have had some time to think
   <sylvaing> I think this is a poor decision. this shouldn't be designed
              in a one-hour meeting.

   Bert: If I use attr() function, take value of attribute, and put it somewhere,
         would the input element be in its showing-placeholder state?
   dbaron: no, only if it's showing the placeholder as a function of its
           rules for showing placeholders
   Tab: could do ... yourself using the styling
   Bert: assuming we generalize content property on pseudo-element to be
         empty, would it then be showing placeholder text?

   * fantasai ponders the situation of showing both value and placeholder
              simultaneously -- would :placeholder give appropriate styling
              then?
   <tantek> re: showing both simultaneously - that's an effect of a transition,
            not a state overlap
   <SimonSapin> glazou: ::placeholder and :placeholding
   <tantek> "placeholding" sounds awkward as a state
   * florian is not too sure about how transition works, but wonders why
             a transition on :placeholding::value {opacity:0} wouldn't
             allow the crossfade as well as the pseudo element

   fantasai: I think we need distinguish between placeholder attribute and
             idea of displaying placeholder text.
   fantasai: So the UA is capable of doing thing where it shows some kind
             of Ghost text where it helps user figure out what to type
ScribeNick: dbaron
   fantasai: placeholder attribute is one thing intended to be used in this way
   Tantek: I disagree on basis of HTML spec
   fantasai: but if you display in some other way it wouldn't be triggering
             placeholder pseudo-element... might trigger tooltip pseudo-element,
             but would be placeholder attribute's value showing up in some
             other pseudo-element
   SteveZ: Wouldn't that give me the way to do what smfr and I want to do
           by leaving the text there and absposing it so it wouldn't disappear?
   Tantek: I think you're making up a new feature.
   Tantek: As defined in HTML, what you're describing is not that.
   fantasai: Doesn't require it to show up in the input element, just says
             it's a hint.
   fantasai: Doesn't say it has to be shown inside
   Tantek: overlap case of showing up when you're typing is outside bounds
           of html definition
   Tantek: html definition reflects existing interoperable practice and we
           should make that work before doing other stuff
   SimonSapin: Steve, you can always use data-* attributes and select on them

   dbaron: do we need to update the resolution?
   Tantek: I object to the resolution from 15 minutes ago.
   RESOLVED: previous resolution-pair possibly retracted, discussion
             to be continued tomorrow
   Tab: Tomorrow want to get something somebody can *implement*
   <sylvaing> well, we've already implemented something....:)
   Tab: And then not mess with it anymore
   <sylvaing> Because discussions driven by arbitrary deadlines never need
              re-visiting?
   * florian thinks it is worth having a concrete proposal on the table,
             even if it is not set it stone, so that we can go home and
             think carefully whether it works, rather than go home and
             invent 12 different alternative ways to solve the same problem,
             and then try to figure out which one to keep
   <sylvaing> florian, we already have concrete proposals. some of them are
              even implemented. last, i don't understand the need to rush this.
              confusion and lack of consensus are not good reasons to speed up
   <florian> sylvaing, Point taken. It is a bit harder to read the mood of
             the wg via irc, so I'll use that as an excuse.

   <fantasai> TabAtkins, see also http://lists.w3.org/Archives/Public/www-style/2008Mar/0308.html

Peter: break until 4pm
   * florian wishes he was in Tucson

-florian

Backgrounds and Borders Revisited
---------------------------------
Scribe: TabAtkins

   ScribeNick: TabAtkins
   Rossen: We resolved to drop background-repeat:space from level 3.
   Rossen: But that's something that IE and Opera actually support.
   Rossen: I was looking at border-image-repeat, which we don't support.
   Rossen: So I'd like to separate the issue.  I'm okay with dropping the
           border-image-repeat, but not background-image-repeat.
   Bert: I think both of them do "the right thing" - the background is
         spaced to the edges, border-image is away from the edges.
         Both cases are "the right thing", but they're inconsistent.
   fantasai: That's probably alright.
   plinss: So do we still want to drop the border-image value?  Or mark
           it as at-risk?
   Bert: the more we keep, the better
   dbaron: the more we drop, the better
   Rossen: We have three impls, actually - webkit does background-repeat:space
           too.
   Rossen: If dropping it is done simply to move the spec forward, I'm for it.
   Rossen: But I don't see a reason to drop the already-implemented part.
   fantasai: We could mark it at-risk
   plinss: And put the reasons in the spec.
   RESOLVED: Keep background-repeat:space, drop border-image-repeat:space.

Placeholder Styling Continued
-----------------------------
Scribe: fantasai

   <fantasai> Topic: Tab Atkins presents fantasai's crazy proposal from the
              break wrt placeholder styling
   <tabatkins> s/crazy//
   TabAtkins: Idea was to do the placeholder pseudo-class, do fill-opacity,
              and ignore the rest of it for later
   TabAtkins: Those two would solve all the problems we have right now.

   dbaron: How do you just "do" fill-opacity?
   dbaron: One of the questions wrt fill-opacity is, if we eventually do
           fill and fill-opacity for text,
   dbaron: presumably there's some tradeoff where in some cases we do the
           color property, and others use text
   TabAtkins: No, we just always use 'fill', and 'fill' defaults to 'currentColor'.
              SVG is already OK with adding a UA style rule setting it to
              black for SVG elements.
   fantasai: It would default to black, but initial value would be currentColor.
   <stearns> if we do weird things for :placeholder pseudo-class, will there
             then be an expectation that this hack should work for other
             pseudo-classes?
   dbaron: we don't even know if the new inheriting behavior of currentColor
           is Web-compatible.
   TabAtkins: Could fix it in 'fill' in multiple ways. Could use 'auto'
              as the initial value. If necessary.
   TabAtkins: But don't have to worry about 'fill' right now. Just have to
              know there's a path forward. And deal with 'fill-opacity' now.

   dbaron: If we don't do that model, and we have a different one where
           using fill+fill-opacity in some cases and color in others...
   TabAtkins: Is there a reason to do that?
   dbaron: Are we sure we can do the other thing compatibly?
   dbaron: Two models for dealing with fallback
   dbaron: One is fill always works, but defaults to color.
   dbaron: other is fill has a "pass" value that says, don't do any filling,
           just use color like you used to.
   fantasai: Ah, and in that case 'fill-opacity' wouldn't work.
   SimonSapin: What's the difference?
   TabAtkins: First one could be incompatible with Web, while second is not.
              Second prevents you from using fill-opacity in general, because
              if you use pass value, it fill-opacity wouldn't apply.
   dbaron: Also kindof odd to have fill-opacity but not fill
   TabAtkins: But plan to add fill soon.
   dbaron: Don't think it's high enough priority
   TabAtkins: Ok...
   TabAtkins: [...]

   TabAtkins: Alternatively, add foreground-opacity, which does opacity
              for my contents but not for me.
   TabAtkins: Reasonable thing people have asked for.
   szilles: Doesn't that fall out of composition?
   SimonSapin: That's only for backgrounds.
   fantasai: Seems somewhat reasonable, but I would be less comfortable
             doing that with a week's notice than adding just fill-opacity....

   Bert: I'm not sure what I want, but going back a step, because we were
         talking about placeholder.
   Bert: The :placeholder idea seems bad idea to me UI-wise
   Bert: Either should leave it to UAs, or alternatively go all the way and
         give people alternative ways to show it
   Bert: Don't have control over tooltip styling either

   fantasai: Just to go back a bit, one of my concerns with having both
             pseudo-class and pseudo-element is that authors will be
             confused when to use which one and how they interact.
             Because when there's only one, the cascade is obvious,
             but when both are there, rules intended to style the
             placeholder could interact in unexpected ways depending on
             which selector was used.
   smfr: Why add fill-opacity, avoids pseudo-element?
   TabAtkins: That and, it's useful generally.
   [Explanation of why opacity is desired styling of placeholders:
    it preserves having contrast no matter which colors/backgrounds author
    chose, while dimming the contrast slightly to distinguish from actual
    value]

Received on Friday, 15 February 2013 01:06:08 UTC