本篇文章為六角學院地下城1F關卡的實作筆記,會描述利用CSS:flex-gap和JS:for雙迴圈,完成與設計稿相同之九九乘法表。
最終成本為1F_9X9
上圖為設計原稿
使用技術及觀念
- CSS: Flex-gap
- JS: 標籤樣版字
- JS: for 雙迴圈
Outline
- HTML 實作紀錄
- CSS 實作紀錄
- Flex-gap 介紹及應用說明
- JS 實作紀錄
HTML 實作紀錄
切版結構如下,此版面須利用for迴圈印出相同2-9之版型,故須維持一致性。
CSS 實作紀錄
本次使用Display:Flex方式進行排版,可利用flex-wrap:wrap
方式將版面排版,每個方塊內容也能依序排版,但撰寫過程中遇見疑問-如何設定div
上下左右間的間隔?
起初,我想到為以下兩種方法,皆可達到設計圖需求。
使用
Margin-bottom
將兩段間隔計算出來並設定,但在最下層一排需額外調整Margin-bottom
。利用父層固定總長寬來限制子層排列,搭配
justify-content: space-between
使間隔調整至設計圖需求。(OS:有時候就是不想直接定出height
)
但在調整版面過程中會出現許多魔幻數字,讓我不禁思考是否有其他方法可以直覺調整。
經過Mujing Tsai指點,flex
於2021/06 提供gap
屬性,其屬性是源自於grid,可設定box間距,且同時可以與justify-content: space-between
搭配。
Flex-gap 介紹及應用說明
首先建立六個方塊(長寬為各100px),放入總寬為350px之容器,透過flex-box設定flex-wrap:wrap
、justify-content: space-between
,可達到以下結果。
HTML:
CSS:
Result:
此時加入,gap
參數,其設定方法如下
設定一個參數為 左右上下相同;
設定兩個參數分別為 上下 左右;
其單位可使用px, %, em, calc
此時加入 gap:25px
Result:
但如果持續增加,超過原有寬度,則會為了符合justify-content: space-between
,容器會再多換一行,結果如下:
將gap更改為30px
Result:
因此若要調整成兩行及上下間距增加,
可使用 gap: 40px 25px
(上下、左右)
Result:
因此透過設定,也就可以針對設計圖中方塊的間隔去設定了
JS 實作紀錄
利用雙迴圈概念可分成round和item兩變數,透過for loop 逐漸將項目加上。
其程式碼如下:
1 | for(let round=2; round<10; round++){ |
搭配迴圈去渲染畫面,就可完成設計圖所需。