# 9/09 CSS3 基礎實作 ###### tags: `CSS3 基礎實作` `2021/09/09` `進度筆記` `前端心得` --- # 整日都是課堂練習 ## 今日講課-上午的部分 林大大代課~ 做 RWD 版面的架構, 一個 windows 微軟頁面仿切大概切五天 ## 參考資料: https://web-design.vip/wp-template.html#download https://www.ibest.tw/p05.php --- ## 螢幕的解析度 1920px 的定義, 和 1080px 的定義, 要怎麼預留空白畫面, 做出焦點畫面 ## 自己縮去掉工具列/沒去掉工具列 ![](https://i.imgur.com/MmaCXXT.png) # 這四頁的 html 結構要求要長的一模一樣 html 結構寫好後就不能改了, 遇到手機的會發現寫不太出來 # 分析 HTML 結構 - 接下來 id 用不到了, 到 JS 才用到 - 以 class 為主 ![](https://i.imgur.com/4z1fuh5.png) ## 做出左邊側方欄位 ![](https://i.imgur.com/IhvG0n2.png) 接著 AAAAA 用 a 標籤弄出超連結 ## 完成後應該像這樣 ![](https://i.imgur.com/2B8kQLl.png) ## 做出右邊側方欄位 ![](https://i.imgur.com/qG5hcJX.png) 右邊一個 class 元素 包三個 img ``` div.class.content 元素 標籤 名字 .class>.img*3 ``` ## 複習 box-sizing: border-box ![](https://i.imgur.com/RhWe62i.png) - 記得他會消除 border 和 padding ! ## 滿版的定義 ![](https://i.imgur.com/1qRwk1M.png) ## 參考資料: https://ithelp.ithome.com.tw/articles/10259033 # vh 跟 vw ![](https://i.imgur.com/USjnwkk.png) width:100vw ; height:100vh → 滿版網頁 width:100vw ; height:200vh → xy軸都會跑出網頁捲軸(爆版),因為x軸多出捲軸的寬度 如果 vh 設 100, vw 設到 200 你的可視範圍都會被拉伸, 但會發現底下的卷被卡掉 所以你寫 100vw 會因為右邊的卷軸寬度卡掉, 像 chrome 的卷軸寬度視 17px 而不同的瀏覽器寬度(包含卷軸)的不同 因為瀏覽器的寬度所以 width 不太會用 vw, 因為不太能去扣掉 px, 通常 width 都會用 100% --- # div 會填滿一整行的問題 - div 元素有個天生的屬性叫做, display 而這屬性的值: - block - 佔滿父層寬度 - 元素是可以設定寬高的 - inline - 不會佔滿父層寬度 - 以內容大小撐開元素寬高, 無法去做設定寬高 - inline-block - 不會佔滿父層寬度 - 但可以改寬高 - 使用上有奇怪間隔 - table 的 各種 display 帶過 - ul li display 有 list-item --- ## 預設的 margin 和 padding ul 和 li 有預設的 margin 和 padding 使用後還要消除 - 在 html 結構上選擇一個好的標籤跟 SEO 有關係 - ul 的 list-style-type 可更改, disc 就是點點的意思 ----- # 課堂練習 - 電腦版螢幕 CSS ## 記得 html 結構不能動 - 去更動 CSS 樣式表就好 - 能做就先往下做 做好的目標 ↓ ![](https://i.imgur.com/Sj8IHNO.png) ---- # 下午部分 # 課堂講解 - PC 螢幕版 RWD CSS ## 先從左邊開始寫起 - 先從 container 開始, 網頁可能越來越高, 因此先寫 width ![](https://i.imgur.com/aO6ChKt.png) 因為高度沒甚麼好寫的, 剩下部分都要用內容去撐開 ## 來看左方欄位的寬高 ![](https://i.imgur.com/QsW7Vsn.png) ## 接著看右方欄位的寬高 ![](https://i.imgur.com/p4O0nlZ.png) 會發現掉下去, 因為被佔滿版 ## 一個一個推 ![](https://i.imgur.com/Fw835Ee.png) 從 LOGO 開始定位, 不要用 position 接著 LOGO 用 padding 去推, 然後 UL 內的文字也被 LOGO 用 MARGIN 去推, 因為同層, 文字類型的 font-size 會往下層傳遞 ## 開稿的時候 pt 跟 pixel 1:1 要記得 px 是螢幕最小單位, 在 72dpi 的時候, 1px=1pt, 所以要看開稿的時候螢幕是不是 72dpi ## 參考資料: https://blog.akanelee.me/2018/07/31/dpi-px-pt-dp-sp/ ## 接著去掉底線 去掉底線 text-decoration:none ## 更改文字間距 下 line-hight: 1, 表示跟字本身的元素大小一樣 ![](https://i.imgur.com/VirUa56.png) ---- ## 右邊欄位 - 第一種, 用 margin 置中, 再用 padding 推下來 ![](https://i.imgur.com/3Rb5wdA.png) - 第二種, 用 postion 絕對定位 ![](https://i.imgur.com/OxHVNoI.png) ## 右邊欄位分配寬度 ![](https://i.imgur.com/eshvMN6.png) ## 接著把右邊欄位改一下 - 因為都分 33% 所以 看起來會有點位移 ## 把中間的方塊弄胖一點就會撐開了 不過會把其他方塊擠掉 所以要下 calc 去減掉, 然後記得用 margin 造出空隙 ![](https://i.imgur.com/movpT5g.png) 因為 class 可以有共通的屬性寫法, 所以可以下一個 CSS 屬性去寫共通的 寬 和 float ![](https://i.imgur.com/VNYX7OF.png) # 老師的 PC RWD code: ![](https://i.imgur.com/2wZnj1x.png) ---- # 小螢幕 PC RWD 講解 - 就是圖書館那種很老方方正正的電腦 先調整 右邊方塊的寬高, 和位置 ![](https://i.imgur.com/r24rFyf.png) # 調整右邊欄位上方的長方塊 因為上面的方塊佔滿了整排, 那最上面的方塊高度變為一半的情況下, 就可以開始調整下面兩個方塊, 接著推下面的方塊 ![](https://i.imgur.com/AUyatBE.png) 下面兩個方塊因為高寬都是一半, 接著用左邊的方塊去推右邊方塊 (margin-right); 接著為了讓版面看起來整齊, 下面兩個方塊的高度變成各拿 (50% 減 10px / 2) , 這樣兩個方塊才平均大小 ![](https://i.imgur.com/utoJL4Q.png) # 下一個平板的 RWD - 怎麼調整左方欄位到最上面 - 左方欄位的字體怎麼平移 - 右邊怎麼那麼粗 # 手機板 RWD 做完後, 滑鼠滑到圖片上跳出選單, 或是換圖片 ---- # 平板版 RWD # 用 dev tool 滑鼠選擇器 iPad 看個稿, 看著設計稿切看會不會一樣 # 調整左邊欄位 版面左邊離 logo 大約是 35px, 右邊離文字也大約是 35px ![](https://i.imgur.com/Fe64vBe.png) 寬(%)高(pt), 上顏色後, 下 padding 10px, 靠版面左右邊各是35px, 用內距去調整子層元素 → logo # 調整 logo logo 上下調整寬高, 因為 div 佔滿了整行, 下 float left 去調整, ![](https://i.imgur.com/vn4ljHd.png) # 調整 ul 的文字 消除裝飾點效果 想辦法把它移到上面的欄位 ![](https://i.imgur.com/LdnS135.png) 對包住文字的大外框 ul 下 float right 去調整 ![](https://i.imgur.com/7cwu0WY.png) # 預設 的 ul 會頂出來, 多個白邊 ![](https://i.imgur.com/Ll1OKAq.png) 接著因為 a 的 display inline 特性, 無法對他下寬高或是 padding(雖然有吃), 但下 margin 和 padding 會影響到他 在外框 ul 下了 margin 會讓 ul 往上抬. 再下 padding ![](https://i.imgur.com/Eb5lTcV.png) ## Block區塊元素 .元素寬度預設會撐到最大,使其占滿整個容器 .可以設定長寬/margin/padding,但仍會占滿一整行 # 在 li 標籤調整文字靠右 以及讓文字跟左邊的 logo 與邊距相同 px 下 margin-right 和 text-align ![](https://i.imgur.com/389tyTq.png) 下 float-right 後會讓文字散開 下 padding 去讓文字往下推 # 調整文字間距(看設計稿字距) 調整文字大小, 幫文字去底線 用 line-hight: 1(字多高這行就多高), 調整文字間距, (80px-24pt/2) 就是剩下的高度 ![](https://i.imgur.com/34UcvIW.png) 幫文字去裝飾, 下 float left(第三點) 改變區塊元素 a 的文字間距 ## 參考資料 https://ytclion.medium.com/css%E6%95%99%E5%AD%B8-%E9%97%9C%E6%96%BCdisplay-inline-inline-block-block%E7%9A%84%E5%B7%AE%E5%88%A5-1034f38eda82 # 再來 額外補充怎麼去調整 ul 的排序變成跟版面一樣散開 # 第一種 - 用 last-child 去覆蓋原本的 class 如果一樣是 margin-right: 45px ![](https://i.imgur.com/ddPzBUw.png) 用後面的 class 來覆蓋原本的 # 第二種 - not() 選擇器 只要符合 menu-btn:not(:last-child){} 但除了 last-child 不會被選到外, 就選得到 <!-- # 第三種 - 從 左到右排, 父層文字 float 右邊, 子層 a 標下 float: left 反推回來 ![](https://i.imgur.com/0yu2M2n.png) --> ---- # 右邊的大版面 ![](https://i.imgur.com/GblNy4Y.png) 一樣要浮起來 float left 調整位置 推一半在減掉物件本身的高度 ![](https://i.imgur.com/2HfzJ4Q.png) 100vh-100px/2 - 右邊欄位高度 (800px /2) # 右邊的 content 寬高 700*800 上顏色 # 用 margin 0 auto 去調整右邊欄位位置 表示上下邊界為0 ,左右為auto 表示自己均分 ![](https://i.imgur.com/rIjK3gR.png) # 想讓右邊欄位置中 還可以用 position, 比較快速定位 也可以算 padding 去推三個欄位的框框位置, 比較繁瑣但不會擠壓到上方欄位 # 最後三個欄位 跟小螢幕一樣 ![](https://i.imgur.com/uF9ud9i.png) # 課後任務 - 作業全完成 1. 四個版的切版都切好 2. 三個圖片的背景圖片切換 ( transition) 3. 滑手機板的頁面, 滑到按鈕上會浮起, 但改手機的按鈕後其他四個的 RWD (PC, small screen, ) 的 html 架構都要改 (提示 display: none 屬性) 4. media queries 怎麼用 5. 怎麼帶一個圖層遮在你圖片效果的最上面 ## 參考資料: by 珮婷 同學 [用 HTML 與 CSS 製作簡單的導覽列](https://medium.com/@mingjunlu/building-a-simple-navbar-with-html-and-css-setting-up-the-skeleton-212fb8767cb5) ## 三層漢堡 [純HTML/CSS製作手工漢堡](https://ithelp.ithome.com.tw/articles/10203995) [RWD漢堡選單練習](https://w3c.hexschool.com/blog/5054d6fe) --- ![](https://i.imgur.com/4W6JVlR.png)