[CSSWG] Minutes Telecon 2014-04-16
Dael Jackson <daelcss <at> gmail.com>
2014-04-17 00:41:49 GMT
Fallback for "ch"
- RESOLVED: Default for CH unit is 0.5EM
Add -x/-y longhands to background-* properties
- RESOLVED: background-position-x/-y, background-repeat-x/-y
approved for level 4 of backgrounds and borders.
- background-size-x/-y was also discussed, but didn't garner much
Image Orientation for Backgrounds
- RESOLVED: Make the image() function always respect EXIF
- The future of comma delimited lists in images was also raised,
but there was a feeling of unpreparedness, so discussion
will continue on the list.
Changing MediaQueryList to use events
- There were lots of questions about the implications of this
- The main issue was how a single event that would change multiple
items would be handled. TabAtkins will bring this item to
the mailing list for feedback.
Scrollbar Tracking Control
- TabAtkins presented the idea for being able to position the
scrollbar at a certain distance from the bottom once you
scroll to the bottom of the content.
- There was discussion about the use cases for a property like
this and the interplay between this proposed property and
- RESOLVED: Discussion continues over e-mail
- Deferred to next week
calc() pow operator
- The working group wasn't against adding a pow operator, but some
people didn't feel there were sufficient use cases. General
feeling was that this is something that can be done in the
future, but is not a priority.
====FULL MINUTES BELOW======
Philippe Le Hégaret
glazou: Let's get started.
glazou: plinss isn't going to be here today, so I'm chairing. Any
extra items? I saw TabAtkins's.
Extra Item: Fallback for "ch"
TabAtkins: The ex unit says that if font metrics are impossible
you can use a fallback, but ch doesn't have similar
TabAtkins: I just suggest we have similar wording that allows the
fallback of 0.5em in the exact same cases.
TabAtkins: Any objections?
glazou: I saw ChrisL say he's okay
glazou: Any other opinions? Objections?
glazou: No one cares?
<fantasai> seems fine to me
<dbaron> I wouldn't want this fallback to happen too often, but it
glazou: No objections?
SimonSapin: There was an IRC comment that said it would be easier
to just register not support the ch unit.
TabAtkins: That seems inconsistent with the ex unit.
SimonSapin: I don't really have an opinion.
TabAtkins: If it means a syntax error you won't know it's font
stuff after parsing time. If it's something else you'll
fail weird so it may as well be as close as possible.
glazou: Any obj?
RESOLVED: Default for CH unit is 0.5EM
Add -x/-y longhands to background-* properties
TabAtkins: So several browsers, webkit blink have supported
TabAtkins: There's been some debate on this but I believe the plan
on record is that we're going to add both variants of
names and have a mechanism to decide which.
TabAtkins: That allows us to add both background-position and
TabAtkins: So I think we should add because authors rely on it.
TabAtkins: I think it gets odd with size, but we can make it work.
I'm not sure if there are others that need to be split;
position, size and repeat.
dbaron: I'm definitely in favor of it for background-position, but
I'd like to see data on who supports the others,
especially size because of the difficulties with cover and
TabAtkins: I don't know if anyone does size, but webkit does
repeat with some odd work arounds. I'm not sure if
anyone else does, though.
MaRakow: For IE we support it with the value of repeat-x and
TabAtkins: They do background repeat property with those keywords?
MaRakow: We don't support the individual properties, just the one
property with those values .
<gregwhitworth> Yeah I'm testing background-position-x and that
doesn't work in IE.
<gregwhitworth> So webkit only.
koji: I think that possibly fantasai or someone from Mozilla was
especially opposed in the past.
fantasai: It was largely because concerns about interactions with
logical version of properties and if that's sorted, and
I think it might be, than there's not reason not to.
fantasai: It's a question of if this is compatible with start and
TabAtkins: Plan is to support background-position-inline and other
koji: We had to use adjust position?
TabAtkins: Right now position and repeat. Those are the two I'd
like resolution on today.
fantasai: I think dbaron wanted more data on repeat.
fantasai: Let's just position now
TabAtkins: He only asked who supported repeat.
dbaron: So what are the values of repeat x/y?
TabAtkins: yes/no/repeat and no-repeat
dbaron: I'm okay with position and repeat.
SimonSapin: I'd like a proposal on how we'll do logical directions.
fantasai: I think this should be B&B 4 along with the logical
TabAtkins: I don't want to delay to 4 since it's not real yet and
both these properties have been supported for a long
TabAtkins: Position definitely can get into 3's CR and repeat
could likely too.
dbaron: I'd rather not add to 3. We've done it too much.
krit: So if we do it in 3 it should be in version CSS Masking 1 as
fantasai: I think we should do this in 4 and people can support
fantasai: -x and -y have been around for a long time.
fantasai: We have a legacy prefix and clause.
TabAtkins: So add background position and background repeat -x/-y?
Bert: The reason to have these in the past was to quickly switch
background but now that we're using media fragments, do we
still need it?
* fantasai glazou, I have a follow-up to Bert's point
TabAtkins: No one supports media fragments yet.
dbaron: Gecko supports it.
<dbaron> ... or we're very close to it
TabAtkins: They're used commonly.
glazou: dbaron did you say Gecko supports?
dbaron: I'm not sure. We're close.
sgalineau: It'll be a while before people can depend on it.
fantasai: So one of the...this is different but related. In the
images 4 draft we have a function that takes comma
separated list, but no one supports it.
fantasai: But there were various reasons to support. We marked
comma separated as at-risk and I think we should drop
krit: Webkit, it is mostly the test suite that's missing.
TabAtkins: I can work on that now that I know it's a thing.
fantasai: The test suite for what?
TabAtkins: Image function.
fantasai: I still think we should push commas to level 4 and
figure out how it can interact.
TabAtkins: Can we defer since that's tangential?
TabAtkins: So from before, are there objections to background-
position and background-repeat -x/-y in Level 4?
fantasai: I'm okay if we add logical keywords at the same time so
we can make sure they work out correctly.
glazou: Sounds like a compromise
krit: I would like to have a follow-up resolution.
glazou: Any objection to setting -x/-y to background-position?
bert: I don't think we should add properties that make things
confusing for authors. They can use position already, so
unless there is a really strong use case, don't add more
glazou: I think browsers are implementing the longhands.
rossen: For the background-repeat we support repeat-x repeat-y
because we thought of those as mutually exclusive. What
would the both specify to repeat?
TabAtkins: That's a longstanding part of background. Those values
for position translate into longhand values.
TabAtkins: Background-repeat-x becomes background-repeat-x-repeat.
rossen: So when I spec that they both repeat, are you saying only
TabAtkins: That's the repeat value. It has four values, repeat on
Rossen_: Okay, than it's fine.
glazou: So any objection?
RESOLVED: background-position-x/-y, background-repeat-x/-y
approved for level 4 of backgrounds and borders.
krit: Should we also do this for masking level 1?
TabAtkins: I'm fine either way.
glazou: Is there a use case?
TabAtkins: I don't know
krit: There's prefixing so perhaps we need it for alignment
krit: It can wait for masking 2
<SimonSapin> background-repeat/position: also, resolved to add
logical directions at the same time
Image Orientation for Backgrounds
glazou: This is something Boris posted.
TabAtkins: I'd prefer for that to stay on list. Well, not talk
syntax now, but we can discuss ideas.
TabAtkins: Does anyone need refresher on the idea?
[general consensus of yes]
TabAtkins: If you're familiar with EXIF metadata, orientation can
be whatever and some cameras will record that.
TabAtkins: So later it can be displayed however you held your
TabAtkins: The web doesn't normally care, it just displays the
same as in image. This would allow you to display how
you took it.
TabAtkins: Boris brought up where people were asking to auto-apply
the rotation in the background. So the suggestion was
to add this to the image function either as auto or as
a keyword you can opt into.
ChrisL: I think option 2 is better, first because some cameras get
it wrong and second, because some viewers don't do it so
people manually rotate.
<gregwhitworth> Not to mention it's possibly creates a huge compat
dbaron: I actually disagree because in a vast majority of cases,
they want EXIF to be honored.
dbaron: If image always honors EXIF people will see it's wrong and
fix it first so then when we build new things we should
TabAtkins: If we do by default, should there be a way to turn it
ChrisL: There's lots of content such as JPEG where it is not
honored. So we'd change existing webpages.
dbaron: We're not changing existing webpages because it's only if
people use this new feature.
ChrisL: That's what I mean by opt-in.
dbaron: We want to say all the features of this new thing rotate.
<Bert> (url() continues to ignore EXIF, but image() honors it.
Subtle, but might just work...)
glazou: So the conclusion is this is a feature we want and want to
continue technical discussion on the ML?
TabAtkins: We may have resolved. I'm okay if image() should always
respect EXIF metadata.
* ChrisL yay go for a resolution
???[attributed to dbaron]: That's fine
<dbaron> that wasn't actually me, but I'm also fine with it
Bert: I think that's okay, given that we don't have tests for it
florian: As long as it's contained to image() it's fine.
RESOLVED: Make the image() function always respect EXIF
<sylvaing_> always or will we ever want an override in image()
fantasai: On that topic can we have the image() function drop
comma separation and decide if we want that level 4?
TabAtkins: I'm cool with that. I'd like fallback to
interoperability better so let's do that.
krit: Wait, then you can't extend image later and attach
mediaquery-like features like adding images.
krit: You can't do that later without commas.
TabAtkins: We're not removing commas, just the list feature. We're
recasting image() as a better url for images.
fantasai: We're dropping this feature (above), but keeping image
fragments and solid color images
krit: But not comma separated values, just one value, one string.
krit: That's a big step. Wasn't image supposed to allow fallback
fantasai: That's the intent, but we want to address it in level 4.
fantasai: You may want to change which image due to supported,
size of screen, and visibility and there's no coherent
fantasai: Since we have those requirements when we designed
fallback, we want to come up with a solution that makes
it work together.
fantasai: For now we know for sure we want EXIF metadata and solid
color images to work as well as mediaqueries.
fantasai: That's all straightforward and should stay in CR.
krit: Do we need to rush this decision or can we stay on the ML?
krit: You can get feedback so people that are interested can speak
TabAtkins: Are you implementing?
krit: No, I know there's a patch.
krit: In general I don't feel confident resolving. Can we talk
sgalineau: Quick question, if you want to override you'd have to
do it manually or is there override?
TabAtkins: Right now you'd have to do URL, but I'm fine with a
* fantasai override what?
* fantasai missed that
<SimonSapin> fantasai, EXIF orientation
* sylvaing_ override EXIF i.e. if you need to do that, do you use
url() or would we some day add a flag to image()
* sylvaing_ was clarifying the resolution which said image() would
*always* respect EXIF
* fantasai ah, right. :) Yeah, i think just tossing in an <angle>
into image() would do it
* sylvaing_ fantasai, an angle, really? So I could set 31.7deg?
there is a use-case for that?
<BradK> sylvaing: I also question the use case for angle (
something like [vertical | horizontal] seems better to me)
but that's a separate topic.
<sylvaing_> BradK: yes. my understanding is that there is at most
4 angles here so <angle> seems odd
* sylvaing_ actually, EXIF has 8 orientations but <angle> seems
even odder here:
* MaRakow sylvaing, agreed there doesn't seem to be a great use
case for arbitrary angles, but seems difficult to put
appropriate names on the orientations of an image where
you don't really know which way is up
<BradK> sylvaing: Spec has it rounding up to 90deg increments, but
even so, seems to rely on knowledge of content of whatever
page and image it is used on.
<sylvaing_> MaRakow: my initial suggestion was to have a flag that
says 'behave like url()'. Specifying an orientation is
* MaRakow ah, I see -- yeah, that sounds simpler
<sylvaing_> MaRakow: yeah, the idea was there is a feature of
image() you want to use but you want the EXIF metadata
ignored. not sure it matters. we'll see...
* krit TabAtkins just to make sure, it is not an existing patch
for WebKit that makes me careful on changing image()
without thinking about it more.
Changing MediaQueryList to use events
TabAtkins: The thing returned by the match function has a custom
fallback for when they stop matching.
TabAtkins: The suggestion is to switch to using the event listener.
TabAtkins: This is a very minor behavior change if you're
depending on specifics on how events vs callbacks are
TabAtkins: I suspect that's rare.
TabAtkins: The benefit is this makes us more standard event style
and reduces special case code.
TabAtkins: Boris said there's no code, but Elliott from Blink said
there's a lot of extra code to do this in Firefox,
Webkit and Blink
TabAtkins: We'd like to drop and use standard event process.
<dbaron> I don't know where this extra code in Firefox is.
florian: If we're starting from scratch, sure, but this has been
TabAtkins: You can move cleanly to the event-base except for a few
edge cases that are difficult anyway.
TabAtkins: Only change is timing and, if you register the same
function multiple times, if it gets called once or twice
florian: If it's that tiny, why is it so much code?
TabAtkins: Because it's re-implementation a portion of what we do
TabAtkins: With events we just do a few lines of hookup code which
TabAtkins: From the thread I don't believe there were strong
objections. Boris had minor objections because he said
it was easy in code, but Elliott pointed out it wasn't.
TabAtkins: Are there objections now?
dbaron: What are the rules?
TabAtkins: I don't know if current spec defines them, but event
dbaron: What does event spec define as?
TabAtkins: I don't know.
dbaron: I'd like to know before I agree.
dbaron: I want any added listeners to not effect...Like if you add
a new listener in the middle I want the event not to fire.
TabAtkins: Is that specific to mediaquery, or is this in general?
dbaron: I don't know.
dbaron: Part of the problem is you can fire the event on multiple
listeners so multiple MQ change as a result of same thing.
Event spec will define a single event, but not multiple.
TabAtkins: That's because it would be multiple callbacks.
dbaron: What we have to define is that a single thing causes
multiple things to change. The MQ change adds an event to
another event that changed and does that event happen if
it's fired later?
TabAtkins: It seems like you just want this to be well defined in
general, not just in this case.
dbaron: I think the problem is if we make the change we'd have to
define order. If you can define listeners that fire within
each other it matters what order they happen.
TabAtkins: And I think the callbacks don't handle order
dbaron: But the callbacks don't effect each other, at least not in
florian: Is that gecko specific? Because unless it's in spec we
have the same problem.
dbaron: So I guess I'm okay with it.
TabAtkins: I'll post to the thread to make sure we get some
discussion about that.
glazou: Okay. So discussion continues on ML
Scrollbar Tracking Control
TabAtkins: This is an issue that I've been trying to bring up for
TabAtkins: It would be convenient if CSS could declare that a
scrollbar in an element, once it's close to the bottom,
attaches to the bottom
TabAtkins: This is common in chat windows and things were you
continually add content to the bottom of the list.
TabAtkins: It's quite hard to get this to work well. Gmail has a
constant fight with the chat windows; getting them to
stick when the height can change unpredictably.
TabAtkins: So have something where if a user scrolls a certain
distance from the bottom it stays.
florian: Do we need a distance or can we say distance zero?
dbaron: I was trying to find my objections and I think I've found
dbaron: I think my biggest one is that I think it's not
particularly related to distance from the edge.
dbaron: It's more to which end the content should stick to no
matter where you are relative to the edge.
dbaron: There's cases where people will add to the top and you
want to maintain scroll relative to top such as with
dbaron: So you want to hold scroll close to bottom.
TabAtkins: Twitter adds content on both sides. So that would be if
you're sufficiently far from the content added so you
adjust your scroll so the content doesn't move.
florian: So you may not want to maintain because if you scroll up
to read more, you want to stay there unless you're at the
florian: I think I'm with TabAtkins, but with that user case.
TabAtkins: I think that's interesting and useful, but different.
I'd be willing to look into it.
<BradK> When you are at the bottom of twitter, you do NOT want to
stay at the bottom when new content is added to the bottom.
You want to stay on the tweet you are on.
dbaron: But I think what I'm objecting to is that it should be two
properties, not one.
TabAtkins: Can you elaborate?
dbaron: It's too long ago.
TabAtkins: Maybe it was semantic, where it should be about any
TabAtkins: That way you could add to either side and it would
TabAtkins: Is this something you'd like to discuss on thread?
dbaron: One this was which end the content was coming from and the
other was how different you are from the edge.
florian: I'm not sure that would work in twitter. Content can add
from both sides.
TabAtkins: If you're willing to discuss on the list, that's okay.
I've brought it up and got crickets and I want to make
dbaron: You should go ahead ... I don't have time to discuss it.
florian: If we get snapping to scroll would that fix it?
TabAtkins: Current proposal is that the user agent defines. There
may be cases where you want to say exactly how far you
are from edge.
florian: Where would you want to not be at the edge?
TabAtkins: For example, when I use IRC cloud it does only at edge
and it messes up because you can't scroll through the
edge. I'm not sure where the bug is, but you can be 2px
from the edge and can't get all down.
* sylvaing_ hasn't noticed that in Aurora fwiw.
* sylvaing_ uses IRCCloud.
* krit sylvaing_ me neither in Safari
* sylvaing_ agrees; hasn't seen it in Safari either
florian: But if you do scroll snapping, you can do it.
MaRakow: I think if you have multiple snap points and the content
changes enough you may snap to a point that's further
away and snap to the middle. But that would happen here
too if you can define multiple.
TabAtkins: This is just top, bottom, left, or right. And if you
define distance from edge you stay the same distance.
MaRakow: So this is on the scroller?
MaRakow: So when you're resizing and want to keep your content it
would be off?
TabAtkins: That's part encompassed by twitter case, but it's
beyond what I'm asking for. It's interesting, but
doesn't tie in.
florian: Your 2px thing sounds like a bug not a use case.
TabAtkins: Could be, but sometimes I don't scroll all the way down
and it doesn't recover.
* sylvaing_ thinks we should establish that this is a reproducible
cross-browser issue that derives from CSS
* sylvaing_ specifically, some simple repro of the Gmail chat
logic may help here...
florian: If you scroll close the the edge but not quite with this
new prop, the person that designed the thing with
incorporate scroll snapping, take you to the edge, and
have you stick there.
MaRakow: Also, I feel like this is similar to the use case for
keeping the same content in view while resizing
responsive web pages.
<dbaron> I think this design isn't great for extending to say
whether it's distance-from-top or distance-from-bottom
that you want to hold constant when the current scroll
position is in the middle
TabAtkins: I don't think this links to snapping. Because having
something that moves you all the way is sometimes
useful, sometimes annoying.
TabAtkins: They work well together, but shouldn't be tied together
glazou: So any objections to continuing discussion in email and,
once stable, TabAtkins requests an ED?
glazou: I think this is interesting and want to see a proposal.
TabAtkins: The proposal is in the e-mails, but we can discuss.
glazou: I'm going to contribute too. Let me think about it.
TabAtkins: Contribution is what I need
RESOLVED: Discussion continues over e-mail
glazou: Any remaining items that can be done in 4 minutes?
fantasai: There was no discussion on ML
TabAtkins: Yeah, not in 4 minutes
TabAtkins: I think the pow operator?
calc() pow operator
TabAtkins: So it was suggested to add pow operator to calc().
There's a unit as the base on one side and the exponent
on the other.
TabAtkins: Seems reasonable and no odd problems as long as we keep
the exponent non-negative.
TabAtkins: Only issues is precedence. You'd have to use
parenthesis for anything more than a single number.
TabAtkins: Presumably this is only when both are unit-less
TabAtkins: Given that we're not using unit algorithm both things
need to be a number, but you can multi by 1px to
convert to px.
fantasai: I missed the use case
glazou: Me too.
glazou: I wonder if it's worth the implementation. Of course the
browser vendors get final word.
TabAtkins: The use case was in the link. It's for mathematically
* dauwhe I'm skeptical about the use case
glazou: I have no real opinion. I think we can, but don't see the
TabAtkins: It's low value, but simple and does have cases.
glazou: If we follow that path we'll need sin/cos etc. because
that's what we do with complex animations.
glazou: I'm not sure if we want CSS to have a full calculator.
TabAtkins: I'm not sure it's slippery slope, but I can understand
it's not important enough.
fantasai: I think we don't have to address this. We can do
variables now so you can do variable constants. This can
be a preprocessor.
SimonSapin: Did I miss the use case?
TabAtkins: It's the link in the agenda.
glazou: I'm not hearing consensus. I think consensus is we can do
this in the future, but it's not high priority.
sylvaing_: I think the common opinion is we're unsure what it is
glazou: So I think we won't resolve for the time being.
glazou: So we're 2 minutes past the hour. The two remaining items
will be for next week. Talk to you next week!