[CSSWG] Minutes Paris F2F 2015-08-26 Part II: Animations, Scroll Snapping [css-animations] [css-snappoints]

Animations
----------

  - The group agreed that the work on exposing the Animations APIs
      should move from a delta spec to a real spec, but felt that
      the edits to Animations level 1 should be made first,
      especially as it would make backporting easier.
  - RESOLVED: Add birtles as editor to Animations pending him
              getting added to the working group

Scroll Snapping
---------------

  - fantasai and TabAtkins brought their proposal to re-think how
      the scroll-snap property works, especially in addressing what
      they do with oversized elements.
      - The proposal was that whenever you snap to an element and
          it's larger than the viewport in some axis, in the
          overflowing axis you then stop snapping to that element
          from now on and instead the edges become the new snap
          points.
          - This would also move the model of snap points from
              a point to point snap toward a box to box snap to
              accommodate more robust behavior.
      - There were questions about the functionality of snapping to
          an edge in regards to it causing problems for those using
          arrow keys when the edge is very close to the viewport,
          such as 1px away.
      - Several people indicated that they wanted to ensure the
          wording on this was loose enough that the UIs could do
          something smart.
  - There were several questions about the value and functionality
      of grouping and it was expressed that this was likely a level
      2 behavior.
  - The renaming proposal of changing scroll-snap-destination to
      target had people on both sides of the fence, but ultimately
      will remain named as-is.
  - MaRakow, fantasai, and TabAtkins decided they would discuss
      further and come back to the group with a list of needed
      resolutions now that the broad re-thinking had been explained.
      Originally this was to happen after the lunch break, but the
      group needed more time.

===== FULL MINUTES BELOW ======

  scribe: dael

Animations
==========

  plinss: Let's get started.
  birtles: The topic is CSS Animations level 2
  <birtles> https://rawgit.com/shans/csswg-drafts/animations-2/css-animations-2/Overview.html
  birtles: Most of you know animations as an API, but there's
           another part to web animations. How do things like
           repetition work? So CRR animations and transition are
           using the definitions from SVG on how they work. If they
           do that you can use the same API to inspect those.
  birtles: I think it both Chrome and FF have been working on moving
           to that code. If you're used to seeing some of that code,
           it's using the API. We'd like to expose it up, but we
           need a definitive way from CSS into that and the obvious
           place is Animations 2
  birtles: It exists as a delta spec to spec the cancellation event.
           Shane and I have looked to add the definitions of how CSS
           animations maps onto the other animations.
  birtles: I wanted to bring this up today to ask how we should
           proceed. I'm finding it difficult to handle as a delta
           spec. I'd like to drop in text to Animations that's
           covered by web animations. That's the initial topic and
           other people might have suggestions for Animations level
           2.

  dbaron: I think the work...I don't think rewriting on top of web
          animations will work as a delta spec, but I'm worried
          about starting it at this stage because there are a bunch
          of edits we need for level 1. If you're willing to
          backport that's fine, there will be more work.
  ChrisL: Short term it will be more work, but having a single
          source where it could be edited would make sense.
  birtles: I'd like to ship this and having the edits done in
           animations 1 is a blocker.

  fantasai: May I suggest you make the edits to animations 1?
  birtles: Okay? I should check the scope, but tentatively yes. I'm
           not a member of the WG.
  dino: Isn't there something about having animations 1 so far down
        in the rec track?
  dbaron: birtles is agreeing to help with the things that need to
          get done with Animations 1 so that we can get to
          Animations 2.
  fantasai: Who is the editor?
  dbaron: Me.

  RESOLVED: Add birtles as editor to Animations pending him getting
            added to the WG

  fantasai: dbaron is busy and since you're working on animations it
            makes sense that you can help move it along and that
            will help you.
  birtles: That's the main issue in regards to animations.
  shane: Do you want to talk about adding the animation composition
         properties?
  birtles: Not particularly. I was thinking of adding a property to
           that branch, but it's not a priority.
  plinss: That's it for animations?

Scroll Snapping
===============

  <TabAtkins> https://drafts.csswg.org/css-scroll-snap/
  [Archived copy:
https://lists.w3.org/Archives/Public/www-archive/2015Sep/att-0014/Overview.html
]
  TabAtkins: fantasai and I have been reviewing snap points recently.
             We have a few suggestions to go along with the scroll-
             snap property. One in particular we think is required.
             It's the handling of snapping elements when they're too
             large for the viewport.

Overlarge Snapped Elements
--------------------------

  [whiteboards]
  TabAtkins: If you have a viewport and the element is too large for
             the viewport and you center snap it, you have a problem.
             If you want you can drag over, but it will snap to the
             center or another point.
  Florian: And if it's a lot bigger you won't be able to scroll.
  TabAtkins: And arrows would be a problem too
  TabAtkins: This will happen all the time. I expect things like
             image galleries will be designed for a certain width
             and on a smaller screen you will have overflow. So it's
             problematic, common, and user-hostile.

  TabAtkins: We came up with a proposed behavior. Our proposal is,
             whenever you snap to an element and it's larger than
             the viewport in some axis, in the overflowing axis you
             then stop snapping to that element from now on. It
             sticks there and no longer tries to snap. The edges
             become the new snap points.
  TabAtkins: It will try and avoid escaping, but if you fling well
             past it will scroll off. You have to be a bit stickful (?),
             but we believe it's a fairly general user friendly
             behavior. This is similar to how existing apps work,
             like gallery on Android and Microsoft phones.
  TabAtkins: I think this is a fairly reasonable behavior and we
             should mandate this.

  fantasai: To do that, the spec needs to be working on the basis of
            snapping an area to a position in the viewport, i.e a box
            to a box as an alignment rather than a point to a point,
            because you don't know how big the area is for the points.
            So you specify not the points, but the box and the
            alignment of the box. You position the box.
  fantasai: You would say if you want the border box or margin box
            and if you need additional margin there an offset
            ability.
  TabAtkins: Though that's not strictly necessary to fix this. The
             minimum is a slight spec change and a behavioral change.
  fantasai: You'd still need to know what the box is.

  dino: I wasn't quite sure what fantasai said, but I think I
        understand enough to support what you're proposing that you
        snap to the edge when you overflow.
  TabAtkins: We are happy to look into alternates or refinements,
             but I think what we've described is a reasonable first
             cut.

  dino: Behaviorally, let's say you've got regular size elements and
        scroll the big one into view. You're on a normal element and
        you start scrolling into view, what happens when you get to
        it?
  TabAtkins: It should still do the normal snapping first. It seems
             to be reasonable and simple.
  hober: The implicit edges only activate after you snap.
  fantasai: [whiteboard]

  Florian: In general I agree with what you're trying to fix. I also
           agree with your proposal. The thing I'm wondering about
           is if this is the behavior we should spec, or if this is
           a reasonable behavior and they might find other ways to
           provide to move.
  fantasai: I think we can allow UA to innovate as long as they let
            the user get to each part of the content.
  TabAtkins: I think we should spec based on requirements and
             provide this as an example.

  MaRakow: The discussion we had last night was about trying to
           predict how it would feel. My experience is you can't
           tell if it feels natural until you spec it. In the
           stateful example it isn't intuitive in my experience. You
           snap to the center at a top level and snap to an
           individual and it's free panning. It's a good goal to say
           if content is too large find a smart way to show all the
           content. It's not clear this will solve every case.
  TabAtkins: I'd love to spend time to prototype, I didn't have time.
  TabAtkins: Are you comfortable with us drafting UA requirements
             for overlarge?
  MaRakow: We need to figure out how the phrase that. I think once
           we prototype we'll understand what those requirements
           need to be a bit more. There's a lot of ways to ensure
           all the content is viewable and I don't want to go too
           far without knowledge.
  dino: Like if you make it 1px smaller you need two swipes.
  fantasai: Once you'd swiped it's fine.
  TabAtkins: If it's huge you might need to swipe twice.
  dino: With the photo apps you can swipe to the edge and go to the
        edge.

  Florian: This concern about the ways you might interact is why I
           was suggesting loose phrasing about the UI. I think we
           need to change a bit the internal model so that you can
           work around and propose a UI.
  MaRakow: Your 1px example, swiping would take you out, but using
           arrows you might not get out. Prototyping would catch
           that. I like the goal to make large content easier.
  TabAtkins: I'd be happy to help draft some text that says you must
             allow the user to do the whole thing and maybe this as
             an example and we can revise as we find better ideas.
             Some sample that's better than nothing so you can see
             you can do it this way or something better.
  MaRakow: Let's start down that route.

  fantasai: Robert O'Callahan would like us to get through this
            sooner rather than later.
  TabAtkins: We have several other edits to the spec which can be
             built on top of the spec or a simplified version that
             address some use cases.
  fantasai: We'll go down the spec.

Overview
--------

  fantasai: Some of the use cases are in the scroll snapping. A key
            one is snap to the start or middle of each box. Those
            are two of the use cases and that's how it would look in
            our property [projector]
  fantasai: There's a snap area that tells you if you're snapping to
            the border or margin box with some offset.
  TabAtkins: So whenever you scroll through, our example snaps just
             before the bottom of the screen. This is similar to the
             spec where you define the viewport as just above the
             edge.
  Florian: Just a bit of bikeshedding, the snap area with a em,
           shouldn't it be a snap offset?
  fantasai: Yes, we should probably split scroll-snap-align's
            offsets into a separate property
  <fantasai> e.g. scroll-snap-margin

  TabAtkins: Here's a nice picture of it from the spec. The current
             spec does it via snapping two points together. It sets
             50% and 100px on the scrolling area, so slightly down
             and 50% 0 on the item so the center top aligns slightly
             down from the center.
  TabAtkins: Or property instead says you always scroll to the top
             and you'll treat the boxes as a little bigger. It's
             just two different ways of looking at the same model,
             but we feel the box based is more intuitive to the
             author.
  dino: So if you added your proposal to this, it would move the red
        x...
  TabAtkins: We talk about integrating in a bit.

  liam: So you only do snap points when the used is scrolling or
        dragging.
  TabAtkins: You do initially and then whenever there's an inertial
             scroll.
  MaRakow: The common case was if you have a view port that's sized
           like % as you resize the scroll. The size might change so
           you might see half a photo. The snap point isn't about
           the scroll, but a valid view.
  TabAtkins: The gravity well describes it well...in a mandatory you
             go all the way over to the next mandatory point. Which
             is does depends on how strongly your design requires
             the motion.
  fantasai: We had a scroll-snap-align property in the spec and a
            scroll-snap-area property.
  fantasai: We can have scroll-snap-box: [border-box|margin-box|]
            and scroll-snap-margin: [<length>|<percentage>]
  fantasai: scroll-snap-area says what box we are snapping
  fantasai: The align property says when am I snapped. What
            relationship of me to my viewport causes me to snap?
  fantasai: If you have center then the center is in the center of
            the box and that's a snapping position. It works kind of
            like background positioning.

  Florian: Does edges mean start and end?
  fantasai: Yes.
  MaRakow: We talked about that last night and the behaviors you
           would expect being directional.
  fantasai: We'll get to that in the use cases.

  hiroshi: Is it impossible to align to an arbitrary place?
  TabAtkins: The current, what's currently written it's impossible,
             but we were given decent use cases last night so it's
             fine and we should extend that.
  TabAtkins: We'll still want start and edges, but replace center
             with a position.
  TabAtkins: scroll-snap-align is scroll-snap-coordinate in the
             current spec.

  MaRakow: Before we move too far, the distinction between two
           points and one offset, if it's more natural for the
           offset to be one point or two and if it's more natural to
           distinguish from the edge or the top.
  fantasai: The other model is I want 100px of space between the
            viewport and the edge when I'm snapping.
  MaRakow: Where it's one offset, yes. The other case is when you
           have two complex things where you want to share a
           position. You have a bunch of cities on a map and those
           cities might not be the center, you want to snap to the
           center of the region and it's a more complex destination.
  TabAtkins: That's the distinction between 1d and 2d snapping.
  Florian: The map example, even if you're in 1d you may have
           overlays over the edge of the scroller. In the example
           you gave I agree it's more natural, but if you have an
           overlay over the scroller saying snap to after the
           overlay, you know the size of the overlay. Most of the
           time one thing is fine, but once you're dealing with
           overlay having multiple points.
  fantasai: So also having scroll-snap-padding on the scroller?
  Florian: Yes.
  MaRakow: You can have the single point or you can do the mental
           gymnastics.

  <leaverou> what happens when the elements are overlapping?

  Bert: Question on the edges. You could have a conflict where the
        two edges are close, to which do you snap?
  fantasai: Closest and if there's a tie, maybe the top one?
  Bert: I don't want it flipping.
  fantasai: Once you snap it's the nearest, so it wouldn't flip.
  MaRakow: There's a lot that goes into which you snap to, you might
           have velocity or weight. There's complex algorithm that
           the UA might want to use. In general that's why I phrased
           the spec in terms of here's a valid place to be.

  fantasai: Use case #2 is a group snapping one, we should save that
            for later.

2D vs 1D Snapping
-----------------

  TabAtkins: 2d snapping. We have two examples. One is a flow chart
             or a call graph, you have a bunch of boxes in a graph,
             it would be nice to end where something is aligned with
             the edge. To do that, our model is a type of
             scroll-snap-type: proximity and on each edge you do
             align edges.
  Florian: And you could do margin 10px for comfort.
  TabAtkins: Yeah.
  TabAtkins: This shows off how some of the simple point to point is
             insufficiently strong in some instances. This is edges
             of a box so you have relationship necessary to do
             something smart.
  TabAtkins: Example #2 is a map. You're looking at Google maps,
             when you fling to near a city, center the city and you
             just give each city a snap-align of center.
  TabAtkins: This example is similar the the example in the current
             spec.
  fantasai: The thing to distinguish when you're doing align to
            edges, you might be happy that it snaps to a corner,
            but it only snaps to one dimension, so snap points
            will trigger in each dimension independently.
  fantasai: With 2D snapping, you only snap whenyou're close to
            the center in both dimensions.
  TabAtkins: [whiteboards] You don't want a map with two cites where
             one has centered vertically and one horizontally. The
             algorithm in the spec distinguishes between 2d and 1d
             to make sure it falls out correctly.

                      +--------------------------------+ <- viewport
                      |                :               |
                      |                * City A        |
                      |                :               |
                      |...*............:...............|
                      |   City B       :               |
                      |                :               |
                      |                :               |
                      +--------------------------------+

Edge Snapping
-------------

  fantasai: Next is slideshow. Let's say I have a scrolling
            slideshow and each slide is given 100vh. I want to snap
            to the slides because I don't want to be halfway between.
            Sometimes you might have a slide that's a little bit
            taller because I have a really long picture, like
            redwood tree height.
  fantasai: I want to be able to tell it to snap its edges so I can
            scroll through it, but if I pull hard enough it snaps to
            the next one.
  fantasai: This is an example of snapping both edges.
  TabAtkins: So your slides are a horizontal flexbox with mandatory
             snap points. Each slide is 100vw and a min of 100vh so
             that it can grow. As you go slide to slide it will
             align to the edges and you'll be able to scroll within.
  TabAtkins: If you do a flick down and it's too powerful, you'll go
             down and hit the bottom.

  Florian: Is this the same rules as for center snapping that's too
           big for the screen?
  fantasai: It's in terms of edge snapping.
  Florian: It seems these might be the same, but we might want to
           define separately.
  fantasai: We currently define this as the behavior and the
            fallback is this is how you would do it. We could say
            could instead of should.
  fantasai: That's a bunch of use cases.

Scrolling UI
------------

  leaverou: With slides you have to scroll with the keyboard. I
            imagine with snap points you have to scroll more than
            half. If you have a keyboard you might not be able to
            get to the next slide.
  TabAtkins: The current spec, when you scroll in a direction, we
             don't consider any snap points in the other direction
  MaRakow: There's lots of ways to implement that. There are people
           who want light flicks to return you. I left it vague in
           the spec intentionally. One is that it's large enough for
           escape velocity. Another is that inputs are also a
           semantic meaning. 'home' and 'end' mean go to the end.
           Arrow keys make more sense to go to the snap point, not
           velocity.
  MaRakow: Most UA should be able to come up with a sane way to do
           this.
  TabAtkins: We should put that in the spec where inertial is easy
             to map, but that things like arrow keys need a semantic
             meaning.
  MaRakow: Arrow keys might want to maintain a small amount of
           velocity.
  TabAtkins: So if you hit the right arrow key, you definitely don't
             want to go left.
  TabAtkins: If you do a tiny inertial flick it might be okay to
             bounce back.
  MaRakow: Right now it's intentionally avoiding the details of
           physics and inertia.
  TabAtkins: Yes, but the distinction is important.
  MaRakow: I can see that.

Edges (cont.)
-------------

  MaRakow: As long as we're on the use case, for the edges value,
           should that be influenced by the directionality? Robert's
           e-mail said they had issues.
  TabAtkins: Roc at some point suggested when we're scrolling down
             we care about top and up is bottom but realized that
             was a bad idea.
  MaRakow: I'm worried snap points on each edge might be the same
           bucket.
  MaRakow: If they can snap half way up and half way down, it can be
           a problem.
  TabAtkins: [whiteboard] if it's contributing two edges, if you're
             naively handling this you'll scroll a little bit.
  fantasai: A lot of these cases will be start. There's very few
            where you want edges.
  MaRakow: You mentioned the flow chart and you have the edge of
           each item being the snap point. If you have 20 elements
           on screen, you lose track of what you're snapping. Each
           pan or scroll is snapping a different element.
  TabAtkins: I feel you and I'd like to see the flow chart example
             in person.
  fantasai: I can imagine having a message app where you have edges
            on each message.
  Bert: That's what I was thinking. That's a case that's useful.
  dino: That's one dimensional. The flow chart there's so many.
  TabAtkins: 1d and 2d are substantially different.

  Florian: Does mandatory exist in 2d scrolling scenarios?
  TabAtkins: Yes.
  Florian: Edge mandatory in a flow chart would feel weird.
  TabAtkins: The use case for mandatory is a 2d, though.
  Florian: That's two 1d scrollers.
  fantasai: So like Zelda where this is one room and then you go to
            another room and it snaps in.
  Florian: Okay.

  MaRakow: One thing about the 1d case, ensuring that the element
           you're snapping to isn't the bottom edge of an element
           that's just off the top of the screen. Making sure the
           thing snapped to isn't off screen.
  TabAtkins: Start edge of the box goes to the start edge of the
             scrolling container.
  TabAtkins: That was the intention, though we might not have
             spec'ed that clearly enough.

  Bert: You skipped example #2, grouping. I think that case makes
        grouping unnecessary

Review of Changes
-----------------

  TabAtkins: That was our basic exploration of let's recase the
             current spec into more familiar tables.
  TabAtkins: Scroll-snap-type is the same. Destination we can keep
             for compat, we think it's necessary. It will get auto
             where it matches what the element is going.
  fantasai: Renaming-wise it might be target.
  TabAtkins: The new property that's not in is scroll-group-align.
             On the children scroll-snap-coordinate is to -align.
             I'm skipping area. Not too large.
  fantasai: We're switching to an alignment model.
  TabAtkins: We end on the same number of properties.

  <leaverou> minor: shouldn't the initial value of scroll-snap-area
             be margin-box? If there's spacing around the element,
             you'd probably want that spacing when you snap to it,
             in most cases, I imagine

Group Snapping
--------------

  fantasai: Group snapping...
  TabAtkins: Group based snapping isn't in the current spec.
  fantasai: It's using the repeat syntax there.
  TabAtkins: You might have a lot of items much smaller than the
             viewport and you want to scroll in a paged method.
             Rather than snapping each item, you can snap pages,
             like an address book.
  TabAtkins: So the meaning of this is the element does its normal
             edge based, but it contributes the edges. If you look
             at the edges, the start most and end most become what
             you are not aligning. You take as many address pages,
             the first and last are what's aligned, and we continue
             down the scroller.
  fantasai: [whiteboards] so I have a bunch of randomly sized boxes.
            (Where each box here is the scroll-snap-area of the box.)
            I line them up and take the first top edge. I go down
            one screenful and take the last bottom edge that fits in
            the screen, that becomes one page. I take the next top
            edge whose position is >= that previous bottom edge, and
            then find the bottom edge one screenful down from that.
  fantasai: We're answering the quesiton, what is the set of whole
            items that will fit?
  TabAtkins: So if you know the size of the items you can use
             wrapped divs, but if you don't know this does it for
             you.

  Bert: And this is dynamic?
  TabAtkins: We haven't gotten into a ton of detail.
  fantasai: I think we wouldn't recompute so your pages stay the
            same since you can do something like "I remember seeing
            that three pages ago" and want to go back.
  SteveZ: Some of the better scrollers for text don't jump whole
          pages, but give me the last few lines.
  TabAtkins: That's basically example 2. So you collect a page of
             whole paragraphs and when you flick you go up and get
             the last paragraph you hadn't fully read yet.
  TabAtkins: I would kill somebody to get this in my normal web
             reading experience.
  dauwhe: You want pages :D

  MaRakow: I had similar questions to Bert. What happens if you
           delete elements?
  TabAtkins: If you change the DOM you should recompute.
  fantasai: You don't change based on scroll experience, but if the
            content changes you change the scroll groups.
  MaRakow: So something like a twitter and I get rid of the stale
           tweets, do I get new pagination?
  fantasai: That applies to both.
  MaRakow: The repeat is the first spec. The content moves and you
           don't. If the goal is nice pagination this is nice.

  TabAtkins: 3rd example is you have a lot of images like Pinterest.
             They're irregularly packed and you don't know what the
             size is going to be and they're going off the page. You
             flick, everything you haven't completely seen goes to
             the top of the page and it fills below.

  Florian: How does that behave if all the images are bigger than
           your page?
  TabAtkins: Starting from the uncollected images...
  fantasai: He's got a point. If you have a big giant image that's a
            screen and a half. You don't want the first group to be
            as tall as the image.
  TabAtkins: [whiteboards] you have several small images in one
             column and one huge image in the other. How the big
             element behaves, I'm not sure.
  Florian: And what if they're all too big?
  TabAtkins: Your group would be overly large.
  Florian: And then you get the behavior for when things are bigger.
           A prototype would be useful.

  MaRakow: You'll start issues with 2d as well.
  fantasai: We think you can group in either axis.
  MaRakow: But you can't have a 2d group that looks like an area?
  TabAtkins: The bounding box and the group is what you're defining.
  MaRakow: A 2d scroller?
  TabAtkins: You could, yeah.
  MaRakow: You'll get more problems with that because the pages
           won't even be in a grid. If you can do both the first
           page will be weird.

  Bert: Grouping is overkill. I like snap points, but if you go too
        far in pagination, it's better off using real pagination.
        You can break the large box. The grouping is too complex, it
        doesn't give you want you really want to get.
  Rossen: Real pagination isn't meant for this. You'll start hitting
          all the fragmentation rules which you don't want in
          presentation media.
  fantasai: You don't want to break into multiple pages.
  fantasai: You want an image to be one continuous thing.
  SteveZ: And you may want overlaps for a lot of your content.
          You're scrolling in sort of pages, not real pages.
  TabAtkins: And you can use scroll snap margins on the pages.

  TabAtkins: Group snapping, we think is useful, but they're not
             necessary for level 1. The big use cases are from
             simple snapping.

Reconciliation
--------------

  TabAtkins: You can handle over large stuff. The big issue is
             renaming stuff. Do we want to do that now?
  TabAtkins: scroll-snap-destination we can keep or change to target.
             We'd like to add 'auto' value that sets to center
             snapping. So destination. Keep or change?
  Florian: The alternative?
  TabAtkins: Target
  fantasai: Unless you have another.
  Florian: I like target better, but it's not very important.
  TabAtkins: Anybody feel strongly?
  MaRakow: If it's called target it starts to feel like it has
           another meaning like event target.
  hober: There is appeal in using something we're not using
         elsewhere. But I see the appeal of shorter.

  TabAtkins: So the addition of the auto to destination. Right now
             if you want to center you have to say destination and
             coordinate center.
  MaRakow: What element does it copy from?
  TabAtkins: Whatever element it's snapping to.

  ojan: I haven't listened to all of this, but the destination vs
        target, I think we should minimize changes as much as we can
        because multiple browsers are shipping.
  TabAtkins: It's a matter of if people are okay with changing. It's
             okay to keep the names that are already here.
  fantasai: smfr said they're under webkit prefix so it's okay to
            change. Roc wants something stable soon, at this F2F,
            but is okay changing. He thought the spec was stable
            because it wasn't changing, but that's not a good
            assumption generally...

  hober: Question about auto. Does it always mean the destination
         value comes from the coordinate value?
  hober: Auto often means something difficult to describe. You could
         use from coordinate.
  fantasai: But auto can mean default. It can just mean do something
            I can't express explicitly.
  Florian: I'm not completely sure about auto. Depending on the size
           of the scroller you get different things.
  Florian: [whiteboards] if you're in mandatory type of things
           you're past the middle of the second one.
  TabAtkins: Don't mix edge and point alignments, it's weird.
  fantasai: Or if you do, do it for a very good reason.
  Florian: So in this whiteboard it's the author being wrong.
  TabAtkins: You can do a lot of dumb things with scroll snap if
             you're dumb.
  Florian: Depending on how tall your screen is you can end up with
           problems.
  TabAtkins: Only if you have a small amount of information.

  TabAtkins: So destination stays named as-is.
  TabAtkins: MaRakow on auto?
  MaRakow: I was thinking what coordinates would make sense with
           auto. Top does...
  fantasai: It works just like background position. 100% is the
            bottom, 0% is top and it's continuous.
  MaRakow: So if you have a coordinate that's an offset of 20px and
           your offset 20px is that 40px?

  fantasai: I think we may want to break and come up with a list of
            resolutions that we need from the WG. Let's get on the
            same page conceptually. Right now we're at a high level.
  TabAtkins: We'll have auto on the table then.
  fantasai: The critical items is switching to this box model.

  hober: Are you looking for a resolution today?
  TabAtkins: In so far as if we're switching to this model we need
             to have a completed transition to this model in 2 weeks.
             Mozilla has shipped unprefixed. Which Roc had a lot of
             the concerns we had but he shipped since he thought it
             was stable.
  fantasai: If you're going to work on this, we've only shipped for
            a couple of months, then do it and do it quickly. smfr
            says Apple has it behind a prefix.

  MaRakow: For the box thing, this ties into the other issue on the
           ML of 2d scrollers vs 1d nested scrollers and the ability
           to spec snap coordinates on a single axis and once you
           have enough lines you have a box. I think there might be
           some overlap there. I think the scenarios on the ML are
           compelling enough that we should explore that.
  TabAtkins: So how do you want us to help you?
  MaRakow: Let's start over lunch.

  fantasai: Opinions from other members of the WG?
  Florian: I like the direction. I had the same concerns as Roc.

Writing Modes
-------------

  Bert: One...maybe there was a note that the start keyword isn't
        writing mode dependent.
  TabAtkins: It is.
  TabAtkins: It's been on the scrollers writing mode. We do
             sometimes care about child vs parent.
  fantasai: We need to clarify.
  fantasai: The model should be writing mode relative so if you say
            start edge in one axis that is the block axis, if you
            switch the vertical writing mode, the thing that was the
            block should translate to still be paragraph to
            paragraph.
  Bert: It only depends on scroll-x or -y.
  fantasai: Overflow-x and -y are physical, but we'll have logical
            equivalents. The scrolling behavior for snap points
            should be logical as well.
  MaRakow: It's logical and physical similarly. There's lots of
           things where you have the photo where you'll go the same
           direction no matter the writing mode.
  Bert: But you're missing keywords.
  fantasai: We'll have to look at grammar, for sure.
  Bert: But then you don't need them all.
  TabAtkins: You can still scroll in two directions.
  Bert: If I have something scroll vertically, I set something as
        start it goes from the top.
  TabAtkins: We fixed it a while ago. If you don't have to specify
             the axis you have start in both direction.
  fantasai: If you want to snap in one dimension, not the other, you
            have to say start: none
  Bert: But I don't want it to be start on the right side.
  TabAtkins: Then say start: none
  TabAtkins: Or don't make yourself scrollable in the axis and it
             won't matter.
  Bert: This is getting confusing. Maybe we do need a left and right.
  TabAtkins: Nothing you described so far requires physical
             directions. If you just use start: whatever direction
             are scrollable are snapable.

  Florian: What about bidi?
  fantasai: Horizontal will change based on bidi.
  fantasai: You use the writing mode of the scroller.
  Florian: It might not be the start edge.
  fantasai: Alignment property works the same way.

Plan Going Forward
------------------

  fantasai: Any other comments on if this seems like a good
            direction? Should we work with MaRakow?
  hober: In general yes, it's just a lot to resolve on at once.
  hober: I think continue working.
  Bert: I'm not sure about grouping.
  fantasai: I see dbaron and dauwhe and SteveZ nodding.

  plinss: Does anyone think we should abandon this and ship what we
          got?
  hober: If they continue working on this...
  Florian: This replaces the old model.
  fantasai: Otherwise we cannot do anything.
  hober: So wholesale replacing is a bigger question.
  TabAtkins: So it's replacing scroll-snap-coordinate with these two
             properties. -align and -area.
  fantasai: I'm not sure you can get overly large elements to work
            correctly otherwise.
  fantasai: If you have something aligned to the top, if you're
            aligned to a particular position. The overly large stuff
            kicks in if you can't see all of it. If you're top
            aligning you only want to snap to the top edge.
            Nevermind...
  TabAtkins: I don't think edges are required if we're only doing
             overly large.

  TabAtkins: Who doesn't want us to work on edge snapping over the
             next two weeks?
  fantasai: We replace stuff or we do all these on level 2.
  Florian: +1 to replace.
  MaRakow: We should discuss and see if there are options to do it.
  plinss: So lets break for lunch, you guys sort out over lunch, and
          then we'll try and propose some resolutions after lunch to
          get this address. Okay?
  TabAtkins: Yes.

  <break=lunch>

  plinss: Let's get started.
  plinss: Are we ready for scroll snap followup?
  TabAtkins: We decided we need to talk about this more.

Received on Friday, 11 September 2015 18:34:51 UTC