[CSSWG] Minutes Sydney F2F 2016-02-01 Part IV: Overflow [css-overflow]

=========================================
  These are the official CSSWG minutes.
  Unless you're correcting the minutes,
 Please respond by starting a new thread
   with an appropriate subject line.
=========================================

Overflow
--------

  - fantasai introduced her and TabAtkins' work to trim down the
      overflow spec to just overflow-x and -y properties and to
      define ink and scrollable overflow.
  - RESOLVED: Hanging punctuation causes ink overflow.
      [Note: This discussion has since been reopened.
       See https://lists.w3.org/Archives/Public/www-style/2016Mar/0073.html]
  - RESOLVED: clip-path and masking do not affect scrollable bounds
      - esprehn will look into the compat for clip-path
  - RESOLVED: Spec the current behavior for nested transforms and
              add a note that this could be improved
  - RESOLVED: Drop border-box overflow concept (used for outlines);
              move it to UI 4 or Overflow 4
  - Discussed whether scrollable area should include margins on
      various elements. More testcases were wanted, and also author
      feedback.
  - A conversation about CSS containment and overflow:clip will be
      added to Tuesday's agenda.

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

Agenda: https://wiki.csswg.org/planning/sydney-2016

Scribe: gregwhitworth

Overflow
========

  fantasai: Tab and I took the overflow module and trimmed it down
            to overflow-x and y properties.
  fantasai: We replaced a lot of issues with prose.
  fantasai: As we discussed in the past there is ink overflow and
            scrollable overflow.
  fantasai: The overflow-x and overflow-y props have the added clip
            value, everything else is pretty much what's in browsers
            today.
  fantasai: There is also a placeholder section for max-lines
            property.
  fantasai: We're going to go over these issues.
  dbaron: Why is max-lines in here instead of overflow 4?
  fantasai: It's probably going to get dropped... but we wanted to
            at least try to replace -webkit-line-clamp.

  astearns: This is a complete surprise to me, when did this happen?
  fantasai: I forgot we didn't check with the CSSWG, but Tab and I
            did talk with the editors.
  fantasai: We've wanted to look into this for years now: the
            overflow-x and -y properties have existed for about
            15 years in all browsers, and as yet have no spec.
  fantasai: Also we've been needing to refer to ink and scrollable
            overflow for while from other specs, and currently it
            sat in the overflow spec but that's all brainstorm level
            and we need implementation detail right now.
  fantasai: That's basically why we trimmed the spec down to only
            contain those two things so that we can solve these
            actual issues with the stuff that is implemented.
  florian: Also you didn't modify the spec.
  fantasai: Yes, we forked the spec and changed this stuff in a
            separate copy.
  fantasai: We did this a few days ago.
  astearns: Ok. But having notice before the meeting would have been
            helpful.

Hanging Punctuation
-------------------

  fantasai: The first issue is whether hanging punctuation is ink
            or scrollable overflow.
  dbaron: What is hanging punctuation?
  dbaron: I know what it is conceptually, what is the purpose of
          the property?
  fantasai: It does not measure the glyph that is hanging outside of
            the line box.
  dbaron: Only if it's at the end of the line?
  fantasai: Yes.
  fantasai: I don't know what's correct, do you want it to clip or
            to scroll?
  SteveZ: Why would I not increase the size of the box so there is
          room for the hanging of the punctuation?
  plinss: I think it's just ink overflow.

  fantasai: The difference between ink and scollable overflow is:
            if I have a box with no margin/padding etc, everything
            outside the box gets clipped, but if it's scrollable
            overflow we allow you to scroll to see it.
            Ink overflow you can't scroll to see it, it just gets
            clipped.
  fantasai: E.g. box shadows, image backgrounds, etc) spill outside
            of the box but we don't increase the scrollable area
            so that you thatcan see them.

  fantasai: Is it the author's responsibilities to fix this issue?
  takao: At least the shadow does not expand the cursor, but hanging
         punctuation should expand the cursor.
  rattan: If you have hanging punctuation inside of something that
          is not scrollable, should you be able to see it or not?
  SteveZ: No.
  SteveZ: What I hear Takao saying is that the content box needs to
          make space for the hanging punctuation to make space for
          the cursor.
  SteveZ: It's not accessible that it requires a scroller to see it.

  rattan: When we compute scrollable bounds it can be impacted
          multiple things. Back to the questions, are hanging
          punctuation included in that calculation?
  SteveZ: The real question is why are you making it overflow?
  rattan: Because that's how it broke in this case.
  SteveZ: If I resize the window so I have to scroll anyways, then
          the hanging punctuation should be scrollable too, but if I
          turn on hanging punctuation you shouldn't need to scroll.
  fantasai: That's not how it works.
  plinss: Turning that on makes it say that hanging punctuation
          should not be included in calculation for content box.
  rattan: [reads from spec]
          https://www.w3.org/TR/css-text-3/#hanging-punctuation-property
  plinss: By definition you're putting it outside of the box.
  fantasai: That is the definition of a hanging punctuation.

  rattan: If you have a float that has one line, no padding, no
          border, no margin in shrink to fit, what happens?
  rattan: If you add to that same example, you add overflow-x to
          that should you be able to see that comma or not (example
          is in that spec).
  plinss: Not necessarily.
  rattan: Then in that case, it's ink.
  rattan: However if this was considered the same as inline abspos
          element which is not considered for it's space, but it is
          considered for scrollable bounds so you would be able to
          scroll to it?
  florian: Based on your argument if you drop some of the text I
           think it should be scrollable.
  plinss: That makes it so that if you have a simple comma at the
          end you'll end up with a bad user experience where content
          is being scrollable. That's on the author.

  bert: I agree with Florian, by default it should be scrollable,
        maybe what SteveZ said that it should be part of the content.
  rattan: It would be if it was overflow: hidden
  florian: But you're asking for it to be hidden.
  fantasai: I'm fine making it scrollable, I don't care.
  SteveZ: If the padding is there would it still be scrollable?
  dbaron: Re-ask your question.
  <Bert> (if width is 'auto', it will not scroll.)
  SteveZ: If I turn on scrolling since the comma is hanging over the
          content box and I do have padding.
  dbaron: You won't get scrollbars because you don't have content
          that's extending outside of the padding box.
  SteveZ: What I don't want to do is turn on scrolling because I
          turned on hanging punctuation.
  SteveZ: When authors see the scrollbars they'll learn to add the
          padding.

  tantek: Are we only talking about the hanging punctuation at the
          end of the line?
  fantasai: Both.
  tantek: How do you make the scrollbars go away is a common request
          from devs.
  tantek: Let's not make that worse.
  tantek: I'll just use negative text index.
  dbaron: This will not cause any more scrolling than negative text
          indent will.
  dbaron: It will only cause scrolling if the quote mark would have
          been partially hidden.
  tantek: And that would happen with negative text indent as well?
  dbaron: Yes.
  SteveZ: Not if you add padding.
  tantek: Not sure I believe that without a test case.
  tantek: It's very annoying.
  rattan: Is it more annoying than not seeing the content?
  tantek: Yes.
  rattan: Then it's ink.

  fantasai: I'm leaning towards scrollable overflow.
  plinss: Does shadow cause scrolling?
  fantasai: No.
  plinss: Hanging punctuation is similar.
  *murmurs*

  <zcorpan> http://software.hixie.ch/utilities/js/live-dom-viewer/saved/3851
            - i don't see a scrollbar here (negative text-indent
            outside padding box)

  plinss: I do not want to wrap or break text due to a comma
          overflowing, this is how it's done in page layout and the
          author should not have turned on this feature.
  plinss: Making the user scroll is also punishing the user.

  <fantasai> [Florian draws a CJK period glyph, where the period is
             in the bottom left corner of the em square]
  xidorn: In some forms the punctuation could take a small portion
          of the area, like in simplified Chinese it's at the bottom
          left corner. If we make it scrollable it could be very
          confusing.
  dbaron: I'm ok with just doing ink overflow then.
  florian: Can we do a hybrid thing where we measure the size of the
           glyph bounds?
  dbaron: No, no, no
  dbaron: In particular I'm not ok with that because glyph overflow
          is not scrolling overflow and that's very important.
  plinss: This is morally the same thing as a big swishy glyph
  florian: If you remove the punctuation you may not understand it;
           it isn't the same as text shadow.
  florian: Trying to handle the error case well should not get in
           the way of handling the correct case.

  RESOVLED: Hanging punctuation causes ink overflow

Masking
-------

  fantasai: Next issue is about masking.
  fantasai: If you mask stuff that's overflowing do we clip it in
            regards to scrollable overflow?
  fantasai: If I have a div with overflow: auto, and I put an abspos
            div we'll put a scrollbar to allow you to see it.
  fantasai: What about masking?
  astearns: Masking can only partially occlude the content?

  esprehn: Are you saying that clipping impacts the scrollable area?
  dbaron: Yes, clip does and mask does not.
  Rossen: Probably for a good reason.
  florian: What for, I would assume they would be the same.
  dbaron: Clip has always been that way and it would be a lot of
          work to do that for mask.
  fantasai: *made a quick testcase*
  <fantasai> http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=3852
  fantasai: It should reduce the scrollable area due to the clipping.
  dbaron: FF/Edge don't scroll, Chrome scrolls.
  Rossen: I think that matches 2.1.
  dbaron: Wait you think 2.1 defines that?
  esprehn: That was the one part that was specific.
  fantasai: [reads 2.1 spec]
            https://www.w3.org/TR/CSS21/visufx.html#clipping
            “Content that has been clipped does not cause overflow.”
  Rossen: For this case, FF/Edge works correct.
  esprehn: We have two implementations that don't.
  esprehn: We have to measure.
  fantasai: We have two implementations and a spec that agree.
  esprehn: I don't think we'll implement masking because it's too
           expensive.
  fantasai: I don't care, I just need an answer.

  astearns: There's a lot that you would have to define to determine
            the bounds of the mask would apply, etc.
  dbaron: The other question, do you take the bounding box of the
          mask before or after the intersection of the scrollable
          bounds.
  Rossen: We would have to implement masking within layout in order
          to take into account all of the children that are to be
          masked.
  Rossen: *gives an example*
  fantasai: That's the question I'm asking.
  dbaron: I think we should, it may have been a mistake that clip
          does this. I think that both clip and mask should not
  dbaron: If you want to do it right, you have to keep scrollable
          region in sync with what mask and clip support, not just a
          rectangle.
  <gregwhitworth> *draws another potential issue due to masking*
  dbaron: I just don't think it's worth going into all of this.

  fantasai: My inclination is to have clip path do the same as clip:
            as an author it would be confusing if I clip something
            and I still get a scrollbar.
  fantasai: With masking it's very difficult because you're you can
            mask with images etc.
  dbaron: Doing it with clip is very hard, and web authors do care
          about performance even if you don't.
  florian: Tantek as developer rel. which do they need more,
           scrollbars or performance?
  SteveZ: The authors will wonder why the scrollbars will be there.
  esprehn: Blink uses a very simple model, visual overflow or
           layout overflow, anything that is NOT css overflow is
           visual overflow. They're computed during paint.
  rossen: It's the same in our implementation.

  <zcorpan> 160050 resources in httparchive that have both
            overflow:scroll|auto and clip:rect( -- seems difficult
            to check which of these would regress by changing (i'm
            happy to dump this table if anyone wants to investigate
            it)

  smfr: My recollection is that webkit does clump visible overflow
        and the old style clip property, but I agree with dbaron
        that it's probably too expensive.
  smfr: I would also like to see someone else implement clip-path.
  dbaron: I believe we implement clip-path.
  smfr: Maybe it was masking.

  <esprehn> https://developer.mozilla.org/en/docs/Web/CSS/clip
  <esprehn> the example is scrollable in Safari and Chrome
  <esprehn> and not in Firefox
  esprehn: I posted the Mozilla example, it's scrollable in
           webkit/blink but not in firefox.
  <esprehn> doesn't look scrollable in Edge either.
  *everyone looks at MDN testcase*

  rossen: I heard almost all of the implementers not want to support
          mask and clip path in scrollable bounds
  astearns: Given that, there are two ways of going - put in this
            draft that there is a legacy capability.
  astearns: Or, since two of them follow the spec and two of them
            don't we could have in the new spec say that none of
            affects scrolling.
  SteveZ: It's clear that no bugs have been filed on this.
  esprehn: The clip path is used on 31%.
  <koji> https://www.chromestatus.com/metrics/css/popularity#clip
  zcorpan: It's on 160K resources from httparchive (which is live
           sites).
  ojan: Either way it's way too high.
  ojan: We don't have a good way of measure it though.

  rossen: We need a resolution. After 28 minutes of discussion are
          we ready to resolve?
  rossen: We can take a straw poll or put it up for resolution that
          clip-path and masking do not effect scrolling.
  rossen: Who wants to have clip-path and masking to affect
          scrollable bounds?
  florian: Who cares?
  rossen: I'm just asking so that five or ten years from now we're
          sure that we're not just resolving for the sake of this.
  plinss: We should allow authors to declare random shapes and allow
          those shapes to affect scrollable bounds, maybe that's
          shape-inside.

  RESOLVED: Clip-path and masking do not affect scrollable bounds

  florian: Do we leave clip alone, or do we address this first?
  esprehn: I said that we care about this, we'll measure this and
           discuss it with the working group.
  ACTION esprehn: Look into compat for clip affecting scrollable
         bounds

Nested transforms
-----------------

  <Rossen> [fantasai draws a picture showing two nested, transformed
           boxes that end up affecting the scroll bounds]
  <fantasai> http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=3853
  dbaron: We have a special pass for 3d transforms.
  florian: Is this the situation where we should use a 'should'
  florian: One behavior is better, but more costly.
  <smfr> the issue is with two nested transforms, e.g. rotations
  <smfr> 2 ways to implement overflow tracking:
  <smfr> 1. track an axis-aligned bounding box at each level, but
            that can lead to bounding box explosion (as demonstrated)
  <smfr> 2. track corner points through all rotations, and do
            bounding box computation once at the end
  <smfr> 2) is more accurate but more expensive

  gregwhitworth: Based on what tantek says, I don't think we should
                 allow for scrollbars in one UA and not another,
                 with no clear way to fix the scrollbar.
  fantasai: It has scrollbars because the height is calculated based
            on what's in flow. You can adjust the scale factors to
            get different effects. It's overflowing in FF.
  <fantasai> http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=3854

  dbaron: So.... I have a different testcase
  <dbaron> http://software.hixie.ch/utilities/js/live-dom-viewer/saved/3855
  rossen: interop.

  rossen: So back to the issue.
  fantasai: What do you want in the spec?
  florian: We have a trade off between scroll bars and performance.
  fantasai: In all cases you're triggering scroll bars where stuff
            is still 100% visible.
  dbaron: It's way easier than the clip path situation.
  fantasai: How?
  smfr: I think it's fixable, but will any UA change?
  <dbaron> I think you'd just need to maintain a set of points and
           could probably cull a lot of them.
  zcorpan: I think there needs to be a really good reason to change
           away to something else when we have interop on this and
           no one is complaining
  <astearns> +1 to zcorpan's point
  <hober> zcorpan++
  dbaron: I wouldn't quite say no one complains
  dbaron: but still in favor of not changing.
  tantek: If better behavior is possible then I would suggest a
          should.
  fantasai: I suggest making it a note where we can state what it
            will do and say that the WG is open to other
            implementations trying it and us possibly changing the
            spec.
  fantasai: I wouldn't recommend making a should on the cheaper
            thing, the should should be on the better thing.
  fantasai: Is there an RFC6919 term?
  plinss: Must but we know you won't?
  rossen: Let's do that.

  fantasai: This is a whole mess of issues regarding transforms
  fantasai: You may calculate it more precisely but...
  <hober> https://tools.ietf.org/html/rfc6919#section-1
  astearns: We would like to see suggestions for how all browsers
            could make improvements in lock step.
  rossen: That's exactly how I feel.
  astearns: We should encourage people to provide solutions, but
            let's not request breaking interop.
  fantasai: It's not hard to spec, but making it hard to implement.
  SteveZ: We need a compelling use case to make the implementors
          want to change.

  RESOLVED: Spec the current behavior for nested transforms and add
            a note that this could be improved

  <dbaron> (do we want the note to make Alan's point about improving
           in lockstep rather than breaking interop?)

  <fantasai> Sorry, I forgot to regen the spec. The previous issue's
             testcase was this one:
             http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=3856

Border box overflow
-------------------

  fantasai: Do we want to keep “border box overflow” in this level
            of the spec?
  rossen: Isn't the point of this spec just to define what we all do?
  dbaron: This is what we do for outline, and outline is very
          loosely defined.
  rossen: Basically that outline is not ink.
  dbaron: Most implementations do outlines around border boxes, that
          means the outline does not go around descendants whereas
          we (Gecko) union the descendants to outline all of them.
  rossen: What do you do for inline?
  dbaron: We do but we don't do the thing where we merge the lines.
  florian: IE does some complex shapes, but others don't. Other
           people recently said to leave it undefined.
  rossen: In other words, take this out of the spec.
  dbaron: yeah... uh...
  dbaron: Web devs want outline to be just an additional border, it
          would be nice to have a formal spec.
  dbaron: Yeah, I'm ok dropping this.
  florian: We can discuss it future versions.

  RESOLVED: Drop border-box overflow concept; move it to UI or
            Overflow 4

Scrollable area with abspos elements
------------------------------------

  fantasai: There was another issue where the scrollable area with
            abspos elements.
  fantasai: Edge/Firefox don't include the margins of the scrollable
            areas.
  fantasai: We think that is author hostile.
  fantasai: We want to present that issue to the working group.
  dbaron: You're saying margin box only for abspos?
  fantasai: The others include the margin box.
  dbaron: Only some of the time, we don't normally include the
          margin box in scrollable overflow, we scroll to the
          collapsed margin.
  dbaron: We did kind of agree to changing to what webkit does.
  <fantasai> Testcase:
  <fantasai> http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=3857

  rossen: Was this found on broken content?
  rossen: This is for abspos?
  fantasai: Yes because we have interop.
  dbaron: I doubt that.
  fantasai: For inline content we take the line boxes.
  dbaron: No we take the border boxes.
  zcorpan: But it's interopable
  dbaron: But not on the margin boxes. I'm pretty sure if you have a
          large padding and border on a span, it will increase the
          scrollable area, but not the margin.
  dbaron: I'm interested to see what webkit does here.
  fantasai: Blink does border-box for inlines.
  <fantasai> http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=3858

  dbaron: I would suggest more research is needed here.
  dbaron: I think it would be better to get the big picture here, to
          see how the implementations vary beyond just abspos.
  fantasai: What specifically?
  dbaron: Floats, relpos, blocks where the margins do collapse
          through to the scrollable area and vice versa,
  dbaron: and probably inline side margins as well,
  dbaron: and inline side margins on blocks and inlines.

  fantasai: My general thought though, is that we don't provide
            breathing space for an abspos.
  rossen: Kind of like an inline case.
  fantasai: I don't really care about the inline case.
  hober: Webkit matches FF/Edge on those testcases.
  rossen: So you're saying that one implementation is doing it wrong
          and you want all of the others to change?
  fantasai: At least that implementation allows breathing space and
            you can remove it if you want.
  dbaron: But there are other test cases that need to be done to
          ensure that we're getting a consistent end result.
  rossen: ok.
  rossen: Let's move on.

  rossen: Are you looking for a resolution?
  fantasai: It looks like people are wanting more test cases.
  zcorpan: It would be nice if we get feedback from web devs.

Does clip cause a bfc?
----------------------

  fantasai: The one issue we have is whether or not 'clip' should
            cause a bfc.
  rossen: Which one?
  fantasai: Firefox does not create a bfc.
  rossen: I thought we discussed this.
  rossen: As soon as it becomes a bfc those margins won't collapse.
  fantasai: The margins don't have to be large.
  rossen: Also if you have floats within the bfc the inline content
          will be affected but it won't be visible,
  rossen: Which is the really weird case.

  ojan: Is any vendor interested in implementing this?
  florian: Yes there is a dependency by contain.
  ojan: And we think that dependency should be removed.
  ojan: I don't think we should add all these weird things in
        computed style.
  florian: If overflow is visible and you have containment, what
           happens?
  florian: The reason we wanted it to change was something else
           depends on it, the text-overflow property.
  florian: If it's visible you can't have the ellipses effect.
  florian: That would cause the scrollable byte buffer would be
           created and that's a performance negative.
  florian: You need this to avoid that, or something.
  ojan: That is definitely a legitimate use case.
  florian: Also resize.
  ojan: I see...
  florian: There may be another solution.
  zcorpan: Then we could have those other things look at containment.
  zcorpan: I'm not sure which one is better on the implementor side.
  florian: Mozilla has a variant of overflow: clip without
           containment.

  ojan: Do other implementors have thoughts on this?
  ojan: Is anyone thinking about impl this (I know Apple can't say
        anything)
  ojan: Then the separate thing, should the containment spec depend
        on overflow clip or text-overflow/resize depend on CSS UI.
  <fantasai> https://lists.w3.org/Archives/Public/www-style/2015Jul/0459.html
  <gregwhitworth> nevermind on the last 20 minutes of discussion

  <ojan> can we put up an issue to discuss (tomorrow) about this CSS
         containment + overflow:clip issue?
  <tantek> ojan put the issue as the first thing on
           https://wiki.csswg.org/planning/sydney-2016#tuesday-am
           and let's see how it goes
  <astearns> tantek, ojan - afternoon rather than morning, as
             there's probably no one that needs to call in for it
  <tantek> astearns: makes sense.
https://wiki.csswg.org/planning/sydney-2016#tuesday-pm then
  <ojan> astearns, tantek: thx. that's better for me since i can't
         be here in the morning. :)

Overflow style
--------------

  rossen: Anything else?
  fantasai: There's a thing on overflow-style, florian?
  florian: When you want the scrollbars to be overlay scrollbars, or
           auto-hiding scrollbars, should we support this and how
           should we support this?
  rossen: Just use the -ms-autohiding.
  florian: My only issue, is that you get the choice between space
           consuming or auto-hiding.
  esprehn: We have overlay which is in webkit and blink.
  florian: I like the ms one because it has fallback and you want
           them to cascade independently instead of having this on
           overflow.
  florian: I support the Microsoft behavior.
  <fantasai> Florian++

  esprehn: Why do you want to change all scrollbars on a page?
  esprehn: We have authors arguing that scroll bars taking up space.
  fantasai: We all agree with that.
  esprehn: They're the same person making this determination.
  * liam would hope that overlay scrollbars would come from the
         operating environment/context, and that people wouldn't
         want to experience alien scrollbars on random web pages
  philipwalton: I think you're saying the same thing.
  esprehn: Do they overlay?
  rossen: It's up to you.
  rossen: The styling should be different than making it a scroller
          or not.
  esprehn: You run the risk of the scrollbar covering up content.
  fantasai: If you're reserving space, why have them overlay?
  rbyers: It's for auto, you want to auto scroll and be transparent,
          but it overlaps.
  fantasai: That makes sense.
  florian: Auto reserve or something like that?
  fantasai: That would make more sense than the author guessing the
            size.

  smfr: overflow: overlay was a mistake.
  smfr: We would prefer not having scrollbar customization.
  rbyers: What about the idea that if it's auto, and the padding is
          auto set.
  esprehn: You want the overlay and you want padding to come in.
  rbyers: Should we have that?
  zcorpan: Would it make scrollbar not ugly?
  smfr: We did that already.
  esprehn: You have a scrollbar above it, the grid gets smaller when
           the scroll bar comes out and then goes back out when the
           scrollbar goes back. It's very hard to adjust.
  florian: This new feature, is that a value of overflow or
           something else?
  fantasai: I think overflow-style is good to handle this.
  rossen: What you're saying, is that every time you have overflow:
          auto you have extra padding.
  rbyers: If we don't break content.
  rossen: That would be worse.

  zcorpan: We should have overflow: scroll just not paint scrollbars
           when there is nothing to scroll.
  esprehn: That doesn't solve everything as the toolbar doesn't know
           the size of the scrollbar.
  <Bert> (I think I like zcorpan's idea. And can add 'overflow-y:
         scroll' to that toolbar area)
  [zcorpan was describing that 'overflow:sc']

ADJOURNED.

Received on Sunday, 13 March 2016 12:39:11 UTC