I really wish we could use this as the default model, but I think we have
to go with what most browsers support. Maybe in a couple of years we can
adopt this. That said, I don't see why someone couldn't contribute a set
of FlexJS layout beads that use it.

Peter Ent
Adobe Systems

On 4/13/14 8:51 AM, "Harbs" <harbs.li...@gmail.com> wrote:

>Yes. Flexbox is really good for relative layout. HTML is working hard at
>catching up with what we take for granted in FlexŠ ;-)
>
>Of course the problem is Internet Explorer:
>http://caniuse.com/#search=flexbox
>
>There's some great info on css-tricks.com on flexbox:
>
>http://css-tricks.com/snippets/css/a-guide-to-flexbox/
>
>and here's a video that gives you an idea what you can do with it:
>http://css-tricks.com/video-screencasts/131-tinkering-flexbox/
>
>Harbs
>
>On Apr 13, 2014, at 11:38 AM, Carlos Rovira wrote:
>
>> 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
>

Reply via email to