- From: Dael Jackson <daelcss@gmail.com>
- Date: Wed, 23 Mar 2016 17:31:36 -0400
- To: www-style@w3.org
========================================= These are the official CSSWG minutes. Unless you're correcting the minutes, Please respond by starting a new thread with an appropriate subject line. ========================================= Round Display ------------- - RESOLVED: Add radial-gradient <side> keywords to polar-distance. Mark issue for how to get e.g. from top left corner, 100% of shortest side. - There was some uncertainty about how 'contain' should behave in relation to the previous resolution and in general. However, it was decided that decisions on if 'contain' should be a default behavior should wait on a final definition. - The existing proposals for addressing polar positioning and abspos were discussed, but there were still unanswered questions . - An outstanding concern that the mental model for this was the opposite of the mental model for the rest of CSS. - A proposal developed to drop polar-origin and instead use alignment to achieve the desired effect. - RESOLVED: Make the following changes: 1. Remove 'polar' value of 'position'. Polar positioning applies to absolute/fixed/static/sticky/ relative positioned elements 2. Remove 'auto' value of 'polar-distance'. Initial value is 0 3. Add 'auto' value to 'polar-origin'. This means find the origin using normal rules for absolute/fixed/ static/sticky/relative positioning. 4. Make 'auto' initial value of 'polar-origin' 5. Add an open issue as to whether top/right/bottom/ left properties are ignored or interpreted somehow when 'polar-origin' is not 'auto'. NOTE: polar-origin doesn't apply to relatively- positioned elements. (Or mark an issue for making it apply somehow). - Joone presented a proposal for supporting 3d transforms in round display. However, there were two major issues with this proposal: 1. Transforms aren't a positioning system. This proposal presumes that they are. 2. Need use cases for what 3D polar coordinates. - However, there was agreement that it might be interesting to add functions for using polar-positioning-like syntax as an alternate way to express existing transforms. - The ability to support scrolling on a round display would best come from some of the scrolling work being done in Houdini. - Since most pages are not designed for round displays, browsers on such devices simulate a rectangular viewport by designating a fully-visible area of the display. For pages that are prepared to handle the constraints of working with a round display, it was suggested to add an @viewport switch for authors to opt into the full viewport. - RESOLVED: Publish new WD of Round Display, with polar positioning resolution incorporated (@viewport for next publication okay) - The discussion from Sapporo about device-radius was revisited; originally it had been concluded that the query would no longer return a radius, but instead return if you're visible or not. - There was concern from LG about complexity and implementability - There was a suggestion that a qualitative query for "roundish" vs "squarish" would be useful, regardless. - Florian will write up a proposal for this new media query. ===== FULL MINUTES BELOW ====== Agenda: https://wiki.csswg.org/planning/sydney-2016 Scribe: fantasai (with gregwhitworth scribing when fantasai spoke) Round Display ============= hyojin: I think if Web support various technology with display shape, a variety of products will adapt web-based platform OS in near future. hyojin: LG webOS is one of the platforms, and CSS Round Display is starting point in W3C. hyojin: Some polar issues. Percentages of 'polar-distance' when origin is not the center of the containing block --------------------------------------------------------------------- <astearns> https://lists.w3.org/Archives/Public/www-style/2016Jan/0152.html jihye: First issue is about percentage of polar distance when origin is not the center of the containing block. jihye: This issue was action item at Sapporo meeting. jihye: We need to define clearly about percentage of polar distance when origin is not center. jihye: When origin is not the center, the distance between the origin of polar coordinates and edge of the containing block varies according to the value of polar angle. jihye: With this method we have to assume that the shape of the containing block is inscribed circle for applying the method to round display. jihye: We also have to use polar positioning for rectangular containing block. jihye: But aligning elements here seems to be strange. jihye: Because if there are elements with elements with same percentage but different polar angle, they create an alignment in rectangular shape. jihye: This is not an appropriate polar positioning. jihye: We discussed about this problem and we got a reference of radial-gradient(). jihye: So I suggest to specify percentage with extra keywords, e.g. closest/farthest-side/corner <jihye> polar-distance : [closet-side | farthest-side | closest-corner | farthest-corner]? <percentage> Florian: Looking at various use cases to see which is the correct definition of percent. Florian: Different use cases give different answers. Florian: Sometimes you want to follow the shape around you. Florian: Sometimes you actually want a circle. Florian: So having a choice among these four, Florian: allows different circles. Florian: And if you omit these keywords, then you do follow the shape. Florian: So on each angle, 100% gets you to the edge. Florian: If you are in a rectangle, you move in a rectangle, get to the edge. Florian: Sometimes this is what you want. Florian: Sometimes this is what you want, but sometimes want to move in a circle. Florian: So having theses keywords, plus option to omit keyword, Florian: We get 5 behaviors instead of 1. Florian: Because I think one doesn't solve the use case. Florian: And we reuse familiar syntax. BradK: I can see how closest-side would be used. When would you use closest-corner or furthest-side? Seems like you'd get a lot of clipping. Florian: Would use if you are in a corner, use closest-side. fantasai: Seems problematic, because you want the shorter (?) side. Florian: If you're in a corner and use closest-side, result is the corner (0), then want farthest side. BradK: I think closest-side seems useful, unsure about the rest. Florian: Seems to be most useful, yes, but if borrowing radial-gradient(), just take the whole thing <fantasai> polar-distance: <side>? <percentage> jihye: I think this covers all cases developer would want. jihye: Can we define polar distance by this method? fantasai: It's a good direction to go in, I'm a little concerned. fantasai: If you have a point in the top left corner of a rectangle, and you want 100% to along the short side, I don't see how you would do this because closest-side would give you 0, but farthest-side would get you too far. Florian: It would take us away from radial-gradients, but maybe it should be closest non-zero side. Rossen: Definitely moving in right direction, might be some additions to it. Rossen: But mostly okay with this. Rossen: Any objections? RESOLVED: Add radial-gradient <side> keywords to polar-distance. Mark issue top left corner, asking 100% of shortest side, how to get that. Revisiting 'contain' keyword in relation to the previous topic -------------------------------------------------------------- Florian: We currently have a 'contain' keyword adding to percentages for avoiding overflow, Florian: Without it, cause overflow. Florian: The 'contain' keyword modifies this to make 100% the point where you would just not overflow. Florian: I have nothing to say behavior difference. Florian: I have a worry about which is the two is the default. Florian: I'd rather have no keyword doing the 'contain' behavior, Florian: and add 'unsafe' to do overflow. BradK: I think we should revisit 'contain'. BradK: I don't think it's very effective at placing things where you want them. BradK: If you have a clock face with square numbers, the 6 will be really close to bottom, BradK: but something like 10, in order to contain the corner, will throw the center of the 10 closer to center of the dial than anything else. BradK: I think you really want the center of the numbers to all align along a circle, but you don't get that. Florian: Round the corners. fantasai: No BradK's right. BradK: That doesn't sound like a good general solution. Doesn't make it useful. BradK: Don't always want squares, either. E.g. a 3 is much narrower than 12. BradK: Would be better to have 100% means put center along the curve, then move in by half the height or something like that. [confusion] BradK: The way it's spec right now, 100% without contain puts the center of the element along the path of the circular container, right? BradK: If you're dealing with numbers on a clock face, all the same, they're all the same height, so you can take half that height and move it back by that amount, BradK: And then it would be contained. BradK: That would be better than have corners poking in more than sides do. Florian: Height doesn't work in [???] BradK: If it was always half the height, and all the same height, then they would all move in by that amount. Florian: But that wouldn't be sufficient to avoid overflow. Florian: If wider than tall, half the height isn't enough to move inward. SteveZ: [mumbles something] BradK: Don't have a perfect solution, but I think we need to think some more. Because the one we have right now isn't a great solution. * fantasai agrees with BradK SteveZ: Instead of half the height, could do half the largest dimension. SteveZ: Has to be the same for all of them. Florian: We don't have that, though. * fantasai thinks shape-outside might be useful here. BradK: You'd have to have a fixed width, might have overflow because numbers wider than you anticipated.... Florian: I think there is more work needed on definition of 'contain'. Florian: Also need to take into account whether or not we care about rounded corners, Florian: or shape-outside, Florian: or shape-inside. Florian: But assuming we have a 'contain' behavior, would rather it be the default. Florian: Regardless of how we define it. Florian: Maybe reserve judgment of that until we have a precise definition? BradK: I don't feel strongly one way or another. BradK: Sometimes want one or the other. Florian: My concern is not that, but what happens if the user has a differently sized screen and author didn't think about it. Florian: If author didn't ask for overflow, let's not overflow. BradK: I think I'll reserve judgment until we had a better definition of 'contain' * fantasai agrees with BradK Florian: Okay, let's work on contain more until deciding whether it's the default. polar positioning and abspos ---------------------------- jihye: Next issue is polar positioning and abspos <astearns> https://lists.w3.org/Archives/Public/www-style/2016Jan/0134.html <hyojin> Also refer to this written by BradK yesterday: https://lists.w3.org/Archives/Public/www-style/2016Feb/0002.html jihye: There was an idea of making polar-distance and polar-angle with abspos. jihye: So polar-position properties used with abspos, jihye: Use of polar positioning is changed. jihye: If polar-distance isn't auto, then can be polar-positioned. jihye: If any property among left/top/right/bottom isn't auto value, any of polar-* property is ignored Florian: polar positioning is activated if polar-distance properties are not auto and TLBR are auto. BradK: I've evolved my position on that based on the alignment spec. BradK: With alignment spec, you are using the TLBR to create a box that something can be centered in. BradK: So needing something to be non-auto doesn't really come in any more. BradK: Last email I wrote, detailed how it would work. BradK: If you start at top and work your way down, top part is least controversial. BradK: I think we agree that using position: absolute or position: fixed or position: relative would be good. BradK: Instead of having a separate polar positioning spec that's the same as absolute except that it pays attention to polar. BradK: The only really other thing different about polar positioning is that it centers things. BradK: If box alignment centers things, then we free up polar positioning to move things at an angle. BradK: You can decide to center something, move something at an angle, or not. Florian: So? BradK: Covers all the use cases. * fantasai thinks this makes sense, but isn't 100% clear because didn't catch up on this email thread. jihye: I think when we use polar positioning on some elements, jihye: We have to set origin point to define distance and angle. Florian: Question is do you do that automatically, or use alignment first and then? Florian: Should ?? be magic or manually? BradK: Manually with existing properties. Otherwise you have 2 properties that by themselves that center. BradK: If you use position polar, same as using center alignment. BradK: If we have a way of centering, we have a way to make off-center with TLBR. BradK: We don't need a separate thing to make it center. BradK: To move it at an angle, you don't really need to have a concept of a center point or polar coordinates. BradK: You move the whole thing at that angle / distance. Florian: I'm a bit conflicted. Florian: On the one hand, I completely see how this works. Florian: On the other hand, the properties we have for doing the centering. Florian: Are in a fairly different mental model than when we're doing in polar coordinates. Florian: I'm not sure it makes sense to author to mix these two. Florian: Alignment isn't something you think about when doing polar positioning. Florian: Not sure what I think. BradK: I think forcing person into different model is polar coordinates, very different from CSS coordinates in general. BradK: The effects are centering, and moving at an angle. BradK: Don't have to change the 0, 0 no longer top left left, now in the center. BradK: Don't have to think about that. BradK: Question is do I want centered or not? BradK: Independent thought of moving it at an angle. BradK: Cutting corner across a right angle. BradK: Could do same thing with TLBR properties. BradK: Don't have to change my mental model. BradK: Don't need to use left and top to move at a 45deg angle anymore, just use polar-angle and polar-distance. Florian: My assumption here is that even among the people who write CSS, more people have an intuitive understanding of polar coordinates that they learned in middle school than how CSS layout works. Florian: Not that people have advanced understanding of math, but that much they do. plinss: I think you're overestimating people. plinss: I think more people understand CSS than understand polar coordinates. Florian: ... BradK: We went over this with radial gradients. BradK: 0deg is at top. BradK: Not changing the coordinate system,. BradK: Origin is still top left corner [?] fantasai: If I understand correctly, let's drop polar-origin and position things with alignment, then use that as your origin for moving with polar-distance. fantasai: I think there are use cases for that, and what happens if you want your origin to be something other than the center or the edge, that's really hard without the coords. fantasai: I think BradK has a great point though, and I think it's worth separating these things out. fantasai: I can see also how you would want to have a polar positioning. fantasai: You could make the initial value the polar origin be auto which would mean do your abspos layout like normal, and use the result as your origin. fantasai: If you then have polar origin set to a specific coordinate then that becomes where you start from. fantasai: You can then share polar-angle and polar-distance among all of the different layout models. fantasai: For relpos you would probably ignore the polar-origin property, but for fixed and abspos you would look at polar-origin. BradK: You would have two different ways for centering then. fantasai: I think there will always be many ways to center something though. fantasai: Centering in the future will be possible in many different ways which is ok. plinss: I like the proposal but I don't think it should just be polar-origin. <franremy> BradK Florian fantasai: Are there written examples of both proposals, to see which one is more compact? I fear the normal-css way might be too long to write, but I am not sure. BradK: After leaving alignment, I don't see the need for polar-origin, because you can just adjust the size of the box you're centering in [by using the offset properties]. plinss: I like the idea fantasai is talking about plinss: But don't think it should be restricted to polar plinss: Why not change the origin in any other mode? fantasai: I don't understand, there is no origin in any other mode. fantasai: That's defined by the writing mode and the rectangle. fantasai: There's no numbers, so the align properties don't have lengths, cords etc - they're just keywords and you're working off of the rectangle. fantasai: It's not really an origin system. BradK: If you want center to be move dot the left, use the right property. plinss: Just because we don't have ability to set something. ... fantasai: I can you give a better example. plinss: I want to have a box where 1/3 of it is going to align on this point. plinss: Can't do that today. Florian: So you're asking for polar-origin + polar-anchor. Florian: So you say polar-anchor: 33%; polar-origin: <coordinate> ? plinss: I don't think we should restrict to polar positioning. Florian: I don't think I can agree or disagree so long as you're being this vague. BradK: That's what I was describing before in earlier emails. BradK: I did have the idea of polar origin, which I was calling 'center', that could position things based on their center. BradK: You could' move this center with property, 'centerpoint' or something. BradK: Could position item based on any point in the item and any point in the containing block. BradK: Would get same effect of putting 1/3 of element to align with top center of CB, or whatever. Florian: General idea of what Brad and Peter are describing does sound reasonable to me. Florian: But not convinced until more concrete. Florian: Didn't like the concrete proposal of Brad earlier. Florian: Maybe a different proposal would be better. SteveZ: It's very similar to character alignment for images in inline. SteveZ: In this case alignment to a baseline, but conceptually the same kind of idea. Florian: I think you're generalizing too much here :) But see where you're coming from. SteveZ: It's taking what an alignment point would mean in inline layout vs block layout. SteveZ: Still the same 1/3 in 2/3 down kind of point. Florian: I stand by my previous remark :) Rossen: What is the current favorite proposal? Florian: I think we have general agreement for making polar positioning work in absolute/relative/fixed. Florian: Don't have agreement on how to get to center. Florian: My favorite concrete proposal so far is fantasai's. Florian: But interested to see what Brad and plinss have to propose. jihye: I agree with generalizing polar origin. fantasai: I think, if we go with the proposal that I had, there is no new property. It could be renamed. BradK: Could be renamed. It's not necessarily polar. BradK: position-origin might be better. BradK: I was suggesting that this could even be a transform function. BradK: It doesn't even really need position, could just transform something with angle movement. BradK: Could stop having to change your mindset. BradK: Different than start point fantasai: You may want them to cascade separately. fantasai: If they have hover effects mixed in with layout, that makes it awkward for the author, transforms should just be a graphical thing on top. Florian: My proposal would be, 1. Resolve on what fantasai proposed earlier, with the understanding that we will explore generalizing it further. Florian: I think bradk and peter have some interesting ideas, Florian: But what fantasai proposed is a clear improvement over what we have so far, Florian: So I'd rather have that in the spec, Florian: and then improve from that. BradK: Do we have to call it polar-* ? Florian: I haven't seen an obviously better name proposal, so I think we should discuss that from a better starting point, from what fantasai proposed. Florian: This way reduce the problem space. Florian: And then make concrete steps from a concrete proposal. BradK: Sort of agreement on the list to have this be part of positioning anyway. Florian: Let's turn this into a concrete set of resolutions. Florian: I think what fantasai proposes is a clear step up from what we have so far, so let's take that step and then move forward from that. fantasai: To summarize: fantasai: Add the 'auto' values to polar origin fantasai: Apply the polar coordinates to all positioning schemes, not just 'static', and remove 'polar' value. fantasai: 'auto' on polar-origin, would the be the initial value and would have them do normal layout. fantasai: polar-distance initial value becomes 0, remove auto value. Florian: The definition of "how does polar origin work" in that model, if you are in anything but position bsolute/fixed, it does nothing Florian: If you are in position absolute/fixed, when polar-origin is non-auto, you do that instead of the traditional way of finding your position. Florian: I'm in favor of this proposal. BradK: What happens when you have align-self: center? Florian: If you're in abspos, self-align: center; justify-self: center; and polar-origin: auto Florian: Then you center through the alignment props Florian: If polar-origin is non-auto, you ignore align/justify self and instead do what polar-origin says to do. Florian: That's the model. And again, we can look into further generalizations, but the model currently described is this. jihye: When polar origin is not auto, what happens to the TBLR properties? fantasai: We could ignore them, or we could use them to reduce the size of the box in which you're positioning in. BradK: Or could just pay attention to top and left. fantasai: no, no. fantasai: I don't like using only half of this set of 4 properties. Florian: So I propose we resolve on the proposal, and then mark an issue of what happens with top/bottom/left/right <fantasai> Proposed Resolution: 1. Remove 'polar' value of 'position'. Polar positioning applies to absolute/fixed/static/sticky/ relative positioned elements 2. Remove 'auto' value of 'polar-distance'. Initial value is 0 3. Add 'auto' value to 'polar-origin'. This means find the origin using normal rules for absolute/fixed/ static/sticky/relative positioning. 4. Make 'auto' initial value of 'polar-origin' 5. Add an open issue as to whether top/right/bottom/ left properties are ignored or interpreted somehow when 'polar-origin' is not 'auto'. Rossen: So current proposal is resolve on the proposed resolution above, points 1-5 Rossen: Any objections? Bert: I'd like to propose a modification. Bert: I wonder if it isn't more intuitive to put the 'auto' on 'polar-angle' instead of 'polar-origin'. fantasai: No, the auto value is on the origin because it allows all of the other layout modes to work. fantasai: *gives an example* fantasai: The distance and angle being auto doesn't make sense. fantasai: Once the origin is set by the default layout modes, then you can use distance and angle to position it. fantasai: In that case you can set it to center, or use the alignment props. fantasai: But you have to ask for it to be the center, but polar position will always work generically. fantasai: So the initial behavior has to be backwards compatible. fantasai: It's through a switch that makes the polar coordinate capabilities become possible. <BradK> Distance and angle can both be 0. Bert: I think I have a misunderstanding of what fantasai is proposing, I'll figure it out later. Rossen: Back to objections on proposed resolution? BradK: No objection. RESOLVED: Make the following changes: 1. Remove 'polar' value of 'position'. Polar positioning applies to absolute/fixed/static/sticky/relative positioned elements 2. Remove 'auto' value of 'polar-distance'. Initial value is 0 3. Add 'auto' value to 'polar-origin'. This means find the origin using normal rules for absolute/fixed/ static/sticky/relative positioning. 4. Make 'auto' initial value of 'polar-origin' 5. Add an open issue as to whether top/right/bottom/left properties are ignored or interpreted somehow when 'polar-origin' is not 'auto'. NOTE: polar-origin doesn't apply to relpos. (Or mark an issue for making it apply somehow). Polar properties as CSS transforms function ------------------------------------------- joone: I wanted to extend this idea to 3D transforms (Joone showing a presentation) joone: Here is proposal transform: polar(angle, distance) transform: polar-origin(percentage|length, oercentage|length) transform: polar-anchor(percentage|legnth, percentage|legnth) joone: No changes, just use existing properties as transform functions. joone: If you use transform function. joone: We can move the element in the containing block like this. joone: If you use polar-origin joone: you can move the green block like this. joone: If you use polar-anchor can do this. joone: If you use polar anchor, use polar origin together. joone: Could extend this idea to 3D transforms. joone: Use polar3d function. * fantasai thinks joone is confused how the cascade works joone: 3 parameters are polar3d(r, theta, phi) joone: Place elements in 3d space like this. joone: Can also use polar-origin3d and polar-anchor3d functions. joone: polar-origin3d(r,theta,phi) polar-anchor3d(50%, 50%, alpha, beta) (joone's diagram has alpha and theta be the angles of the element with respect to the ray from the origin) joone: This is the initial idea. Might be some issues with this idea. joone: 3D function and transform. joone: That's it! <dbaron> Is the idea that these are equivalent to translate/ translate3d transforms? Florian: I would split my feedback on 2 aspects. Florian: One being transform and one being 3d. Florian: Earlier today fantasai explained why doing positioning with transforms cascades badly, want to do transforms on top. Florian: So because of that I don't think we should be doing this with transforms. Florian: Whether or not we can do in 3D can discuss separately Florian: For 3D side of things, I don't think there is any particular difficulty in understanding how the math works. Florian: But I want to see use cases before diving into it. Florian: This is solve-able, but wouldn't work on it without use cases. Florian: 2D without transforms is what we resolved on previously. Florian: 3D maybe, but why? Florian: Would like more convincing use cases. Florian: Without that I think it's complication without justification. dbaron: I guess I didn't even understand what the proposal was. dbaron: Are these translations? Are they translate + rotate? joone: Internally we use translate and rotate functions. joone: I want web developers to be able to just use polar properties. dbaron: I looked at transform polar3d(r, theta, phi). What is that transformation? dbaron: Is it a translation? Is there some rotation, too? joone: No rotation, just move. dino: If it's a translation, why isn't it a translation? dbaron: I can understand wanting to express translate as polar coordinates, but if so, would want translate in the name. dino: Can you go back to the other slide? dino: Example in 2d. dino: The thing I don't understand, maybe it's because I haven't been listening well enough, but... dino: We start there, then next slide... dino: We've changed the positioning completely of the element. dino: There's this implied translate to the middle of its containing block. dino: Which is really confusing, because nothing else does that in a transform. dino: Polar angle and polar distance, initial value is located in the middle of containing block. dino: Sure, but no other transform needs to know what its containing block is. hober: What are the arguments to the function here that would be the identity transform? dino: What would you do if you wanted to keep something where it was? dino: I think I can see there's a use case for adding polar transform functions that simplifying the case of moving something a position rotating it, translating back out, etc. dino: But don't like that this function completely changes transforms completely. dino: If you do translate(0,0) nothing changes. If you do rotate(0) nothing changes. dino: But here polar(0,0) completely changes where the element is. Florian: This is a conversion into transforms from what the polar positioning model was before we made the resolution 15 minutes ago. Florian: Polar positioning in the old model had a jump-to-center effect, Florian: but we just changed that. dino: Transforms isn't the way to magically change the positioning of an element. <dbaron> I agree with dino. Florian: Without using transforms. Florian: What we just discussed dealt with that. <franremy> The point of having a conversion from polar to cartesian transforms is useful, if you want to animate smoothly, like an animation of a satellite around a 3d globe. Florian: And as fantasai explained, not good to use transforms for positioning. Florian: For 3D polar positioning, we need use cases. fantasai: So here's the big issues... fantasai: 2 major confusions here: fantasai: One of them of which - you don't seem to know how the cascade works as you're overriding the transforms. fantasai: The second one is that, transforms are NOT a positioning system, it's about shifting relative positioning system. fantasai: That goes back to what Ted was saying, you need an identity transform - if you 0 out everything it needs to do nothing. fantasai: When you add 1 to that it starts to do something - but we need that identity transform. fantasai: We can add polar transforms which is basically syntactic sugar to other transforms. Florian: If we want to work with transforms, then it needs to work the way she just said. Florian: If we want 3D positioning, then I want to see use cases first. Florian: And these two things are separate. dino: Florian made 3 points dino: and fantasai described them better dino: The points were dino: 1. Transforms aren't a positioning system. dino: 2. It would be interesting to examine functions for doing polar-like transforms that are shorthands for polar positioning dino: 3. and he wants use cases for what you want 3D polar coordinates for Florian: If we want to do transforms, as fantasai described, then we don't need major use cases because it's syntactic convenience. Florian: If we need a 3D positioning system, then we need to understand why are we working on this hard topic. New type of pseudo-class to support scrolling in rounded viewports ------------------------------------------------------------------ Rossen: Next is pseudo-class issue jihye: The latest smart phone from LG and Samsung use scrolling animation like this one. [jihye shows off an email subject line list, where the middle item of the 3 visible is larger and shifted left] jihye: There are several problems here. jihye: One is that if the list item sizes are the same as the containing block there is some overflow. jihye: If the list item size is same as inner circle of containing block, there can be unused spaces. jihye: So recent smart phones use scrolling like this. jihye: Dynamic scrolling and scaling of list items. jihye: To implement this kind of scrolling animations on the Web, jihye: This is implemented by JS. jihye: It takes a lot of calculation, like exact position of elements while scrolling, jihye: and doing some scrolling animations. jihye: So to solve this problem we suggest new pseudo-class. jihye: We suggest regional pseudo class to handle this problem. jihye: Can select an element in a specific area. jihye: When the new type of pseudo-class is :region( [center|left|top|right|bottom]?) jihye: When element in the list matches with center point of containing block, you can select :region(center). jihye: When element matches with top edge of containing block then select the element. jihye: When you specify an element with region(center) that kind of element scaling bigger than the other elements then maybe you can deal with the dynamic scrolling I showed you before. jihye: But I think this not quite perfect solution for dynamic scrolling. jihye: Because layout doesn't change when scrolling animations. jihye: This is just one idea for dynamic scrolling/aligning of items. jihye: What do you think about this idea? Do you have some other solution for scrolling in round display? astearns: Is Rick anywhere near? astearns: The Houdini scrolling stuff might help here. <dbaron> layout-dependent selectors seem unlikely to work Florian: I am extremely skeptical that a selector depending on layout and scrolling can work. Florian: Since you can do it in JS, doing it in Houdini-powered JS would make it faster. Florian: It would be nice to have a declarative way to say that, but I have no idea. Florian: Maybe Bert has an idea, he's good at that. Rossen: First comment, is that "region" in CSS and reusing name is confusing... Rossen: But as some experimental work with shape inside. Rossen: Also kind of suggests that, reinforcing Florian's point here, automatically scrolling mechanisms is quite difficult other than approximate rectangles. Rossen: When the shapes become more exotic this problem becomes not even solvable. Rossen: Especially if you have disjoint shapes. Rossen: Not to say we should stop thinking about this. Rossen: It is an issue. Rossen: If the script based solution works, that's already really good. Rossen: In Houdini we will try to make that more efficient... Florian: Houdini is important here, works on desktop, not so much on watch. astearns: I suggest taking this specific issue to the github issues on Houdini as a use case, astearns: And say that let's try to make our scrolling stuff help make this more efficient. Bert: Wrt :current/:past/:future pseudo elements. Bert: Can see what was coming and what's past. Bert: That's the first idea I had with this. Bert: Scrolling also has this. So maybe with pseudo-classes can do something. Bert: Just to remind people that we have something in Selectors 4 that might fit this. <astearns> Perhaps it shouldn't be layout changes based on position within the round display, but transforms ( scale as you get to the middle...) <hyojin> I modified that the revision of CSS Round Display as last item. Robustness of CSS on non-rectangular displays --------------------------------------------- Florian: So, next one is robustness of CSS on non-rectangular displays. Florian: If you ignore bugs and stuff, if you take an unstyled document, or to which only the UA stylehseet has been applied. Florian: We've never had a situation where doing this would result in invisible overflowing clipped content. Florian: With shaped displays, we do, because corners get clipped. Florian: Starting with invisible content from which the author has to work from is bad. Florian: The author cannot be expected to anticipate all the devices in the world, Florian: and make their page work in all of them. Florian: I think we should find a way to have the default situation for a web page to not clip and hide content on round displays. Florian: Should we apply shape-inside by default? Florian: But that's tough because we don't even know how shape-inside works precisely enough Florian: What I think he's suggesting is that by default the device manufacturer or provider of UA for that device Florian: Would make a viewport that does not cover the entire screen, but is either entirely contained or something that overflows it so little that you don't lose much. Rossen: So we already have the concept in most implementations of physical viewport and layout viewport. Rossen: What I'm hearing is that we should allow sizing of the layout viewport from the host level. Florian: ??? Rossen: Currently layout and device viewport is completely internal, Rossen: not target-able by content script style anything. Rossen: This would be the first requirement that allows programmatic access to the layout viewport. Florian: Recommendation would be, ask the UA to start with a layout viewport that is smaller than the screen, Florian: and sized smartly to not overflow at all or too much, Florian: and to give either through <meta> or @viewport, allow author to opt into the full screen. Florian: If you're asking for it, fair to let you deal with the situation. Rossen: If a manufacturer of such a device is using a web view or any other way to host web platform, Rossen: How is what you're saying different from resizing overall host container. Florian: The difference is matter of initial setting, and allowing author to opt into the full viewport. Florian: I'm not strongly defending this solution, just presenting it. Florian: People should design for devices everywhere generally, and then tailor to specific devices. Florian: Impossible to do this for round displays if we just use the entire circle as the display for the page. fantasai: The key thing is being able to opt into the full display. Rossen: At the app level it's fine. Florian: I'm not concerned about app level, for content targeted to the watch. I'm thinking about content not targeted at anything in particular that needs to work. Rossen: So you have a round display, and by default you don't want to clip. Rossen: As Brad says, putting a square peg in a round hole Rossen: At some point you want the user... Florian: Opt-in is for the author, not user. Florian: If you display any web page not authored for a watch, should display just fine on the watch. Rossen: Agree with the general statement. Rossen: Don't understand the solution. Florian: If the author does nothing, the UA should provide a layout viewport smaller than the screen. Florian: There is no clipping. Florian: If the author is ready to deal with shaped screen, Florian: Can ask for viewport that covers the entire screen, Florian: and be prepared to deal with the clipping. Rossen: As long as its the on/off switch, it's palatable at least to me. Rossen: I'd be more reserved if we go the next stop, which and through this media feature do a whole bunch of things to viewport sizing. Florian: Don't want to do shaping of viewport with this. Florian: Just opt in/out of the viewport fitting in the circle. Florian: Would like to tag this into the Device Adaptation spec. plinss: Why aren't we doing shape-inside by default? Florian: Well, we don't exactly know what that does. Florian: Also if you have less content than the screen, fine. What if you have more content than the screen? fantasai: We don't have a solution for that. Florian: In 15 years maybe, you can do that, but need a solution for now. Bert: About the smaller viewport, could be maybe a little bit bigger have margins on the scrolable area. Florian: I don't think we have to be overly strict, can let device manufacturer be smart about that. Rossen: Not necessarily a new problem, at least in Windows Table mode, number of reasons why you'd want to constrain the viewport of the browsers for different UIs and impinging elements that are either part of the browser chrome or extension of it. Rossen: This is just the same problem. Rossen: Impinging items are part of actual display. Rossen: @viewport works just fine. Rossen: Anything else on this? Florian: If we agree that's the way forward, someone needs to take an action to figure out concrete syntax for this and put in either round display or device adaptation spec. Rossen: Start with round display and move to device adaptation? Florian: With regards to time constraints on my side, would rather we actioned LG to write it, and I'm happy to review. ACTION: hyojin add @viewport switch for opting into full round display size as viewport <trackbot> Created ACTION-751 Publication ----------- [discussing new WD publication now] RESOLVED: Publish new WD of Round Display, with polar positioning resolution incorporated (@viewport for next publication okay) device-radius ------------- Florian: If you remember in Sapporo we revisited the media query and sort of concluded on a proposed MQ that no longer measures roundness of corners, Florian: but instead queries whether a certain box sized and position in a certain way would be in the visible area of the screen or not. Florian: I don't think the spec has evolved since then. <hyojin> The summary about it written by David Baron: https://lists.w3.org/Archives/Public/www-style/2015Oct/0220.html Florian: I think the spec still has what we had before that. Florian: I think we need to revisit that entire discussion, because there are two things that you want to query. Florian: If you're wondering if something will be visible or not, that's a good answer. Florian: But there's a qualitative question as well. Florian: There's also, am I on a round screen? In that case maybe I want round buttons and a round layout etc. Florian: But if I'm on a square display, maybe want more rectangular look and feel. Florian: So the question is, do we need to revisit conclusion in Sapporo? Florian: Or do we need two media queries, one for whether area is visible, and whether the shape is roundish or squarish? Rossen: Wrt resolution from Sapporo, what happened? hyojin: corner-radius query to check that, also is-visible MQ is strong, but seems very complex. hyojin: LG prefers a simpler solution. hyojin: In consideration of extensibility, we should make this media query extensible. hyojin: I would prefer to keep current media query. hyojin: and rename to corner-radius. hyojin: Address others in next level. Florian: I'm sympathetic, but skeptical. Florian: It doesn't really answer questions for ... Florian: We have a syntax but don't have a clear idea what it means. Florian: We discussed and came up with is-visible. Florian: But that doesn't answer whether it's round or not. Florian: I'm okay to have "am I round" query in L1 and is-visible in L2. [missed last few sentences] Rossen: You can check is-visible with IntersectionObservers Rossen: If you have an element and know if it's within the bounds of a scroller. Rossen: Similar to a mutation observer. Rossen: If the thing you're observing intersects a scrolling viewport, we can ... dbaron: I'm a little worried about the IntersectionObserver analogy. dbaron: I don't think it deals with partially-visible in the way you want. dbaron: For the use cases of intersection observer, partially visible is often okay and you want to be notified that you're visible. dbaron: But these use cases you care if you're completely visible. dbaron: But need to check before concluding that intersection observer is the right thing. Florian: That leaves us the question of how do we make query of "am I round" Florian: I don't think corner-radius is the right MQ. fantasai: But what does round mean? fantasai: For answering the qualitative question of screen round/square is a device MQ possibly. fantasai: It doesn't answer the question of if my corners are visible. fantasai: You can have a watch that has a rounded corners but it's still a square, so you want to know that it's round but it's not a circle. fantasai: Having just "am I round" is not enough. <franremy> +1 Rossen: What about the negation of that? Rossen: Am I rectangular? fantasai: We did discuss a JS API that gives you a path that allows you to do what you need. fantasai: Can build whatever logic you need on top of that. zcorpan: Last time we discussed, a screen shape that's almost rectangular with corners a bit cut off, should probably be considered rectangular. fantasai: What if that cuts off the "close" button, which is usually in the upper right corner? Need to know that the corner is clipped. Florian: Maybe a non-boolean query. Florian: But if we had a 'device-shape' MQ that has 'curved' and 'square' Florian: Let the device manufacturer opt in to roundish or squarish designs. <BradK> Why not just allow overscrolling the round viewport to see things that would get clipped by default? <fantasai> BradK, I think that's an excellent solution to the previous issue; and I think that's in fact what some of the watches do. Rossen: Remind me the use case? Florian: If you look at the UIs for such watches, Florian: They look round, Florian: Not just to avoid corners, Florian: But everything's round, let's be round, round buttons etc. Florian: But we can't make an MQ that only answers yes when perfect circle. <tantek> I'd like to see photos/screenshots to such "UIs for such watches" <fantasai> ask jihye to show you <tantek> like if you have these readily available and have seen them, please upload/email to www-style <tantek> so we can refer to them <jihye> http://anawhj.github.io/jRound/demo/weather/index.html <tantek> even better, perhaps we need a "watch-ui-examples" page on the wiki joone: I implemented device radius on Android. joone: Only one API that returns this information, joone: I think we need first talk to the platform team, joone: in MS or Apple or Google. joone: Making the API to return the device shape. joone: Before can make the media query API. Florian: The Android API returns "am I a circle or not." Rossen: Which works perfectly for... circles. hyojin: We're also positive to specify just rectangle and round as the values, but I don't know how to define the media feature syntax in Media Queries. Florian: Something like @media (shape: rectanglish|circlish) Florian: I'm not very excited about this, but don't have a better idea. Rossen: I think we have two proposals. Rossen: One is a binary switch. Rossen: Tells you whether or not rectangular. Rossen: Other one is actually get a shape. <heycam> An alternative might be for the author to declare the unsafe area around the page, and then the device can know whether any important content would be clipped out. This could be useful for the "square display with rounded corners" case. <joone> Here is the code for getting display shape information from Android Wear: https://github.com/joone/crosswalk/commit/4613bf9e2d266fe60a26631e475aaa7392e4c4c5q fantasai: I think there's three things that would be useful. fantasai: 1. Have a JS API that provides the screen shape. fantasai: That will allow you to build any logic for any MQ you want. fantasai: The two things that can work together are corner radius and corner shape, the radius would tell you the smallest number the cutoff and the shape would say the shape, square, round or weird. Rossen: Seem to have nothing approaching consensus. SteveZ: We need a solution for people to do something different for the round case. Florian: Authors are interested in "am I round". Florian: OS can answer am I a circle. Florian: So this is implementable and useful. Florian: We need to make the definition fuzzy enough. Florian: That when egg-shaped screens start existing. Florian: and OSes can be asked about it. Florian: An egg-shaped screen can describe themselves as round. Florian: But this is implementable, usable, pragmatic, overly simplistic, but not a terrible starting point. Florian: Device manufacturers that ship non-circular devices can adjust their Android... Rossen: Still no conclusion. SteveZ: Agree. Need an action to write up a proposal ACTION Florian: make proposal for round display media query <trackbot> Created ACTION-752
Received on Wednesday, 23 March 2016 21:32:34 UTC