{"componentChunkName":"component---src-templates-post-js","path":"/blog/flexbox-start","result":{"data":{"markdownRemark":{"html":"<p class=\"intro\">I face a lot of problems when centering things in CSS. So I finally decided to learn CSS Flexbox. I started with Wes Bos's course <a href=\"https://flexbox.io/\" target=\"_blank\">What The Flexbox</a>. It's a great free course, check it out if you want to learn flexbox.</p>\n<h3>Introduction</h3>\n<p>The Flexbox Layout (Flexible Box) module aims at providing a more efficient way to lay out, align and distribute space among items in a container, even when their size is unknown and/or dynamic.</p>\n<p>The container or parent element is called \"flex container\" while the children are called \"flex items\". In Flexbox there are two axes - Main axis and Cross axis. The flex items will be aligned along these axes.</p>\n<figure>\n\t<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 650px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 42.94478527607362%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWklEQVQoz4WNWW+CQBSF+f//qMtDkxIr4sIyzB0YRhRqlVoYEdllpgmki+lDv3zJfTjn5CqH0/7AD9/GPA4/Qp1qC6qxeP1+et/zn8Ke7y9lk2c9T7tLflUMBzmAbew4BOar5cJYgU9hPsdTDVNqY4QAjzoEVrZ1TC9pJg9HcTpLBWb6GmBDSACA9DleLANCPF33NI1hHHoec5zRNcZgGLFtFy4UzBNFrqDJi29Zvmkyy7KnU2c2YwiRyYSoKrWsACFqGKO+aSJNS6NQnLM2TdoTVwh1KWPgkmdVvXt4vLt/eHpW0XLlmqbHmEup5/ujQ81Ns/KYyLdYnHOpbDZF01RNXadJ8hpF2yD44DwhwDdB3XV1WVYDZVm1bfUalVHY1lWf59e2EYpHWymlEHJE9L2UMgOodjv5Kxjv267bhj99RX4hBvphfPb98nZ8g/gzlr9eXIuiy3P5H5/tZutuYnIfgQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"Flexbox axes\" title=\"Flexbox axes\" src=\"/static/da715013ca99814ab4913ca3bba067be/a6d36/flexbox-axes.png\" srcset=\"/static/da715013ca99814ab4913ca3bba067be/222b7/flexbox-axes.png 163w,\n/static/da715013ca99814ab4913ca3bba067be/ff46a/flexbox-axes.png 325w,\n/static/da715013ca99814ab4913ca3bba067be/a6d36/flexbox-axes.png 650w,\n/static/da715013ca99814ab4913ca3bba067be/6db71/flexbox-axes.png 659w\" sizes=\"(max-width: 650px) 100vw, 650px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n\t<figcaption>Image Credit: CSS-Tricks</figcaption>\n</figure>\n<h3>flex-direction</h3>\n<p>The default direction of the main-axis is from left to right while the direction of cross-axis is from top to bottom. However, this can be changed by Flexbox property <strong>flex-direction</strong>. To understand how flex-direction changes these axes we need to see some code example.</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>container<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>box box1<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>1<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>box box2<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>2<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>box box3<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>3<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>box box4<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>4<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>box box5<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>5<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>box box6<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>6<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>box box7<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>7<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>box box8<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>8<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>I have taken a container div (flex container) and there are 8 divs (flex items) inside it.</p>\n<div class=\"gatsby-highlight\" data-language=\"css\"><pre class=\"language-css\"><code class=\"language-css\"><span class=\"token selector\">.container</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">display</span><span class=\"token punctuation\">:</span> flex<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">border</span><span class=\"token punctuation\">:</span> 10px solid #000000<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">flex-direction</span><span class=\"token punctuation\">:</span> row<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>For Flexbox to work we need to set the display property of container to flex. The default flex-direction is row and it would align the flex items as below:</p>\n<figure>\n\t<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 626px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 16.56441717791411%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA60lEQVQI13XDz0eDYQDA8fdv6LwOnTKlSz80jYo6d0iKzkub8m7pkE7Le2h1KV7rJca84mVpGhuLR0sTZWa9ve/T6z3Ey0PnoksT3+jeh482dJhjzD4ncSzIbl1ytHrG1EKKnD7P6/UgbSNOOzPB49IcNSOPU2/y3OsRhiFBEPyVvkQphWVZaOOVU5a9LunbD0rFN8TJE/uGw4Wtg1rj52GH77JOP7vOe7WC+vziP0IItIF8muFSkZnCDZsbDoUVk+nFFPr2LC9XMe4ORmhlJrlPjlLd28WuNeh2Okgp8TwP3/dxXZcoijBNk1+DpLAf8O0x7QAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"position of flex items for default flex-direction\" title=\"position of flex items for default flex-direction\" src=\"/static/cd355ab1cf19cc0c674f50d653ff99a0/af590/flex-direction-row.png\" srcset=\"/static/cd355ab1cf19cc0c674f50d653ff99a0/222b7/flex-direction-row.png 163w,\n/static/cd355ab1cf19cc0c674f50d653ff99a0/ff46a/flex-direction-row.png 325w,\n/static/cd355ab1cf19cc0c674f50d653ff99a0/af590/flex-direction-row.png 626w\" sizes=\"(max-width: 626px) 100vw, 626px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n\t<figcaption>flex-direction: row</figcaption>\n</figure>\n<p>There are mainly four values for flex-direction - <strong>row</strong>, <strong>row-reverse</strong>, <strong>column</strong> and <strong>column-reverse</strong>.</p>\n<p><code class=\"language-text\">flex-direction: row-reverse</code> changes the direction of main-axis from left to right.</p>\n<figure>\n\t<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 626px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 16.56441717791411%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA7klEQVQI13XOP0sCYQCA8fsYgotDDg6CDREIhdVQtEhjNKhQKEmInEr1BRIMwqUIsQjC0uEOCV0OGvqDUZdDxb33eoMeRYuD0BQ1PIF7D/z2R6lrGoN+H8uyEEKM9aTENE1qzRatnRwPK3PcZqa43wvwqvtIrEeYXUxzsFphI6MRLhmE6hW8ahzlRQj+62P0xefJMT/5ON+XBX5vEuDGqJ7mUbfPuC4+cXj+TsoYEpWPBMu7KA1dx3UH4zMpJbZt4zgO3ecuF1dt2oUsnYVJ7rLTdEpB3pp+kptLzC9vUV6rklZ1ZvYNJmpHeHIx/gBnvbEsXDTELQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"position of flex items for row-reverse flex-direction\" title=\"position of flex items for row-reverse flex-direction\" src=\"/static/638a2e83f677390e90e6dd5a9481adac/af590/flex-direction-row-reverse.png\" srcset=\"/static/638a2e83f677390e90e6dd5a9481adac/222b7/flex-direction-row-reverse.png 163w,\n/static/638a2e83f677390e90e6dd5a9481adac/ff46a/flex-direction-row-reverse.png 325w,\n/static/638a2e83f677390e90e6dd5a9481adac/af590/flex-direction-row-reverse.png 626w\" sizes=\"(max-width: 626px) 100vw, 626px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n\t<figcaption>flex-direction: row-reverse</figcaption>\n</figure>\n<p><code class=\"language-text\">flex-direction: column</code> changes the direction of main-axis from top to bottom.</p>\n<figure>\n\t<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 607px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 101.840490797546%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7DAAAOwwHHb6hkAAADBUlEQVQ4y33Kf0zUdRzH8c8//VEWoQhrd5QCYxVictDm2d0l+KtTpBMNEBA4LtePPwgraTRt41jTJi5+OEDg5I6GK0wsRQ/awrhYon/UVpe3VvJXfL+Hzu+tcP7RX8923+m67/d79Mdj7/dee4rUDzxkjBwjfchLuq9dI8PXTprPyxr/MXICn5A25FW39P8h0k61Yr5xFlNoGNP3AQ3zbIDVoTO8eOMc5T8HWTnjI3M2YOgSifQTrWROj2IODmOe9CeVORkg95tRTOrvX7aLE7ktfooCv2MZ/AXLUFijcCjMhsEwjpGbbBm9ScFg2NDoidz3P6fozAKW/j+wnJ7XKBqYJ6/3FjXn/6TpisS63lsUDswbukSioGmEkt55Nnf+yubuiEZxdwR7Z4S9p3/D1RfB0RUxNHqieccJ+t3T9BwIcqpu0qCnNkjfm98y0HSVnpp4M5W0e0i0bulgtHaa4aog/v1TGoHqKXz7rvD14VmunvxR/eObvksk3i5po6v6Kzoqv+Bk1ZhBR8UYXe7zdLq/pKNyLGmTSORbd+IoO8hLuxqx6ZV62LTTzbbyt3DVvsdGZ4O62ZK1D4i1RU7yt79O3tYG1m11a+RvbyTbVk1t83GavX1k2farm75LJEqcdqo9e6msd1HZoFUVv/UuajwuGt54jYr6+LbH0CUSE92Pc38ulbvfpaKEtGKhlSgzK4jNvYAyV0hsZgVKfAulLksE+x/jn59S+OvaEyzN6Vx/kqUfHuFeuJh7kXL+vvYoS9dTjF0CMXE8hftTq7l7MQ1lIplVxCbMKJfXoFxatUzzHzFeZ0Jpy2HhSDbSUb0cpA+fZvHTYm53b1N/dTuavSwx3vgUysdZLLStRdKR27ORjmRw57MD3D7rQfrIhOzNQvIa24fEeMUzKIfzWDj0HPK7es8jH3qWaEsBcotF/Y2NlrhgXU+s7GWkXXaieqUO5FesLNbt4c47HuQdVnWLJmsfEBc2rSf2qgOp1Ia8Wyu6247stLJY7yJ6sArZuZFomd3QJfoXAlrXmrXpsg0AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"position of flex items for column flex-direction\" title=\"position of flex items for column flex-direction\" src=\"/static/a36a0ada4f269dc8cf43d0913f3e328a/ef9e5/flex-direction-column.png\" srcset=\"/static/a36a0ada4f269dc8cf43d0913f3e328a/222b7/flex-direction-column.png 163w,\n/static/a36a0ada4f269dc8cf43d0913f3e328a/ff46a/flex-direction-column.png 325w,\n/static/a36a0ada4f269dc8cf43d0913f3e328a/ef9e5/flex-direction-column.png 607w\" sizes=\"(max-width: 607px) 100vw, 607px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n\t<figcaption>flex-direction: column</figcaption>\n</figure>\n<p><code class=\"language-text\">flex-direction: column-reverse</code> changes the direction of main-axis from bottom to top.</p>\n<figure>\n\t<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 609px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 101.840490797546%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7DAAAOwwHHb6hkAAADd0lEQVQ4y22KW1CUdRiHv5ummbAGq6kbXORkUwNyWEMOYsZMKLDbyoLBrghcEMZaVlBDsAsWBjQ1HayU3eXUKlAoFwbFIVlOQsGips2YspEMZ1IHbCbUppme5vtPN/uxF8+8z/zeRzJXVuFo/hpbgwN700kP6uTb6KDpZAsNjmbhdYpGxlrfRHNbOwWFh5DqWk/j+uUaQ65LDE9c9uD8hcsMjl/CPTPPlckp4fKm7AbHLvLz9d95r+ZDpFqrndHBYfp6fqC/t28dzt4+Rp0DnD/nFO6tOdfVi2t0jAqzBalTm8jNAzqmjRpm9mvXk5XC7KFcZk05wr01Nwyp3MnTc3yHGqknIYo/k+NY3B3DspI9cSw9H8UtUy5/vGxgKTFKbMpuPimGe5od2MNDkLpfULOaEc98WiyL+rj1yHvmcyym/+9emrm9saxlJmCL3oLUXRDAakUw86VBLJYpCWahNIDlmniWjqqFy5uym30niLXKLVjTnkTqOriZlXcDmTMHsmBRUB7EQqkft8+8zbJtn3CxKbrZsgD+ej8Yq/4JpJ43VNz5yJ+Fan+WarxQrWL5szCWPgkV7q2Zr/Ln7qcB2AyPIznrH+XeqC+3nb6sDCjZyEr/w6yObGVlKEC42BTdrT5f/p3YSGOFD9Jo8yNw5SHujvlwf1yBawP3xx7gn8m9/H01UbjYFN3aTz7w6wZaqh5EOvWxH1c7VEyc2cTFdpUX/BhvD8XV/rRwb42rbRPubn8+KHoMKXSXjlhNHttTDrA9JceDmNQc1ElGdLmvkrrfJFzelF10cjbxunyCI3cihSRoCE/OJmy3ga0KwpONhOzSU1x9DOPrFuHypuzCkrKI1OSiCo9H2pmYR5quBK2miBe1xevQaovRad8SaL38RaMpIl1vRq3WIFk0tTiy+7Ebuqgz9nhQb+zBntlNW9Ewra8NCK9XNDK2rO9pyR3hYHwZ0pE9X9Ca2UtTRgdf7ev05KVOGtK+5buSIbrMw8LlTdk1ZpzltHEAU0wJUr6hgcrDP2Ix9VNuGlxP4QBHi0eoODwk3FtjLnRS9eYF0pOOID1V0UlU0xwRVjcRtikPIu1ThFl/Q9MyTWrrtHB5U3YRtddRn7rJ5oLPkZ4p7yC6fpZtJybZVuv24Fmrm/Av3bxydgbDNzeEy5uyUx+/RoxjmcD8Y/wHmif9DVShHNIAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"position of flex items for column-reverse flex-direction\" title=\"position of flex items for column-reverse flex-direction\" src=\"/static/9329767449cac53ed6324d533a3b9592/d0d8c/flex-direction-column-reverse.png\" srcset=\"/static/9329767449cac53ed6324d533a3b9592/222b7/flex-direction-column-reverse.png 163w,\n/static/9329767449cac53ed6324d533a3b9592/ff46a/flex-direction-column-reverse.png 325w,\n/static/9329767449cac53ed6324d533a3b9592/d0d8c/flex-direction-column-reverse.png 609w\" sizes=\"(max-width: 609px) 100vw, 609px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n\t<figcaption>flex-direction: column-reverse</figcaption>\n</figure>\n<p>This is it for today's post. I will continue to share about Flexbox in my future posts.</p>","timeToRead":2,"frontmatter":{"title":"Understanding flex-direction in Flexbox","date":"2017-10-15T00:00:00.000Z","tags":["CSS"]}}},"pageContext":{"slug":"flexbox-start"}},"staticQueryHashes":["3649515864","63159454"]}