[實作] Georgia Restaurant
這個實作有點難以做筆記,這邊的 code 都以 commit 的紀錄來解析,以記錄切版流程為主,方便以後自己實作可以參考。
建立 Header
第一步 建立 Header 架構
HTML
1 |
|
第二步 加上 Header style
調整 brand,logo,main-name,sub-name
這裡分成四個 SCSS 檔案
- main.scss
- _base.scss
- _layout.scss
- _components.scss
main.scss
只@import 檔案
1 |
|
_base.scss
每個檔案都會用到的東西放在 base 裡。
- 顏色變數
- 字體變數
- @mixin
- *,body
_layout.scss
設定大元素
- 設定 header
_compoment.scss
設定大元素裡的小元素
- 設定 header 裡的 logo
- main-name
- sub-name
第三步 完成 Header Style
完成header-banner
,main-heading
,sub-heading
,main-btn的style
。
將 9-12 行的 css( 圖二紅色為刪除部分 ),轉換成@mixin
(圖一 base.scss)。
就可以直接在其他地方使用@include
直接套用( 圖二綠色部分 )。
base.scss 圖 1
layout.scss 圖 2
background-color: transparent
,可以使 button 背景透明。
建立 About us
第一步 建立 About us 架構
如何產生 *** 的樣子?
<i class="fas fa-star-of-life star"></i>
,可以引入星字號,做一個 quote 的效果。
需要在一開始加上 fontawesome 的連結
1 |
|
第二步 調整 About us Style
如何讓第一行出現段落空格?
&::first-letter
的技巧,可以讓第一行出現段落空格(綠色方塊)。
畫面如何分成兩塊(圖與文字)?
左邊 width 佔60%
,右邊 width 佔40%
。
1 |
|
建立 Gallery
第一步 建立 Gallery 架構
結構會是直向的一張一張圖片
1 |
|
第二步 調整 Gallery Style
如何讓直向的卡片三個三個排列?
先設定.card
( 每一張卡片 )為width: 33.3333%
,然後.card-overlay
( 包住所有卡片 )為flex-wrap: wrap
。
如何防止圖片變形?
1 |
|
重複出現的 code?
在-img
和-overlay
都會使用到
1 |
|
這時,可以使用 sass 方法@extend
繼承。
- 先使用
%
設定
1 |
|
- 再使用
@extend
繼承
1 |
|
sass 怎麼增加變數?
紅色部分為舊的,綠色為新的。
利用$
就可以宣告,特別注意,upperspace
為全部都變大寫,captilize
為第一個字母大寫而已。
如何做出從右邊出現的效果?
注意要加上overflow:hidden
,才可以使遮罩全部都隱藏起來,要不然會無法成功。
預設為left:-100%
,:hover
之後,才變成left:0
。
在-overlay 加上transition: left .9s ease-in
,做出慢慢出現的動畫效果。
建立 Footer
第一步 建立 Footer 架構
如何出現 copy 符號?
1 |
|
第二步 調整 Footer Style
如何讓每個 icon 中間留有空格?
使用justify-content: space-between
,就可以做到。
如何做出 media 排列的效果?
使用ul
包住所有li
,再取消掉list-style
。
建立 navbar
第一步 建立 navbar 架構
如何建立 navbar 的三條線?
新增checkbox
,確保點擊的時候會產生作用。
input
的 id 為check
,label
的for
為check
,當hamburger-menu
被點擊時,input
就會被打勾。
如何把頁面分兩半?
.navbar-navigation
內分成
.navbar-navigation-left
.navbar-navigation-right
左邊放圖片,右邊放頁面的連結。一樣利用<ul>
加上<li>
裡面包超連結<a>
。
第二步 調整 Navbar Style
如何產生產生背景的 layout?
整個.navbar
需要加上z-index:200
,讓選單可以出現在整個頁面之上,要不然會出現在後方。
&-left
需要加上position:fixed
。不管滾輪如何做上下移動,他都會維持在原位,像是放大版的蓋板廣告。
照片如何疊加上去?
利用百分比定位就可以完成。
建立 hamburger menu
第一步 定位到頁面右上方
利用絕對定位fixed
搭配top
跟right
定位,再利用z-index
定位在右上方。
第二步 設定 hamburger menu
設定線條
第三步 調整 hamburger menu style
如何讓 navbar 以彈跳的方式出現?
設定彈跳出現的動畫。
1 |
|
如何點擊 hamburger menu 時就讓 navbar 出現?
因為 input 的 id 是 check,label 的 for 也是 check,所以,在按下 label 時,input 也會被打勾,可以產生連動效果。
如何讓 hamburger menu 旋轉?
使用rotateZ
就可以旋轉
如何讓三條線呈現一個叉叉?
將第一條線和第三條線設定旋轉。
旋轉後,還需要設定transform-origin:right
,讓兩條線可以成功變成叉叉。
如何將 input button 隱藏起來?
在 html 後方加上 hidden 就可以執行。
添加 RWD
先設定好全部的1600px
,再來設定1300px
,一步一步設定。
Header
增加 media query
以下寫法為小於1600px
,font-size
調整為50px
。
1 |
|
About us
在寬度為800px
的時候,將左邊的圖片設定為none
。
然後width
設定為 100%,就可以佔滿整個螢幕。
Gallery
不想要其他資訊顯示時,就使用display:none
footer
使用margin:auto
和width:70%
置中。
navbar
視窗過小時,左邊的圖片框就不出現。
所以設定為width: 100vw
和right: -100vw
(隱藏起來)。