修行習作|Pixel perfect kata 學習筆記

更新 發佈閱讀 8 分鐘

第一週 - Pixel perfect kata 挑戰

raw-image

1px 都不差練習

第一次拿到設計稿時,過程中花費很多時間來理解容器與元素之間的關係,以及彼此的特性如何相互影響,又如果設置了 CSS 將造成什麼變化,並且在命名上也花費不少精神,無論畫面有多簡單,剛開始切版製作往往要耗費 1 ~ 2 天的時間來拆解、理解設計畫面,比起畫出方形容器圖案,用下圖這種方式來寫出畫面結構,使我較能知道如何開始第一步。

奇妙架構圖

奇妙架構圖

有時候只利用架構圖來理解畫面會出錯,因此需要搭配圖畫的方式來確保切版結構正確,如下圖,將畫面框架繪製出來,並且搭配架構圖的方式寫下結構(利用紙筆或電腦繪圖):

奇妙架構圖 + 圖畫輔助

奇妙架構圖 + 圖畫輔助

巢狀結構

問題與卡住的狀況尤其發生在當設計稿有 巢狀結構 時,會在寫畫完結構+圖畫後,在開始切版過程中才發現自己的結構理解錯誤,因此停止切版,又回過頭來重新在紙上釐清畫面結構,通常會反覆 4 ~ 5 遍。( 而且無法聽音樂或是環境吵雜,影響思考😮‍💨 )

奇妙架構圖 + 圖畫輔助

奇妙架構圖 + 圖畫輔助

<ul> 裡的 <li> 包覆了不同類型元素(例如:<h2><a><img><p>),且是 flex 底下再包覆 flex 時,就會需要反覆寫出結構、寫畫來理解如何規劃 HTML,目的是要透徹瞭解容器與容器,容器與元素之間關聯與相互影響脈絡。

省視學習脈絡

  • 對於容器與元素的使用觀念尚不理解
  • 對於父層容器、子層容器、巢狀容器之間的關係尚不熟悉
  • 需要加強架構化與系統、模組化思考方式
  • 熟悉並且理解每個 tag 的意義與特性
  • 系統化、語意化 HTML 結構
  • 理解 CSS 選擇器的使用方式與時機
  • 認識 CSS 優化方式與善用類別選擇器

我也發現,如果上述所列無法理解,很難進到使用 emmet 來撰寫 HTML 架構,因為大腦對於這些知識應用仍在處理、釐清、轉化中。

我是屬於如果不理解所有運作原理、彼此之間的邏輯關聯,大腦的知識網就會破掉而中斷的類型,進而學習卡關,看不懂的東西就是怎樣都看不懂,跟理解數學一樣。

挑戰過程

第一週 - pixel perfect kata 挑戰設計稿

第一週 - pixel perfect kata 挑戰設計稿

剛開始的撰寫習慣

先寫 HTML 結構,後寫 CSS ,發現自己比較喜歡把 HTML 畫面都部署好後,再開始寫 CSS,但是當畫面為巢狀結構時,會拆分區塊來做,例如拆成<header><main><footer>,或更細的區塊。

觀摩同學的練習過程後,發現自己沒有善用類別選擇器,共通設定等等。

不通透的部分

  • 對於 <ul> 的使用時機、規範觀念不清楚,導致在寫的時候陷於混亂
  • <a> 的emmet 應用方式不熟練
    a[href="www.google.com"]{Google}
  • 對於 <ul> 底下的巢狀 <li> 結構理解反應慢
  • 常用、複製性的內容不會使用 emmet 語法加速效率
  • 語意化命名花費時間思考
  • 英打速度、正確性緩慢,鍵盤打字尚不熟練
  • 初使用 VS Code 來製作,尚不熟悉環境的搭建
  • 一直記不住 img 的 emmet (打屁股)
    img[src="www.google.com" alt="img"]
    <img src="www.google.com" alt="img">

練習理解

寫出 HTML 的架構 ,嘗試加上更多類別選擇器:

.container>main.d-flex>(ul.news>li.news-list.d-flex.mr-20.mb-24*2>(a>img.mr-20)+div.news-info>(h2.title{Title Lorem..}+p{lorem15}))+(div.banner>(a>img))^footer.footer>p{...}


上面的 emmet 內容,再次拿出我的 奇妙架構圖 來理解:

emmet 奇妙架構圖

emmet 奇妙架構圖

嘗試理解 emmet 語法邏輯與使用方法:

raw-image

寫下操作流程

我想嘗試紀錄自己的行為流程來加深印象,也同時觀摩自己和其他同學的作法。

前置作業

  1. 閱讀設計稿,規劃並確立 HTML 結構,找出共通類別樣式
  2. 初步進行語意化命名,讓標籤可讀性佳
  3. 建立專案資料夾,建立 kata.html、style.css、cssreset.css 檔案

開始撰寫

  • HTML 的部分
  1. ! emmet 建立環境,載入 cssreset.css、style.css 檔案
  2. 編輯網頁標題 <title>...</title>
  3. 開始於 <body> 撰寫 HTML 結構,使用 emmet 來開發
  4. 放上圖片網址、圖片名稱、<a> 連結內容、輸入 <p> 段落內文
  • CSS 的部分
  1. box-sizing: border-box
  2. 在 <body> 完成有繼承性的共通設定,例:line-hightfont-size
  3. img 設置 vertical-align: middle;
  4. a 設置 display: block;
  5. .container 最父層容器設定 width: 640pxmagin: 0 auto; 
  6. 撰寫共通設定,.mr-20.mb-24.d-flex
  7. 完成剩餘 CSS 內容
  8. 網頁開發者工具檢查內容與寬高是否吻合

犯錯與卡關

raw-image

中間一度不管怎麼切,高度都不是 360px,跟中邪一樣 😱.... 卡了 3 天(傻眼)
檢查該放的都有放:

   css reset 放了
✓   <img> 消除奇妙的空隙
✓   <a> 標籤 display block
✓   檢查文字段落的樣式,字級、行高
✓   <p> 確認行數為 3 行

CSS 的 <body> 明明放置了 line-height: 1.5,但是用開發工具檢查時,<body> 的 line-height 卻是「1」。

為了除錯也把相同的程式碼丟到 codepen 檢查,卻發現貼過去的程式碼所產出的內容高度竟然跟 VS Code 裡的高度不一樣,因此猜想是不是兩邊的 CSS reset 不一樣,但回過頭想又覺得不對....陷入魔性卡關時,忽然發現一件事...!!!!

CSS 權重

在我所載入的 CSS 文件中,「cssreset.css」這支檔案是放在「style.css」後面!!(如下圖)

raw-image

因為權重的關係,後面大於前面,因此 cssreset.css 裡的設定蓋到 style.css 上!

加強權重認知

和 Codepen 不一樣,Codepen  會把基本環境建置好,但是若使用 VS Code,環境必須自己建立好,因此疏漏了CSS 檔案先後的權重問題!也因為是第一次使用 VS Code 來開發,所以過往沒有意識到載入檔案的權重問題。

把檔案上下對調後,畫面運作正常,完成「寬 640px*高 360px」任務!

raw-image

權重影片學習

把之前看過的學習影片再次補上來,釘進大腦裡:
伸縮自如的 RWD 排版術(上) 40:00 老師說到 css 檔案先後的權重

老師示範 css 檔案權重

老師示範 css 檔案權重

老師說明選擇器的權重

老師說明選擇器的權重

同時閱讀了金魚都能懂的 CSS 選取器第一章節,覺得幫助很大。

金魚都能懂的 CSS 選取器

金魚都能懂的 CSS 選取器

優化撰寫方式

用 emmet 寫 HTML 結構時,常常寫到不知道自己身在何處,一旦斷了 0.01 秒思緒就會開始莫名錯亂,然後就不知道自己在寫什麼,此時就必須刪掉原本寫的程式碼重頭再來。

但是重頭再一次也不見得改善,重複的狀況一樣會發生,為此在練習 5 遍以後,發現在撰寫時,可以把最父層容器寫出來後,將接下來要使用的 Grouping: () 括號先打出來,這樣就可以比較清楚打完一個小組後,接續有另一個同層級的容器要撰寫,如下圖:

raw-image

不熟練的 emmet

總是會忘記的地方:

  • img 和 footer 要寫 class
  • 花括弧 {} 的文字內容要記得寫
  • vam 是 vertical-align: middle;
  • bxz 是 box-sizing:border-box;
  • link:css
  • p48-0 是 padding: 48px 0;

總是會打錯的地方

我是誰我在哪

我是誰我在哪

結語

練習練習練習練習練習練習練習練習...

Practice make perfect, 我是正在自我習作中的 Draw,我們下篇見 🙇🏻

留言
avatar-img
學習如何學習
6會員
10內容數
從零開始,記錄網頁設計的學習過程。
學習如何學習的其他內容
2024/04/04
CSS 裡的「寬度,最大寬度,最小寬度」分別是什麼呢? ➊ width 用來設定元素的寬度,且 width 作用範圍僅在 content-box 區塊 ➋ max-width → 用來設定元素的最大寬度 ➌ min-width → 用來設定元素的最小寬度
Thumbnail
2024/04/04
CSS 裡的「寬度,最大寬度,最小寬度」分別是什麼呢? ➊ width 用來設定元素的寬度,且 width 作用範圍僅在 content-box 區塊 ➋ max-width → 用來設定元素的最大寬度 ➌ min-width → 用來設定元素的最小寬度
Thumbnail
2023/09/10
我想分享給那些曾有過相同感受的同學,覺得自己能力不適合、在學習中感到自卑想要放棄的那些時候。而後半篇則想分享自己對於老師、助教的感謝。
Thumbnail
2023/09/10
我想分享給那些曾有過相同感受的同學,覺得自己能力不適合、在學習中感到自卑想要放棄的那些時候。而後半篇則想分享自己對於老師、助教的感謝。
Thumbnail
2023/09/10
本篇為隨筆紀錄,將看完的影片疏理為短小筆記 。 特別有感的是,現在回頭看,發現影片中每個提及的知識點或是誤區自己都踩過好幾輪了,這是在學習及練習中很常會反覆發生、需要注意的地方,提醒自己在接下來的練習中,能將老師提及的思維及作法吸取並應用。
Thumbnail
2023/09/10
本篇為隨筆紀錄,將看完的影片疏理為短小筆記 。 特別有感的是,現在回頭看,發現影片中每個提及的知識點或是誤區自己都踩過好幾輪了,這是在學習及練習中很常會反覆發生、需要注意的地方,提醒自己在接下來的練習中,能將老師提及的思維及作法吸取並應用。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
這篇文章分享了 CSS Battle 第 38 題的解法,並提供了相關的技術總結。文章內容包括了使用 flex 排版處理、背景漸層的方法處理等相關技術。透過這篇文章可以學習到如何解決 CSS 切版的問題。
Thumbnail
本文介紹了CSS Battle #172 交叉骷髏題目的解答技巧,包括圖層拆解的熟練程度和對小圓拆開處理等技巧。作者分享了100%的解法,鼓勵讀者分享自己的作法與交流。
Thumbnail
本文介紹了CSS Battle #172 交叉骷髏題目的解答技巧,包括圖層拆解的熟練程度和對小圓拆開處理等技巧。作者分享了100%的解法,鼓勵讀者分享自己的作法與交流。
Thumbnail
這篇文章將介紹如何透過CSS Battle的題目來練習基礎切版技巧。透過一個眼睛圖案的例子,提供了對於 border、outline、border-radius等屬性的調整方式,並分享了一種 100% 的解法。歡迎大家分享自己的作法與作者交流,一起學習成長。
Thumbnail
這篇文章將介紹如何透過CSS Battle的題目來練習基礎切版技巧。透過一個眼睛圖案的例子,提供了對於 border、outline、border-radius等屬性的調整方式,並分享了一種 100% 的解法。歡迎大家分享自己的作法與作者交流,一起學習成長。
Thumbnail
這篇文章分享了作者對CSS Battle #151題目的解題方式,並強調了圖形解構的重要性。作者提到了基本的排版能力以及實際應用的弧度計算。透過這篇文章,讀者可以學習到CSS切版的技巧,同時也可以分享自己的作法,進行交流討論。
Thumbnail
這篇文章分享了作者對CSS Battle #151題目的解題方式,並強調了圖形解構的重要性。作者提到了基本的排版能力以及實際應用的弧度計算。透過這篇文章,讀者可以學習到CSS切版的技巧,同時也可以分享自己的作法,進行交流討論。
Thumbnail
這篇文章將解析CSS Battle第136題的解法,主要考驗基本CSS置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
Thumbnail
這篇文章將解析CSS Battle第136題的解法,主要考驗基本CSS置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
Thumbnail
是的,身為前端工程師的基本功!還是需要時不時拿出來打磨一番! 很多大公司的切版與前端是分開的,但不能因為碰不到就不去理解,假如要系統性的調整樣式,那麼你就一定要懂基礎,就好像你要調整微前端的架構,總不能連包板工具的設定都不會吧! 回到正題,這系列文章每個禮拜三都會更新一題CSS Battle的題
Thumbnail
是的,身為前端工程師的基本功!還是需要時不時拿出來打磨一番! 很多大公司的切版與前端是分開的,但不能因為碰不到就不去理解,假如要系統性的調整樣式,那麼你就一定要懂基礎,就好像你要調整微前端的架構,總不能連包板工具的設定都不會吧! 回到正題,這系列文章每個禮拜三都會更新一題CSS Battle的題
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News