{"componentChunkName":"component---src-templates-post-js","path":"/blog/flexbox-wrapping","result":{"data":{"markdownRemark":{"html":"<p class=\"intro\"><span class=\"dropcap\">I</span>n my last post I explained flex-direction. In this post I will be explaining <code>flexbox-wrap</code> and <code>order</code>.</p>\n<h3>flex-wrap</h3>\n<p>By default the flex items will shrink if there is not enough room in container instead of moving to the next row. This happens because <code class=\"language-text\">flex-wrap</code> is set to <code class=\"language-text\">nowrap</code> by default and it stops flex items from wrapping.</p>\n<p>To understand how <code class=\"language-text\">flex-wrap</code> works, I am going to use the code below:</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<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 punctuation\">}</span>\n\n<span class=\"token selector\">.box</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">width</span><span class=\"token punctuation\">:</span> 33.333%<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>One box will take up 33.333% width of the container. So, only 3 boxes should be present in first row. But if you check the output it looks like 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,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA/klEQVQI1wHzAAz/ACCGcv8pppP/M4y0/0l+t/+NXqX/c1CH/ytCXP9va0H/1rQf/8WJHv/DdDP/xFcz/8RVTf+tkpL/na6u/0uvdP8wq2r/J494/y+Zhf8dZVf/ADOqkf9G1MH/WL3k/3Wn5/+9jtv/m3mx/26Cn/+blF3//+5o//q5Q//7uYP/93ZK//Z4cP/kvLv/0Onm/4Lkqv9k3qH/Q7yf/3XXxf9BiXr/ABSAa/8doIz/OIux/0N5sv+JWaH/cU+F/y5DXf9sZzz/0rEg/8GGHv+/czT/wFMv/79AN/+qjYz/mKqq/0Oqbf8rpmX/FoZt/yqUgP8aYVP/9/iXPbs54XYAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"position of boxes for default flex-wrap\" title=\"position of boxes for default flex-wrap\" src=\"/static/5d736840c60b5a206290492f0d3c0328/af590/flex-wrap-nowrap.png\" srcset=\"/static/5d736840c60b5a206290492f0d3c0328/222b7/flex-wrap-nowrap.png 163w,\n/static/5d736840c60b5a206290492f0d3c0328/ff46a/flex-wrap-nowrap.png 325w,\n/static/5d736840c60b5a206290492f0d3c0328/af590/flex-wrap-nowrap.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-wrap: nowrap | default</figcaption>\n</figure>\n<p>We can see that the boxes are shrinking themselves and staying in the first row. To change that we need to change <code class=\"language-text\">flex-wrap</code> to <code class=\"language-text\">wrap</code>. Then, the output would look something like below:</p>\n<figure>\n  <span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 625px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 59.50920245398773%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAA7DAAAOwwHHb6hkAAADLklEQVQoz5WKX1DTBQCAfy8+9dB1SYjHXUV3sLYokQ25DpSNXSHOc9rFHwdI2UxGeSTHBFwOITUkILzGAI0Z1oo8QxCXBY6xBfvzc07mcCLUQxZ5nXXmlQrb3dfla3fd9d19d9/DJzxmrmJln5lVlndJ6W1mpcXE49YGkts6eK5+GEnDGRTmIRQHhpDUn0HW8BVVr1gxqzsxbeyiZZuF/S930lzYQ5miGuGJz4+SFLCTMvUpumsXSfQMkOTt5xnHtyj6fkXW9xO7zv/OztHfkPb8jPzjRQ4bfJwqHudk5SSuj6J89qYbe7kXo7oDIdFqJvnCcVYPW0g710fyiJWk0WNIBgdR9YTI6RHR2UW0JwMPO69XpLVqhIHiQWzlpzldcxZbxZfYK85Rl38AQVpYRGbpbjKL9Sh37UVespNUbRVvm7TcnEolOp5KxLWBa65s5pypzDml3Ghdy7xRzrwpmxsthVyvV7DYtI6B7WkIkhwtsvwy1KV7aP7QRrq6lKdz38BYmwtBgT8nBZZnN7IUVnLfLXB/agV32hO5XZfInaNruTfSwO0WKctNSZwtS0BQbdCwZZMOrUZH+auvo91UQr6yjPfqCrgrSlicfJZfptezOJXDLU8atzwyZrrT8R9KJ9CWgc+Sj7c1g9nOF+jWpyCMKRXc3Lye+a1qFqorWdii5Ae1gvC+t3CKXiZc4/j8k0z7XTjdTiY8Tkq8B1njM5Dnr2V7sIlcbw0vXq1FatmGEMxdw1LBOu5uVfFXjZ4/CrK5l/c839dW4/CFuDDuJhi+jj8UwXHxO75xTfOS7yCrAnoygkbqFk6RdWkfT0b2sLpbi3BCm4ezcjMjOzSMVmhwVGj4ukjFxBETl6LziJevcDkcIThzFTEURrwSxjhroyj6ATuiXeyes6KLdPDaj1bUNgNCwpEaEgYOI/+ii4LhE2QOHmOFtRGDa4h/WIotE4vFiMfj/zIWj/EgvsyDpaWH79jYGMKjbXt5xP4+WcO9VE+PonLYEI6bMPjO83/xuN0I0kYD6e2NyFqNZHWYkLfv56lD76D/pJvZ0Az+QABRFP9Tv99PJBKhv7+fvwHdpY7JqeYk5wAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"position of boxes for wrap flex-wrap\" title=\"position of boxes for wrap flex-wrap\" src=\"/static/97e5ccdd3777a7cc3c25cffd12f5ba31/80d71/flex-wrap-wrap.png\" srcset=\"/static/97e5ccdd3777a7cc3c25cffd12f5ba31/222b7/flex-wrap-wrap.png 163w,\n/static/97e5ccdd3777a7cc3c25cffd12f5ba31/ff46a/flex-wrap-wrap.png 325w,\n/static/97e5ccdd3777a7cc3c25cffd12f5ba31/80d71/flex-wrap-wrap.png 625w\" sizes=\"(max-width: 625px) 100vw, 625px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n  <figcaption> flex-wrap: wrap </figcaption>\n</figure>\n<p>Now, we get the expected result. There is one more value for <code class=\"language-text\">flex-wrap</code> which is <code class=\"language-text\">wrap-reverse</code>. As expected, it reverses the flex items as seen in the output below:</p>\n<figure>\n  <span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 627px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 59.50920245398773%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAA7DAAAOwwHHb6hkAAADPElEQVQoz5XDbUyUBQDA8acPfWlrq2Y4qLQ2hZA1FJiIIN4hJC+KyI7Mg+h8QYF5yEUDaWpyh3c4XTZJQECwQzLc3J0kXnhF3B08D8cdeBzcQa6W5damt8UUlbtj49/Wp7Y+9dt+woojJURoj/B2QxVrGjW8ozvKS/UHKGhpwuNyMyqKSJL0n+K/joijeCYnaL12DeHVc7W83HeW9NvdaNxWcq29CN2nOCjd4v9yzs4hvKFVs6pLR3SHlqze86T0nOOV5joOD34Ly7AYDBIMhf4ZCocJhcI8DS/yJPyMx+FnzIcWmA8usMwyFrcT4esd6Uwos3EU52JTf4RdmcPo7nTEkzVIUz7EcTduzxQuzxSia4Ix9yTqqTayp7UoZs5wYLaZ3V4Dhfea2GKqRRBliSzlbOJxgYzg8Wqe5KXyXB7P/epyLJIXyw8ikzO/4PbeY2BIwmpzke3Us9J9mARPPfW/9ZF89zirvGrevF6G0JeRgn+nnIn8bYzv3MbkDjl3MzfjqinD4RzAYTPhlMxI4k0cdjOjDjOH7J8hsx8k115BsUNDjq2C7LEKko0fIyTJdiHPK0WWW8Je1VHkeUqSMlTUabbz1BnFQ1skgbFNBKQNBOyRBEbe4tfmaOZOxvCz/j1mm7Pw6+J4cDqaqzXrEdalFRCfUUymohL9F5dJyPyQ6LR91FRtBfcLPLcLLPm2szSdSdAhEBJfZP7LCB7VRfDX2fUs9NfxyBDH4ucr6K+OQYgpLGbDfjXxqkoSD1WRsK+CtUo1+08o8f60EedgMs4fs5CsmbjubGTcmsJ0Uzr+Ghn+Y3J8J/KZrs3gfv1WjJUZCBEdWqKGulj9fTtpw98QaWkn8k4La27cIKVljsSWGfKNPgp7/CRe9JHc5kdbYaW7yExHyXdc1wzSWdqPca+FWkUrwmtGPSvHeomyXWHXlIUI2xVeH+lk9cBtktr/ZF3b75TdCqC6+ZDY1j9IuPwAXaVIT9Eg3aVDDJ330ls+zNU9wxxTdCGs1X9KbJeBdy/piGtvJLa9kZjOBuIvXGDLqX42N5h4X29GpjOR2mAiVWvmE1UnhsKvaNzTiqGkDd0HFzlTdIlyxWn+Bs1Pjn9CegTZAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"position of boxes for wrap-reverse, flex-wrap\" title=\"position of boxes for wrap-reverse, flex-wrap\" src=\"/static/0b6ae4ffac9fb69636797861038cbf19/e9c9b/flex-wrap-wrap-reverse.png\" srcset=\"/static/0b6ae4ffac9fb69636797861038cbf19/222b7/flex-wrap-wrap-reverse.png 163w,\n/static/0b6ae4ffac9fb69636797861038cbf19/ff46a/flex-wrap-wrap-reverse.png 325w,\n/static/0b6ae4ffac9fb69636797861038cbf19/e9c9b/flex-wrap-wrap-reverse.png 627w\" sizes=\"(max-width: 627px) 100vw, 627px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n  <figcaption>flex-wrap: wrap-reverse</figcaption>\n</figure>\n<h3>order</h3>\n<p>In Flexbox, we can change the order or precendence of individual flex items by applying the Flexbox property <code class=\"language-text\">order</code>. By default all flex items have <code class=\"language-text\">order</code> set to <code class=\"language-text\">0</code>. If we set <code class=\"language-text\">order</code> of one box (say box 3) to <code class=\"language-text\">1</code> then it will appear after all the flex items which have order less than <code class=\"language-text\">1</code>.\nLet's look an example here:</p>\n<div class=\"gatsby-highlight\" data-language=\"css\"><pre class=\"language-css\"><code class=\"language-css\"><span class=\"token selector\">.box3</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">order</span><span class=\"token punctuation\">:</span> 1<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<figure>\n  <span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 627px; \">\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,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA/klEQVQI1wHzAAz/AB6Fb/8ropn/PozB/zRdfv9HT1D/vKQr/86YIP/DcTD/xlY3/71oYf+vp6//aK+J/zCvaP8nknf/KZR+/zqDgv+HVJ3/sZm8/+jo5P+WqKr/ADKpj/9T1Mz/cMD0/2aQs/+Ok4z/6dRi///TX//5sHf/+39e/++If//r4Oj/m+W9/3TmqP9BvZ7/cdO9/2qus/+/jdT/6NDy//////+8ztD/ABF8Zf8jmY//Poa4/y5XeP9DSkv/s5wl/8SQIP+5bTD/vE0w/7NORf+noan/XqV+/yqlYP8Xhmv/IIt0/zZ8e/+AUJX/qJKy/97e2f+PoaP/7/qfRAY4m/IAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"position of box 3 after setting it&apos;s order to 1\" title=\"position of box 3 after setting it&apos;s order to 1\" src=\"/static/b3ce49051e07eb318fa623fe51433ccc/e9c9b/order-1.png\" srcset=\"/static/b3ce49051e07eb318fa623fe51433ccc/222b7/order-1.png 163w,\n/static/b3ce49051e07eb318fa623fe51433ccc/ff46a/order-1.png 325w,\n/static/b3ce49051e07eb318fa623fe51433ccc/e9c9b/order-1.png 627w\" sizes=\"(max-width: 627px) 100vw, 627px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n  <figcaption>order: 1</figcaption>\n</figure>\n<p>All the boxes except box 3 have <code class=\"language-text\">order 0</code> so they appear before box 3. Similarly, if we change the order of box 5 to <code class=\"language-text\">-1</code> then it will appear before all the boxes as seen below:</p>\n<div class=\"gatsby-highlight\" data-language=\"css\"><pre class=\"language-css\"><code class=\"language-css\"><span class=\"token selector\">.box5</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">order</span><span class=\"token punctuation\">:</span> -1<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<figure>\n  <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,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA/klEQVQI1wHzAAz/AKiLH/+trTb/JqWL/zCTqf9Eg7X/Lk1n/3BaR//MeC3/w1U5/71oYf+vp6//aa+J/zGvaf8pknj/KpR+/zuEgv+HVZ3/sJe6/+fr5v+WlZb/ANO2UP/X4m//SdO1/03A1/92s+T/a4ym/6SPfv//tHH/93xe/+2IgP/q3ub/muS8/3Pkp/8/u5z/b9G7/2itsf+8i9L/5c3v//////+6urr/AKqNIP+trz3/GaKH/zeXq/9FhLX/NFNs/3NcSf/OfTT/xFM4/7xVTP+wqrL/Zq+H/zGvaP8ejnP/KZR+/z2Fg/+JWJ//sZm7/+ns6P+Xl5j/PXigxb99S0UAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"position of box 5 after setting it&apos;s order to -1\" title=\"position of box 5 after setting it&apos;s order to -1\" src=\"/static/d6d0bc5a8032b00fcd5fcfbf9df8d589/af590/order-2.png\" srcset=\"/static/d6d0bc5a8032b00fcd5fcfbf9df8d589/222b7/order-2.png 163w,\n/static/d6d0bc5a8032b00fcd5fcfbf9df8d589/ff46a/order-2.png 325w,\n/static/d6d0bc5a8032b00fcd5fcfbf9df8d589/af590/order-2.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  <figcaption>order: -1</figcaption>\n</figure>\n<p>Order of flex items is a relative concept. The order of a flex item will depend upon the order of other flex items. For an example if you set the order of box 3 to 100, even then it does not imply that box 3 will appear last in this list. Box 3 will appear last on the list if and only if other boxes have order less than 100.</p>\n<p>Once again, I would like to remind that I am taking a free Flexbox course <a href=\"https://flexbox.io\" target=\"_blank\" >What The Flex Box </a> by Wes Bos. It is a great course and you should check it out if you want to learn Flexbox.</p>","timeToRead":2,"frontmatter":{"title":"Understanding wrapping and ordering in Flexbox","date":"2017-10-16T00:00:00.000Z","tags":["CSS"]}}},"pageContext":{"slug":"flexbox-wrapping"}},"staticQueryHashes":["3649515864","63159454"]}