Over a million developers have joined DZone.

CSS FlexBox Layout

· Web Dev Zone

Start coding today to experience the powerful engine that drives data application’s development, brought to you in partnership with Qlik.

Today I was trying to understand the FlexBox layout introduced in CSS and was impressed with what a few CSS properties can do to help you solve layout issues. The standard itself has gone through some iterations, but I believe the current one is stabilised and is not likely to change completely. Anyway, the layout proposed here helps you align the elements in the DOM tree horizontally and vertically. It also helps you reorder these elements.

To get a gist of what I’m saying, take a look at the below diagram:

Aligning using flexbox.

I have created three elements that are then placed inside a container. Now, there are different ways in which I may want to align these elements; for instance, I want these elements to be centered vertically but aligned to the right horizontally. I can use the float property and try to achieve that. But say if I want these elements to be aligned such that it is equally spaced horizontally, then I might have to add a few more properties and achieve the layout. Instead I can use new properties ‘justify-content’ and ‘align-items’ to achieve this layout. The ‘justify-content’ property is used to align the elements in the container horizontally and it can take the values – ‘center’, ‘flex-start’, ‘flex-end’, ‘space-between’ and ‘space-around’. Similarly, the property ‘align-items’ can be used to align the elements vertically, and it can take the values ‘center’, ‘flex-start’, ‘flex-end’, ‘baseline’ and ‘stretch’. Also, one needs to set the display property to flex.
#box {
        display: -webkit-flex;
display: -moz-flex;
display: flex;
-webkit-justify-content: center;
-moz-justify-content: center;
justify-content: center;
-webkit-align-items: center;
-moz-align-items: center;	
align-items: center;
-webkit-flex-direction: row;
-moz-flex-direction: row;
flex-direction: row;

view raw gistfile1.css This Gist brought to you by GitHub.
There is another property called ‘flex-direction’. That allows you to change a row to a column, i.e. the elements would be aligned vertically. It is also possible to reverse the direction, i.e. the last element in the container would appear first in the list. This property can take the values – ‘row’, ‘row-reverse’, ‘column’ and ‘column-reverse’. As observed in the above code block these properties are vendor specific and hence they are prefixed accordingly.

I thought of creating and inserting images into this post, but instead I have created a demo page where you can see these properties in action:

As of now these properties are supported only on Chrome 21+ and not available in any other browser.

Create data driven applications in Qlik’s free and easy to use coding environment, brought to you in partnership with Qlik.


Published at DZone with permission of Sagar Ganatra, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}