# 從零開始學CSS, HTML5, RWD網站 ###### tags: `從零開始學CSS, HTML5, RWD網站` ' ### 1.1介紹網頁開發 >* **ui ux設計師**:設計介面圖 工具:photoshop.sketch.adobe xd.liilustrator.css >* **前端工程師**:看得到的.把介面圖變成網頁.把伺服器傳來的資料放到網頁 工具:html.css.javascript變動很快永遠學不完 >* **後端工程師**:看不到的.伺服器資料庫 工具:php.python.ruby.node >**html**是負責網站的架構 **css**負責網頁的美觀 **js**負責網頁上的行為及動畫送表單資料接收資料 >**RWD(Responsive Web Design)「響應式網站設計」:** 當你在設計網站排版時,能根據 RWD 的設計原則實作,網站內容就會像水一般,在各種裝置中自然的流動成最適當的樣子。 在 RWD 中有五種比較常用的設計模式:局部流動 (mostly fluid)、欄內容下排 (column drop)、版面配置位移 (layout shifter)、細微調整 (tiny tweaks) 和畫布外空間利用 (off canvas)。 **局部流動 (mostly fluid):** 在小尺寸螢幕時,內容會以垂直堆疊的方式排列;隨著螢幕尺寸變大時,內容會流動成多欄的方式,直到達到某個尺寸後,將內容置中並停止流動。 ``` /* media query */ @media (min-width: 600px) { .c2, .c3, .c4, .c5 { width: 50%; } } @media (min-width: 800px) { .c1 { width: 60%; } .c2 { width: 40%; } .c3, .c4 { width: 33%; } .c5 { width: 34%; } } ``` **欄內容下排(column drop):** 在大尺寸時會以多欄版面配置,隨著視窗寬度變窄時,內容會垂直堆疊所有欄。 ``` /* media query */ @media (min-width: 600px) { .c1 { width: 60%; order: 2; } .c2 { width: 40%; order: 1; } .c3 { width: 100%; order: 3; } } @media (min-width: 800px) { .c2 { width: 20%; } .c3 { width: 20%; } } ``` --- ### 2.2環境設定,工具介紹(vscode) >[vscode下載](https://code.visualstudio.com/) >常用套件 : Live Server >開發瀏覽器(常用) : chrome (開發者工具) [找圖片網站](https:www.pexels.com) [html arrow code html箭頭編碼](https://html-css-js.com/html/character-codes/arrows/) [顏色編碼](https://flatuicolors.com/) ___ ### 2.3html介紹跟&開發(head,body) >html是負責整個的網頁的架構.是一種標籤標記語言 >* head負責瀏覽器需要的資訊.載入css.載入js >* body負責網站內容架構 ``` lorem亂字生產器 style{屬性:值;} div width="" line-height行距字上下距離 letter-spacing字跟字左右距離 ``` --- ### 2.5box sizing >box sizing間距 >**padding**:box內間距 >**margin**:box外間距 >**border**:邊界 ``` margin:0 auto 0 auto上 右 下 左 margin:0 auto上下 左右 ``` **border-box**:padding.border都算在box內 `{box sizing:border-box;}` **content-box**:padding.border都算在box外.算距離非常辛苦 `{box sizing:content-box;}` info日期 author作者 layout排版 reset --- ### 2.7 >***{display:block;}** >寬度佔全部.會換行.垂直排列.除非設定 position 或 float。 >可以設定高度、寬度、上方與下方距離margin-top margin-bottom >div.section.nav.h1.footer > >***{display:inline;}** >寬度佔box寬度.不換行,水平排列。 >不能設定高度、寬度、上方與下方距離margin-top margin-bottom >span.img.a.b.atrong >***{display:inline-block;}** >讓水平排列的區塊以 block 模式呈現,這樣就不會被後面的其它元素所覆蓋 >可以設定高度、寬度、上方與下方距離margin-top margin-bottom ``` p{font-size大小 font-family字型 font-weight粗度 font-style:italic;斜體 h1 {text-transform:uppercase}全部大寫 h2 {text-transform:capitalize}第一個字大寫 p {text-transform:lowercase}全部小寫 h1 {text-decoration: overline}字上面一槓 h2 {text-decoration: line-through}字中間一槓 h3 {text-decoration: underline}字下面一槓 h4 {text-decoration:blink} a {text-decoration: none}標籤的特性拿掉 ul li{list-style:none;不要導覽列小圓點} list-style: square inside url('/i/eg_arrow.gif') ``` --- ### 3.1 ``` <!DOCTYPE html> <html lang="zh-tw" html支援的語言中文 <head> <title>文档标题</title>標籤: 網頁標題 meta tag: 提供搜尋引擎關於網頁內容的簡介 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 設置IE兼容模式. 強制瀏覽器呈現為特定的版本的標準。 <meta charset="UTF-8">瀏覽器支援UTF-8 - Unicode 字符编码ISO-8859-1 - 拉丁字母表的字符编码 <meta name="meta tag" content="內容"> <meta name="keywords" content="網頁關鍵字"> <meta name="description" content="網頁內容描述"> <meta name="author" content="網頁作者名稱"> <meta name="generator" content="網頁編輯器"> <meta name="copyright" content="網頁版權宣告"> <meta name="distribution" content="網頁發佈地區"> link tag: 網頁內與外部資源的關連 <link 屬性="" type="屬性種類" href="嵌入檔案"> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.css" />讓所有瀏覽器產生一致性 <link rel="stylesheet" type="text/css" href="src/style.css" /> HTML link tag 的屬性有非常多種可使用,例如 media、rel、rev、target 這些都是 base tag: 設定網頁內 URL 的預設目標 <base href="連結網址" target="連結目標"> <base href="連結網址" target="_self":在本來的視窗開啟 <base href="連結網址" target="_blank":在新的視窗開啟 <base href="連結網址" target="_parent":在父層視窗開啟 <base href="連結網址" target="_top":以 top 模式開啟 style: 導入網頁樣式,如 CSS script: 導入 javascript 或 vbscript </head> ``` --- ### 3.4 css註解 ``` <!--html--> /*css*/ background:url('../img/'); ``` --- ### 3.5導覽列 **Normalize.css**讓所有瀏覽器產生一致性 `<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.css">` **reset css**讓標籤有同樣預設 ``` *{marger:0; padding:0; border:1 solid color; box-sizing:border-box;算距離比較簡單} ``` <img src="./img/" alt=""> --- ### 3.7觀念 CSS Layout排版 (Float, Flex, Grid) ### float 支援度100% 現在普遍性最高 最多人用的排版 缺點:彈性不高 >『float:left;』代表向左浮動, >『float:right;』代表像右浮動, >『float:none;』則代表元素不要浮動, >在 DIV 區域使用 float 技巧,通常還會搭配 DIV 的寬度,來達成每個 DIV 正確排列的效果。 >使用 float 浮動屬性讓它們水平排列,可是橘色的區塊就覆蓋上去了,必須額外在 DIV_B 中使用"clear"屬性才能避免被覆蓋的結果, > clearfix .row::after{ content: ""; clear: both; display: table; } 使用的是 display:inline-block 的設定,這樣橘色區塊(DIV_D)就不用額外使用 clear 屬性也不會覆蓋上去 在 W3C 的定義裡總共有五個偽元素 ( 其他仍在測試階段 ),分別是::before、::after、::first-line、::first-letter和::selection,為了和偽類區分,偽元素使用兩個冒號「::」開頭,而偽類使用一個冒號「:」開頭 ( 像是 :hover、:target...等 )。 ::before 是在原本的元素「之前」加入內容,::after 則是在原本的元素「之後」加入內容 ### flex 支援度98% 現代開發非常普遍 適合1-Dimensional排版(x-axis,x-axis) ### grid 支援度90% 適合2-Dimensional排版(xy-axis) 未來的趨勢 ## 4 工具 - Emmet Code - Jumbotron 觀念 - HTML Elements & SEMANTIC HTML 觀念 - Positions 觀念 - CSS Relative Vs Fixed Units ### 4-2 emmet https://docs.emmet.io/cheat-sheet/ .about=><div class="about"></div> h1.big=><h1 class="big"></h1> .container=><div class="container"></div> ul.row>li*4>a=> <ul coass="row"> <li><a href=""></a></li> <li><a href=""></a></li> <li><a href=""></a></li> <li><a href=""></a></li> </ul> background-size:cover; background-position:center; 4-4 semantic HTML 使用semantic HTML的好處: * SEO排名佳 * 下載速度 * 好維護 * 無障礙網頁 對眼睛不好的人會用聲音聽網頁 form表單 nav導覽列 header頁頭 section區塊 article aside footer頁尾 ## 4-6position位置 ### position: static; 預設的 自動往上排 ### position: fixed; 絕對的px.cm.in ==瀏覽器視窗來定位==,這意味著即便頁面捲動,它還是會==固定在相同的位置==。 ### position: relative; 相對的%.em受父層引響.rem受root層引響 relative的表現跟static一樣 可以設定寬高 ### position: absolute; 元素的定位是在他所處上層容器的相對位置 跟fixed很像 位子跟父層有關係 父層需要是relative 5-2 google font https://fonts.google.com/?subset=chinese-simplified 5-5 flex display:flex寬度佔100% display:inline-flex寬度佔box寬度跟inline-block一樣 justify-content(x-axis) center/space-between/space-around ![](https://i.imgur.com/PwDsRDe.png) align-items(y-axis) center/flex-start/flex-end ![](https://i.imgur.com/3PqydGR.png) height:100%; 6-4transform 7-6 grid Layout 12格寬度100% Responsive Web Design - Grid-View https://www.w3schools.com/CSS/css_rwd_grid.asp http://www.responsivegridsystem.com/ .col-md-4 { /** 3格卡片**/ width: calc((100% - 2 * 30px) / 3); } .col-md-3 {/** 4格贊助**/ width: calc((100% - 3 * 30px) / 4); } <img src="" alt="給眼睛不方便的人聽得"/> 9.3google map google map寬度 https://www.labnol.org/internet/embed-responsive-google-maps/28333/ iframe是一種內置框架或內聯框架用來在網頁內嵌入另外一個網頁 9-4表單 placeholder預設文字 字閉合self-closing:img.br.input不需要</img>結尾 10-3 awesome開啟網站找到要的圖片 https://fontawesome.com/icons?d=gallery&p=2 在head加入這段 <script src="https://kit.fontawesome.com/3d798f3890.js" crossorigin="anonymous" ></script> 改變字的大小 fa-xs fa-sm fa-lg fa-2x fa-3x-fa-5x- fa-7x da-10x 改變顏色style="color: cornsilk 11.4響應式網站 https://medium.com/frochu/html-meta-viewport-setting-69fbb06ed3d8 http://www.flycan.com/article/rwd/meta-veiwport-1316.html 設定viewport調整手機解析度 <meta name=”viewport” content=”width=device-width, initial-scale=1.0″> https://www.w3schools.com/css/css_rwd_mediaqueries.asp ``` @media only screen and (max-width: 768px){ .container { width:100%;} }平板 @media only screen and (max-width: 600px){ .container { width:100%;}}手機 @media only screen and (max-width: 900px){ .container { width:100%;}}電腦 ``` 11-5導覽列響應式 fontawesome https://fontawesome.com/icons?d=gallery&p=2&q=menu&m=free 找menu ## 基本功 Display Block vs Display Inline Box Sizing Box -Model Reset & Normalize CSS Position CSS Relative vs Fixed Units Semantic HTML Responsive Web Design Float & Clearfix --- ==[CSS Selectors](https://www.w3schools.com/cssref/css_selectors.asp)== 群組式選擇器:[selectors A], [selectors B]各別對元素附上相同的樣式 複合式選擇器:[selectors A][selectors B]以該元素具有的類別種類做區分 子孫選擇器:[selectors A] [selectors B] 只能夠選擇到第一層的子點 複合選擇器的兩個selector之間是沒有任何空白的,而子孫點選擇器必須以至少一個空白隔開。 子點選擇器:[selectors A] > [selectors B]改變一個元素底下的某些子元素的屬性 相鄰選擇器:+用於選擇第一個兄弟 後位選擇器:~用於選擇所有的相鄰兄弟(但不包含前面的兄弟) [Pseudo-classes](https://www.w3schools.com/css/css_pseudo_classes.asp) :link :visited :hover :active [CSS Pseudo-elements](https://www.w3schools.com/css/css_pseudo_elements.asp) ::before ::after [其他HTML tags](https://www.w3schools.com/tags/ref_byfunc.asp) small strong Rem vs Ems Display Pseudo Class Selector [CSS 權重](https://ithelp.ithome.com.tw/articles/10196454) CSS Color (RGBA, HSLA) --- 規劃 區塊 標籤 高度 HTML ( Structure | Inline vs Block) CSS (Inline vs Block) Layout vs Component 先把版型用出來或者一個區塊先用好 --- 如何練習 [UI Challenge](https://collectui.com/) 參考別人網站 (ex. airbnb.com 的 footer) 做一個小project 慢慢練習 --- 如何找工作 (作品集, blog, 履歷表) 10個小ui切版 3個完整頁面切版購物車官網ui介面 15篇css文章基本功 面試, Live-code現場切版 --- 網頁設計(基本) Color | 顏色 主色 Contrast | 對比 對比色深淺做搭配 [Fonts | 字體 ](https://www.w3schools.com/css/css_font.asp) 分兩種一種叫serif fonts(尖的)另一種叫Sans-serif(平的) google font Spacing |留白 padding 行距 Grid | 格線 [Images | 圖片](https://www.pexels.com/zh-tw/) Personal Experience | 個人經驗 xd 選字體 顏色對比色 設計元件 線框圖 完整圖 --- ### 進階css sass postcss autoprefixer css支援不同瀏覽器 flexbox grid framework框架bootstrap、tailwind --- ---