四、[前端] CSS

CSS 主要是來管外觀的部份

範例

p {
    margin: 10px;
    font-size: 16px;
    color: #ccc;
}

選擇器 {
    屬性: ;
}

CSS 選擇器(selector)

再舉例

/*所有 p 標籤的背景都會變藍色*/
p {
    baceground-color: blue;
}

/* id 為 target 元素的文字大小變成 32px */
#target {
    font-size: 32px;
}

/* class 為 container 元素的外距會自動調整,產生置中效果 */
.container {
    margin: 0 auto; // 置中
}

如果直接選不夠的話,需要設立條件縮小範圍

常見的 CSS selector

  • 基本

    • p 基本標籤 tag

    • #target id

    • .container class name

  • 篩選條件

    • div.container 所有帶有 .container 的 div

    • #header li #header 底下所有的 li 子孫

    • #header > ul #header 下一層的 ul 兒子

    • .active ~ li .active 後的同一層的所有 li

    • .active + li .active 後的第一個 li

常見的 CSS 屬性

知道了選擇器,可以找到目標後,接下來學習怎麼改外觀。首先要了解 box model

box model 由外而內包含

  • margin,外距,自己與其他元素的距離

  • border,邊框,自己的邊框

  • padding,內距,留白,content 到 border 的距離

  • width / height,內容自己的長與寬

接下來談 position,位置。它不是直接調整座標 (x,y) 位置,而是用來設定元素位置的根據點的屬性。例如

  • static。自然的文章流動,由上而下由左至右,是預設值。它不能調整位置

  • relative。可以調整位置的 static。一樣有自然文章流動,但可以調整位置

  • absolute。設定特別。會有起始點,根據最早有設定 position 的祖先當作基準點

  • fixed。起始點就是網頁整個可見的範圍

接下來談 float,就是文繞圖的概念。

  • float

    • 值有 left, right

  • clear

    • 值有 left, right, both

float 常被用在排版上面。float: left 的主要內容可以設定 width: 80%,float: right 的側邊欄可以設定 width: 20%,這樣排版就會正常。

只是使用完 float 後,要清除 float,不然網頁下方的 footer 會往上跑。這屬性叫 clear。clear: both

範例

小結

常見的 CSS 設定補充

  • 比較大的架構

    • display

    • position

      • static, relative, absolute, fixed

      • 搭配 top / right / bottom/ top 調整位置

    • float & clear

      • float: left, right

      • clear: left, right, both

  • 比較小的細節

    • box-model

      • 很多屬性的總稱

      • margin, border, padding, width / height

      • block 元素才有 box model;inline 元素就沒有

    • background

      • background-color, background-image, background

    • text

      • text-align

      • line-height

    • font

      • font-size, font-weight, color 文字顏色, font-family

    • Others

      • overflow 當內容超出容器,怎麼顯示

      • list-style-type li 點的樣式

      • text-decoration 底線 underline、刪除線 line-through

      • ...

Flexbox basic - YouTube

  • System

    • 在自己設定 display: flex 後,自己變成 flex container,子元素變成 flex item

    • flex lines 基準線會被 flex item Follow

    • Main axis and Cross axis 水平軸線與垂直軸線

    • Main start / Main end, Cross start / Cross end

    • 這個系統可以調整的東西:方向、對齊方式、寬度設定

  • CSS properties

    • Flex container

      • Flex container About axis

        • flex-direction

          • 定義 main axis 的走向

          • 預設值 flex-direction: row 由左置右

          • 設定值 row, row-reverse, column, column-reverse

        • justify-content

          • flex items 如何對齊 main axis

          • 預設值 justify-content: flex-start

          • 設定值 flex-start, flex-end, center, space-between, space-around

        • align-items

          • flex items 如何對齊 cross axis

          • 預設值 align-items: flex-start

          • 設定值 `flex-start, flex-end, center, stretch(延展開來), baseline(看 flex item 裡文字的底線)

      • Flex container About wrap 包覆的方式

        • flex-wrap

          • flex item 超過 container 的話,該怎麼做

          • 預設值 flex-wrap: nowrap 雖然不會超出去,但 item 也不會換行,就在同一行硬塞

          • 設定值 nowrap, wrap, wrap-reverse

        • align-content

          • 在 wrap 之後,會多很多行 flex lines

          • flex lines 如何對齊在 cross axis

          • 有多行,就會有多條 flex lines

          • 預設值 align-content: flex-start

          • 設定值 flex-start, flex-end... 好多 ==

    • Flex items

      • Flex

        • 容易跟 display: flex 搞混

        • 預設值 flex: 0 1 auto

        • flex: flex-grow flex-shrink flex-basis;

        • flex-grow

          • flex container 還有多的空間時,要不要自動成長,閒置空間要怎麼分

        • flex-shrink

          • 當 flex-items overflow 時,item 要不要縮

          • 預設值 flex-shrink: 1,會縮

        • Flex-basis

          • 類似寬度的設定

          • 預設值 flex-basis: auto,可用 px 設定寬度

      • Order

        • 在 RWD 操作方便,可以控制呈現順序

        • 假設畫面上有 .sidebar.A .content .sidebar.B 區塊

        • 在手機上想先呈現 .content,再呈現 .sidebar.A .sidebar.B

      • Margin

        • 在 flex 裡更 powerful,上下的 margin 可以 auto,可以實現垂直置中

      • align-self

        • 單獨一個 flex item 對齊 cross axis

        • 如果有機車設計師要單獨一個 item 位置不一樣,就用這個

  • Practice

  • Can I use?

[練習] 版面置中

試作的 Codepen

html

css

[練習] 3 欄式架構

試作的 Codepen

html

css

控制寬度的魔法:box-sizing

試作的 Codepen

width 只會計算 content 的寬度,padding, content 要另外加總;於是就有了 box-sizing 魔法

box-sizing 有兩個值

  • content box (default)

  • border box

html

css

Last updated

Was this helpful?