# Flex grid system ###### tags: `HyUI` `Lize` :::warning 格線系統:以<span class="focus2">flex</span>為計算基礎,主要功能是分割欄位。 檔案名稱:sass / common / <span class="focus2">_grid-flex.scss</span> ::: <style> /* 顏色設定 <span class="blue"></span>*/ .title{ font-size: 26px; color: #fff; background:#00469C; display:inline-block; padding: 10px 20px 10px 30px; border-radius: 4px; } .sub-title{ font-size: 20px; color: #00469C; } .box{ padding: 1em 2em; background:#f5f5f5; margin: 10px 0; border: solid 1px #aaa; } .focus { color: #B20050; } .focus2 { color: #222; border: solid 1px #c8c8c8; display: inline-block; padding: 2px 10px; margin: 0 4px; border-radius: 4px; background: #fff; } .link{ font-size: 20px; color: #B20050;} .ui-infobar{ max-width:95%; } .markdown-body{ max-width:95%; } </style> <!-- ## 標題 :::warning 簡介 ::: ```sass= .a{ text-align: center; } ``` ```htmlmixed= <a>123</a> ``` --> ## flex grid system flex grid system 分割方式有兩種: 1. 『<span class="focus">[均分(equal)](#item-1):arrow_down:</span>』 2. 『<span class="focus">[自由分配](#item-2):arrow_down:</span>』 3. 『<span class="focus">[混合運用](#item-3):arrow_down:</span>』 ### <span class="title" id="item-1">均分(equal)</span> :::warning 每欄<b class="focus">欄寬都相同</b>,目前預設2-12欄均分,未來可能會調降最多欄數。 算式:<span class="focus2">100% ÷ 欄數</span> ::: ```sass= // step 0、設定共用的 margin gutter $m-gutter: 4px; .papa{ // step 1、父層啟動flex @extend %flex_set; // step 2、子層設定欄寬,可設定斷點 .col{ @include flex-xs-equal(1, 0px); @include flex-sm-equal(2, $m-gutter); @include flex-md-equal(4, $m-gutter); @include flex-lg-equal(8, $m-gutter); @include gutter(); } } ``` <iframe height="500" style="width: 100%;" scrolling="no" title="flex grid system equal" src="https://codepen.io/u00hyui/embed/dyWyGar?defaultTab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href="https://codepen.io/u00hyui/pen/dyWyGar"> flex grid system equal</a> by u00hyui (<a href="https://codepen.io/u00hyui">@u00hyui</a>) on <a href="https://codepen.io">CodePen</a>. </iframe> --- ### <span class="title" id="item-2">自由分配</span> :::warning 每欄<b class="focus">欄寬不相同,加總等於12</b>。 可應用在<span class="focus2">3+9</span>、<span class="focus2">4+8</span>、<span class="focus2">5+7</span>、<span class="focus2">3+6+3</span> ...等非均分的分割。 算式:<span class="focus2">(100% ÷ 12) × 欄數</span> ::: ```sass= // step 0、設定共用的 margin gutter $m-gutter: 4px; .flex-8-4{ // step 1、父層啟動flex @extend %flex_set; // step 2、子層設定欄寬,可設定斷點 .col{ @include flex-xs(12, 0px); @include flex-sm(6, $m-gutter); @include flex-md(8, $m-gutter); @include flex-lg(8, $m-gutter); @include gutter(); &:nth-child(2){ @include flex-xs(12, 0px); @include flex-sm(6, $m-gutter); @include flex-md(4, $m-gutter); @include flex-lg(4, $m-gutter); } } } ``` <iframe height="500" style="width: 100%;" scrolling="no" title="flex grid system" src="https://codepen.io/u00hyui/embed/abWbdeR?defaultTab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href="https://codepen.io/u00hyui/pen/abWbdeR"> flex grid system</a> by u00hyui (<a href="https://codepen.io/u00hyui">@u00hyui</a>) on <a href="https://codepen.io">CodePen</a>. </iframe> --- ### <span class="title" id="item-3">混合運用</span> :::warning 均分X自由分配 ::: ```sass= // step 0、設定共用的 margin gutter $m-gutter: 4px; // 綜合 .mix-equal-2{ .Flex-set{ // step 1、父層啟動flex @extend %flex_set; // step 2、子層設定欄寬,可設定斷點 .col{ @include flex-xs-equal(1, 0px); @include flex-sm-equal(2, $m-gutter); @include flex-md-equal(2, $m-gutter); @include flex-lg-equal(2, $m-gutter); padding: 1em; } } .inner-4-8{ // step 1、父層啟動flex @extend %flex_set; // step 2、子層設定欄寬,可設定斷點 div{ @include flex-xs(12, 0px); @include flex-sm(4, $m-gutter); @include flex-md(4, $m-gutter); @include flex-lg(4, $m-gutter); &:last-child{ @include flex-xs(12, 0px); @include flex-sm(8, $m-gutter); @include flex-md(8, $m-gutter); @include flex-lg(8, $m-gutter); } } } } ``` <iframe height="500" style="width: 100%;" scrolling="no" title="flex grid system mix" src="https://codepen.io/u00hyui/embed/eYWYZZK?defaultTab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href="https://codepen.io/u00hyui/pen/eYWYZZK"> flex grid system mix</a> by u00hyui (<a href="https://codepen.io/u00hyui">@u00hyui</a>) on <a href="https://codepen.io">CodePen</a>. </iframe> <div class="box"> <h3>附加說明</h3> <ol> <li>二個數值代表順序為:<span class="focus2">欄數</span>、<span class="focus2">margin gutter</span></li> <li>數值後面,<span class="focus">務必加上單位(%、px、em)</span>,數值為『0』一樣要加單位。</li> <li>margin gutter的數值是<span class="focus2">雙側的總和</span>,</br>例如:$m-gutter: 20px,欄寬左右各扣除10px,以<span class="focus2">space-between</span>達成對齊的效果</li> <li>flex grid算式複雜,須配合斷點更改欄數,故 flex grid 的斷點採用<span class="focus2">min-width</span>,極小尺寸為<span class="focus2"><span class="focus">screen-xs-flex: 320px</span></span></li> </ol> </div>