AC廣告排版專案紀錄

yu
Nov 20, 2021

--

專案成果

專案功能:

  • 點擊月亮圖標可以切換至dark-mode
  • 勾選checkbox能夠改變當列背景顏色
  • 勾選第一個checkbox能夠選取全部列
  • 表格header置頂增加使用者體驗

專案開發時間:

這次專案開發,課程有指定兩個功能,分別為廣告被選擇的樣式固定 table header,自己新增的功能為全選checkbox

  • 廣告被選擇的樣式(3hr)
    HTML:
    新增class=”checkbox”至第一個以外的checkbox上
    CSS:
    新增row被選取時的橘色背景樣式
    JS:
    使用querySelectoAll選取所有input type=checkbox的元素(取得類陣列)
    使用迴圈加if else判斷式將被選取的checkbox新增或移除橘色背景樣式
  • 固定 table header (1hr)
    HTML:
    新增table__container當作position的判斷點
  • CSS:
    將表格寬度設為1200px,避免縮放時壓縮表格
    使用position:sticky和z-index層級將header固定在最上方
    因為要看出header固定在最上方的效果,限制table__container的最高為80%並設置卷軸,
    但覺得卷軸太醜,於是把它隱藏。
  • 優化-全選checkbox (3hr) :
    選取第一個checkbox時能夠選取全部的廣告並改變背景顏色

專案開發時遇到的問題:

廣告被選擇的樣式:
第一次出手時只能做到單選一列,無法再加選其他列

原本的CODE

如何解決:
1. 查閱先前製作的類似案例,是不是拆解製作流程時漏了什麼
2. 估狗關鍵字查看其他人是怎麼去寫這種功能
3. console.log驗證自己每段程式碼的結果

綜合以上發現是自己在第一段選取checkbox時只有選擇到第一個checkbox,於是後來改用querySelectorAll選取checkbox的類陣列並搭配迴圈完成功能

固定 table header (1hr)
第一次出手遇到header一直在表單最上方且文字排版被打亂且寬度和下方的列不同

如何解決:
1. 查閱position相關文件
翻閱資料後發現使用fixed時會造成內部子元素的位置有變動,於是後來 改用sticky、新增HTML父容器完成這個功能

優化-全選checkbox :

第一次出手時在使用checked / onclick時不是很清楚到底該用哪個,製作這個功能時,比較多時間是花在反覆試驗哪個功能可行,哪種寫法OK

如何解決:
卡關時觀摩了許多線上教學者的code,比較自己和他們的code差別在哪,進而優化自己的寫法,綜合許多參考資料得知checkbox可以用boolean來判斷,當被勾選時是true,不被勾選時是false,得知這點後就順利的完成這個功能了QQ

專案可優化的部分:

  1. 表單框架可使用JS動態渲染
  2. 表單內容是不是可以用API的方式串接..?
  3. CSS可改用Sass的方式管理
  4. 畫面中可以點選的元件可以參考線上網站新增一些互動功能,例如排序、刪除表單、完成表單(資料會跑到左邊資料夾的icon內)

自己可以需要加強的部分:

1. 對於input type的使用
2. 對於event的操作
3. 開發速度提升,例如這個專案我自己認為應該要能夠1小時內完成

--

--

yu

設計本科背景,前3D Lighting Artist,現為Web前端工程師。