Hi, I just discover this:
http://weblog.bocoup.com/dive-into-flexbox/ "Flexbox is a new layout mode in CSS3 that is designed for the more sophisticated needs of the modern web" and this: http://devbryce.com/site/flexbox/ someone was aware of this? btw, curious name "flex", isn't it? ;) 2014-04-10 15:47 GMT+02:00 Peter Ent <p...@adobe.com>: > This is good information. > > To keep things simple for the time being, the JS side pretty much has > everything wrapped in its own <div> with a couple of exceptions, I think. > The display mode is always block. We pretty much want the developer to > have control over position just as they do with Flex. Containers with > layouts will implement the layout in JavaScript as best as possible. I'm > sure we will all be doing some tuning on this front. > > I'm not sure about SVG and skins and such so keep the discussion going. > > Peter Ent > Adobe Systems > > On 4/9/14 8:54 PM, "jude" <flexcapaci...@gmail.com> wrote: > > >One more thing to keep in mind is display modes. There are some such as > >inline(?) that ignore width and height values and instead size to fit. > >Then > >there are some, like block, that fill all available space in a container > >pushing all other elements to the next line. Then there is inline-block > >which allows you to set the width or height and still remain inline. > > > >I've also encountered a case where text has padding above it and this > >increases the larger the font size. Flash does not do this (in my tests). > >The text is always flush against the top of it's own container. But in the > >browser (or merely in my tests) it's more like 1-10 px more offset from > >it's container. This partially has to do with line-height. This is the > >current problem I'm trying to solve and have a couple of solutions which > >partially work but there is still a small amount of padding and haven't > >been extensively tested. Feel free to email me or better yet continue to > >post to the list. > > > >Another thing to consider is if it's possible to use different skin types. > >Since there are different bead types, you could have a view that takes a > >different approach to how it renders the visuals using browser controls > >(vanilla) that point to a style name or something like pseudo facade > >controls that are based on static images (that don't stretch) or dynamic > >pseudo controls that drawn on the canvas or with svg (that can dynamically > >be resized and continue to appear correctly). > > > > > > > >On Tue, Apr 8, 2014 at 7:53 AM, Peter Ent <p...@adobe.com> wrote: > > > >> This is an interesting idea. I'll try it out. > >> > >> Thanks! > >> --peter > >> > >> On 4/8/14 7:44 AM, "Harbs" <harbs.li...@gmail.com> wrote: > >> > >> >It might be a good idea to prefix all Flex CSS with a Flex prefix so it > >> >does not step on settings for the rest of the web page. > >> >For this example something like this: > >> > > >> >.apacheFlex *, . apacheFlex *:before, . apacheFlex *:after { > >> > -moz-box-sizing: border-box; -webkit-box-sizing: border-box; > >> >box-sizing: border-box; > >> > } > >> > > >> >As long as the base div of the application has an apacheFlex class, > >>that > >> >should isolate the css to the app. > >> > > >> >On Apr 8, 2014, at 12:59 PM, <mark.kessler....@usmc.mil> wrote: > >> > > >> >> I believe the only thing to lookout for when using the global(*) on > >>the > >> >>border-box is that it will affect images too. Meaning it will push > >> >>border size and padding inside of its bounding area and scaling the > >> >>image down. Setting the images back to a regular box should work. > >> >> > >> >> -Mark > >> >> > >> >> -----Original Message----- > >> >> From: Peter Ent [mailto:p...@adobe.com] > >> >> Sent: Monday, April 07, 2014 2:46 PM > >> >> To: dev@flex.apache.org > >> >> Subject: Re: [FlexJS] CSS Box Model > >> >> > >> >> Thanks your help and insight. After some experimentation, the > >>border-box > >> >> model is how we'll proceed. Thus .width and .height properties will > >>be > >> >>the > >> >> bounding box for the component with border and padding inside this > >>box. > >> >> > >> >> We'll take the margin information under advisement, but I think I > >>agree > >> >> with this, too. > >> >> > >> >> --peter > >> >> > >> >> On 4/7/14 10:32 AM, "jude" <flexcapaci...@gmail.com> wrote: > >> >> > >> >>> Welcome to HTML world. I've been mulling over this for the last few > >> >>> months. > >> >>> I agree that the border box model would be closer to what people > >>would > >> >>> expect. The default box model is based on the original use case of > >> >>>layout > >> >>> and position of documents not applications. The border box model was > >> >>> specifically made to give you more control over the layout and > >>design. > >> >>> > >> >>> Fortunately, it's at a point you can use it, > >> >>> http://caniuse.com/#search=border-box. > >> >>> > >> >>> You can enable or disable it or box model with: > >> >>> > >> >>> *, *:before, *:after { > >> >>> -moz-box-sizing: border-box; -webkit-box-sizing: border-box; > >> >>>box-sizing: > >> >>> border-box; > >> >>> } > >> >>> > >> >>> Also, for an interesting insight into what it does add an outlines: > >> >>> > >> >>> *, *:before, *:after { > >> >>> outline:1px dotted red; > >> >>> } > >> >>> > >> >>> There have been talks about using SVG for components visuals and I > >> >>>think > >> >>> there's something there. Om did some work with SVG skins and I've > >>been > >> >>> experimenting with them as well. There's a strong possibility of > >> >>>getting a > >> >>> 1:1 of both the Flash and HTML visuals that way. The size, position > >>and > >> >>> look are nearly identical in my tests. Why it's not used more is a > >> >>>mystery > >> >>> to me. But it shouldn't be surprising. AJAX was around for 4yrs > >>before > >> >>>it > >> >>> was used. Someone just needs to prove it's possible for it to take > >>off. > >> >>> > >> >>> For buttons, for example, you would use: > >> >>> > >> >>> <input id="Button1447" type="button" value="Button" > >>class="buttonSkin"> > >> >>> > >> >>> .buttonSkin { > >> >>> background: url(assets/svg/button_skin_up.svg) 0 0 no-repeat; > >> >>> border: 0px; > >> >>> } > >> >>> > >> >>> .buttonSkin:hover { > >> >>> background: url(assets/svg/button_skin_over.svg) 0 0 no-repeat; > >> >>> border: 0px; > >> >>> } > >> >>> > >> >>> .buttonSkin:active { > >> >>> background: url(assets/svg/button_skin_down.svg) 0 0 no-repeat; > >> >>> border: 0px; > >> >>> } > >> >>> > >> >>> Conversion will be much easier if we don't support margins. The only > >> >>>place > >> >>> I would use margins is in horizontal or vertical layout. For > >>example, > >> >>>if > >> >>> you have 5 elements in a div, set the right margin on all the > >>elements > >> >>>but > >> >>> the last to the gap. I believe that was what margins were intended > >>for > >> >>>to > >> >>> begin with. > >> >>> > >> >>> My thought is that we don't support the HTML style unless or until > >>we > >> >>> support it in Flex. So for example, HTML supports border top, > >>bottom, > >> >>> left, > >> >>> and right but FlexJS / Flex 4 doesn't (out of the box). We wouldn't > >> >>> support > >> >>> this until we have a Flex skin that supports it. > >> >>> > >> >>> HTML also has a unsupported styles thing that you saw in the css > >> >>>before: > >> >>> > >> >>> -moz-box-sizing: border-box; -webkit-box-sizing: border-box; > >> >>>box-sizing: > >> >>> border-box; > >> >>> > >> >>> When you start adding in all the browsers you'll have -ie, -moz, > >> >>>-webkit, > >> >>> -chrome, etc just for one style. IMO if you go that route you're > >>gonna > >> >>> have > >> >>> a bad time. If we can use SVG you can gain that ground back. > >> >>> > >> >>> Also, imo, I wouldn't try and support the lowest common > >>denominator. Go > >> >>> for > >> >>> a baseline of something like IE 8 or IE9 and use polyfills for > >>fallback > >> >>> (some of which are FP) if absolutely vital. > >> >>> > >> >>> > >> >>> On Mon, Apr 7, 2014 at 8:20 AM, Peter Ent <p...@adobe.com> wrote: > >> >>> > >> >>>> So this is a crazy, no-win situation. Our box model is either > >> >>>>compatible > >> >>>> with the "standard" of most browsers or compatible with some quirk > >>or > >> >>>> extra feature that attempts to make sense out of something that > >> >>>> shouldn't > >> >>>> have been done in the first place. > >> >>>> > >> >>>> Or, to put it another way, we are trying to impose a > >> >>>>UI/graphics-focused > >> >>>> model & framework onto a system not designed for it and geared > >>toward > >> >>>> page > >> >>>> layout. > >> >>>> > >> >>>> Sigh, > >> >>>> Peter > >> >>>> > >> >>>> On 4/6/14 6:41 AM, "Harbs" <harbs.li...@gmail.com> wrote: > >> >>>> > >> >>>>> I think the default of the css box model is broken by design. > >> >>>>> > >> >>>>> I'd think the solution is simply to stick to using border-box. > >> >>>>> http://css-tricks.com/box-sizing/ > >> >>>>> > >> >>>>> On Apr 4, 2014, at 9:54 PM, Peter Ent wrote: > >> >>>>> > >> >>>>>> Hi, > >> >>>>>> > >> >>>>>> I've been working on a mobile app example for FlexJS as a way to > >>try > >> >>>>>> out the Flex JS in a practical manner with the intent of running > >>the > >> >>>> app > >> >>>>>> using PhoneGap. In the course of doing this I've been running > >>into > >> >>>>>> things that need adjustment. > >> >>>>>> > >> >>>>>> One of them is the box model. Right now FlexJS is sort of a > >>hybrid > >> >>>>>> between ActionScript and JavaScript. I'll use the .width > >>property as > >> >>>> an > >> >>>>>> example. > >> >>>>>> > >> >>>>>> In Flex, when you give a component a width of 50 pixels that > >> >>>> component > >> >>>>>> is 50 pixels wide. Some components, such as a container, would > >> >>>>>>embed a > >> >>>>>> scrollbar if its content were greater than 50 pixels. But you > >>can be > >> >>>>>> sure that your component is 50 pixels wide and you can position > >> >>>>>>other > >> >>>>>> components knowing that. > >> >>>>>> > >> >>>>>> If you add padding to the component, that will offset the > >>interior > >> >>>>>>by > >> >>>>>> that amount. If you make a Container 200 pixels wide and give it > >>a > >> >>>>>> padding of 10 pixels, positioning a child of that container at > >>(0,0) > >> >>>>>> will render the child 10 pixels in from the left and 10 pixels > >>down > >> >>>> from > >> >>>>>> the top. The child thinks it is at (0,0) and the Container will > >> >>>>>>remain > >> >>>>>> 200 pixels wide. > >> >>>>>> > >> >>>>>> In the CSS Box model, things work differently. If you make an > >>HTML > >> >>>>>> element 50 pixels wide and give it a padding of 10 pixels, the > >> >>>>>>overall > >> >>>>>> width of the HTML element will be 70 pixels: the 50 pixels are > >>the > >> >>>> width > >> >>>>>> of the content area and 2*10 pixels (left and right) are the > >>padding > >> >>>>>> added to that. > >> >>>>>> > >> >>>>>> HTML goes further and adds on border thickness and margin; Flex > >> >>>> doesn't > >> >>>>>> have margins. > >> >>>>>> > >> >>>>>> I was having trouble getting things to align because I would > >>make a > >> >>>>>> ButtonBar 480 pixels wide and it was turning out to be wider than > >> >>>> that. > >> >>>>>> When I looked into the code, I saw that making a component 480 > >> >>>>>>pixels > >> >>>>>> was just the start: I was getting that plus a padding on each of > >>the > >> >>>>>> buttons that make up the button bar plus the width of the border > >> >>>> around > >> >>>>>> each button. > >> >>>>>> > >> >>>>>> This makes alignment very difficult because you must ask for more > >> >>>> than > >> >>>>>> just width (or height). > >> >>>>>> > >> >>>>>> I suggest FlexJS completely adopt the CSS Box Model. This means > >> >>>> setting > >> >>>>>> a component's width isn't going to take into account its padding, > >> >>>> border > >> >>>>>> thickness, and margin - it is just going to set the component's > >> >>>> content > >> >>>>>> area width. For example, if I make a Button's width be 50 pixels, > >> >>>>>>the > >> >>>>>> text will be placed within that 50 pixel content area, but there > >>may > >> >>>> be > >> >>>>>> padding, a border, and a margin surrounding the Button. If I want > >> >>>>>>all > >> >>>> of > >> >>>>>> my Buttons to align horizontally with no gaps, I should make sure > >> >>>>>>the > >> >>>>>> Buttons do not have any margin. > >> >>>>>> > >> >>>>>> What this means is that .width won't set the overall width of the > >> >>>>>> component. This may affect layout calculations which will have to > >> >>>>>> examine the component's margin, border thickness, and padding > >> >>>>>>values. > >> >>>> So > >> >>>>>> I suggest making it simple (height dimension would have similar > >> >>>>>> properties of course): > >> >>>>>> > >> >>>>>> .width is the content area. > >> >>>>>> .padding is the padding around the content area, inside the > >>border. > >> >>>>>> .borderThickness is the thickness of border that surrounds the > >> >>>> padding > >> >>>>>> and content area. > >> >>>>>> .margin is space around the component. > >> >>>>>> .x will position a component's upper-left margin. > >> >>>>>> > >> >>>>>> .overallWidth will be .width + 2*.margin + 2*.padding + > >> >>>>>> 2*.borderThickness > >> >>>>>> > >> >>>>>> You can use .overallWidth to position elements in layouts as it > >>will > >> >>>>>> account for all of the extra space in a component's box. > >> >>>>>> > >> >>>>>> Further, for Flex JS 1.0, I suggest we keep it simple to padding, > >> >>>>>> margin, and borderThickness and leave edge specifics (e.g., > >> >>>> padding-top, > >> >>>>>> margin-bottom) to another release or a developer can create their > >> >>>>>> component or override functions to account for that. > >> >>>>>> > >> >>>>>> Finally, it should be easier to build applications because you > >>can > >> >>>> let > >> >>>>>> CSS have a greater say in the size and positioning of components. > >> >>>>>>For > >> >>>>>> example, if I want to make a row of buttons that are all > >>touching, I > >> >>>>>> just create a Container with a horizontal layout and put the > >>Buttons > >> >>>>>> into it. Then in CSS, I specify that the Buttons have zero margin > >> >>>>>>and > >> >>>> if > >> >>>>>> I want them inset within the Container, I give the Container, via > >> >>>>>>CSS, > >> >>>>>> some padding. > >> >>>>>> > >> >>>>>> Thanks for your time, > >> >>>>>> > >> >>>>>> Peter Ent > >> >>>>>> Adobe Systems > >> >>>>>> > >> >>>>> > >> >>>> > >> >>>> > >> >> > >> > > >> > >> > > -- Carlos Rovira Director de TecnologĂa M: +34 607 22 60 05 F: +34 912 94 80 80 http://www.codeoscopic.com http://www.directwriter.es http://www.avant2.es