> For the complete documentation index, see [llms.txt](https://reemo.gitbook.io/life-is-possible-web-apps-workshop-sheng-ming-jiao-yu-shou-ji-cheng-shi-gong-zuo-fang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://reemo.gitbook.io/life-is-possible-web-apps-workshop-sheng-ming-jiao-yu-shou-ji-cheng-shi-gong-zuo-fang/lecture-chinese/lecture-03-css-he-bulma-ru-men.md).

# Lecture 03 - CSS和Bulma入門

## 什麼是CSS和為什麼要用

在您之前的Lab 02 HTML任務中，網站看起來漂亮嗎？

***

## 這些網站是如何呈現的？

演示：&#x20;

[https://81-web.com/ ](<https://81-web.com/ >)

<https://1guu.jp/>

***

## CSS（層疊樣式表）

#### 也稱為：CSS可用於非常基本的文檔文本樣式

***

![bg w:1250](https://www.interviewbit.com/blog/wp-content/uploads/2021/10/HTML-and-CSS.png)

***

## HTML和CSS的不同？

### HTML

所有內容和文本

例如：人體骨骼和肌肉 💀

### CSS

所有樣式和UI的外觀

例如：人體皮膚和頭髮 🎅

***

## 如何快速展示（內部方法）

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #apple {
            color: red;
            text-align: center;
        }
    </style>
</head>
<body>
    <h1 id="apple">I am an apple.</h1>
</body>
</html>
```

***

### 如何快速展示（外部方法）

`index.html`

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <!-- Skipped -->
    <link rel="stylesheet" href="index.css">
</head>
<body>
    <h1 class="apple">I am an apple.</h1>
</body>
</html>
```

`index.css`

```css
.apple {
    color: red;
    text-align: center;
}
```

***

### 快速示範如何（內嵌方法）

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    
</head>
<body>
    <h1 style="color: red; text-align: center;">
        I am an apple.
    </h1>
</body>
</html>
```

***

### 我們偏好哪種 CSS 方法？

內部 CSS

半推薦 👍

外部 CSS

最推薦 👍👍

行內 CSS

不推薦 🤚

***

## 練習課程（5 分鐘）

試著在一個文件夾中創建一個 `index.html` 和 `index.css`，然後將這些內容複製到每個文件夾中。

`index.html`

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta 
      name="viewport" 
      content="width=device-width, initial-scale=1.0"
    >
    <link rel="stylesheet" href="index.css">
</head>
<body>
    <h1 class="school">Hello schools.</h1>
</body>
</html>
```

`index.css`

```css
.school {
    color: #FF00FF;
    text-align: right;
}
```

***

## 介紹 `id` 和 `class`

像上面的例子，您可能會看到以下代碼：

```html
<h1 class="school">Hello schools.</h1>
<h1 id="apple">I am an apple.</h1>
```

那麼，什麼是 `id` 和 `class`？

***

### `id` 和 `class`

在一般的介紹中，它說：

> `id` 屬性為 HTML 元素指定唯一的 `id`。`id` 屬性的值在 `HTML` 文檔中必須是唯一的。

> `class` 屬性通常用於指向樣式表中的 `class` 名稱。它也可以被 JavaScript 用來訪問和操作具有特定 `class` 名稱的元素。

即：我們使用 id 和 class 來指向我們想要對其應用某些內容的元素。 （例如：應用一些樣式、事件、控制相關元素等等）

***

### `id` 和 `class` 的不同之處

1. `id` 是唯一的標籤，它只能引用一個元素。 `class` 可以同時應用於許多元素。

正確 ⭕

```html
<h1 id="apple">I am an apple.</h1>
<h3 class="school">Hello schools 3.</h3>
<h2 class="school">Hello schools 2.</h2>
```

錯誤 ❌（不能重複使用相同的 `id`）

```html
<h1 id="apple">I am an apple.</h1>
<h1 id="apple">Hello schools 1.</h1>

<h3 class="school">Hello schools 3.</h3>
<h2 class="school">Hello schools 2.</h2>
```

***

### 更多正確例子

正確 ⭕

```html
<h1 id="apple">I am an apple.</h1>
<h3 id="orange">Hello schools 3.</h3>
<h2 class="school">Hello schools 2.</h2>
```

正確 ⭕

```html
<h1 id="apple" class="school">I am an apple.</h1>
<h3 id="orange">Hello schools 3.</h3>
<h2 class="school boxes">Hello schools 2.</h2>
```

***

2. `class` 可以同時套用到多個元素上，而 `id` 僅能套用到一個元素。

正確 ⭕

```html
<h2 class="school">Hello schools 2.</h2>
<h2 class="boxes">Hello schools 2.</h2>
<h2 class="school boxes">Hello tom</h2>
```

在上面的範例中，"Hello tom" 元素可以使用 `school` 和 `boxes` 兩個 `class` 的樣式。

錯誤 ❌ （`id` 不可以重複使用）

```html
<h1 id="apple orange">I am an apple.</h1>
```

## 如何使用 `id` 和 `class`？

### `id`

要連結一個 `id`，我們使用 `#` 來表示以下的標籤是一個 `id` 的參考。

`index.css`

```css
#apple {
    color: red;
    text-align: center;
}

#orange {
    color: yellow;
}
```

`index.html`

```html
<h1 id="apple">I am an apple.</h1>
<h1 id="orange">I am an orange?</h1>
```

***

### `class`

要連結一個 `class`，我們在 CSS 中使用 `.` 來表示接下來的標籤是一個 `class` 的引用。<br>

`index.css`

```css
.apple-class {
    color: red;
    text-align: center;
}

.box {
    font-size: 30px
}
```

`index.html`

```html
<div class="box">
  I am an apple.
</div>

<h1 class="apple-class box">
  I am an apple also
</h1>
```

***

## CSS 檔案

所有的 CSS 樣式都會被放在一起。

```css
.apple-class {
    color: red;
    text-align: center;
}

.box {
    font-size: 30px
}

#apple {
    color: red;
    text-align: center;
}

#orange {
    color: yellow;
}
```

***

### CSS 可以做什麼？

* 📚 顏色樣式
* 🖼 佈局樣式
* ✒ 文字樣式
* 🎠 動畫
* 🧰 大小和高度
* 📅 顯示方式
* 📊 還有更多...

***

### CSS 無法做什麼？

* 邏輯控制
* 處理互動事件
* 控制當某些事情發生時的顯示方式

這些是 `JavaScript` 的功能，我們將在下一課學習 `JavaScript`。

***

## CSS 使用注意事項

1. 有些標籤可能不常用、已廢棄或是相對較新，因此我們無法在短時間內介紹所有標籤。
2. 根據需求，您應該根據自己的需求進行谷歌搜索/查找文檔。即使是高級程序員也無法記住所有的語法和代碼。不要試圖記住所有的語法，而是概念上理解 CSS 可以應用的格式。

常用文本相關

```css
.some-class {
  color: blue;
  text-align: center;
  font-size: 100px;
  font-weight: 600;
  font-family: 'Courier New', Courier, monospace;
}
```

更多: <https://developer.mozilla.org/en-US/docs/Web/CSS/font> <https://developer.mozilla.org/en-US/docs/Web/CSS/text-align>

通用的背景顏色和其他樣式

```css
.some-class {
  background-color: #123F02;
  text-shadow: 2px 2px;
  box-shadow: 10px 10px;
}
```

#### 通用佈局實用程序

* `margin` (外邊框): <https://www.w3schools.com/css/css_margin.asp>
* `padding` (内邊框): <https://www.w3schools.com/css/css_padding.asp>
* `Height, Width` (高度、寬度): <https://www.w3schools.com/css/css_dimension.asp>
* `border` (邊框): <https://www.w3schools.com/css/css_border.asp>
* `float` (位置): <https://www.w3schools.com/css/css_float.asp>

#### 通用佈局實用程序(更多)

* `position` (位置) : <https://www.w3schools.com/css/css_positioning.asp>
* `display` (現出) : <https://www.w3schools.com/css/css_display_visibility.asp>
* `z-index` (層): <https://www.w3schools.com/css/css_z-index.asp>

#### 通用佈局實用程序(更多)

`display: flex` `justify-content: flex-start | flex-end | center | space-between | space-around;` `align-items: flex-start | flex-end | center | baseline | stretch;`&#x20;

<https://www.casper.tw/css/2017/07/21/css-flex/>

### `display flex` 演示

<https://grid.malven.co/>

### `display flex` 練習遊戲

<https://flexboxfroggy.com/>

***

## 介紹 Bulma

Bulma 是一個免費、開源的框架，提供了現成的前端元件，可以輕鬆地組合來建構響應式網頁介面。

<https://bulma.io/documentation/overview/start/>

***

## 為什麼要用 Bulma

* 提供良好的元件可供使用
* 有好看的介面
* 容易建構響應式網站 (responsive website)
* 寫少量的 CSS

### 在 HTML 中安裝 Bulma

```html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Hello Bulma!</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">
  </head>
  <body>
  <section class="section">
    <div class="container">
      <h1 class="title">
        Hello World
      </h1>
      <p class="subtitle">
        My first website with <strong>Bulma</strong>!
      </p>
    </div>
  </section>
  </body>
</html>
```

### Columns (列)

* <https://bulma.io/documentation/columns/basics/>

### Elements (元素)

* Button (按鈕): <https://bulma.io/documentation/elements/button/>
* Box (盒子): <https://bulma.io/documentation/elements/box/>
* Title (標題): <https://bulma.io/documentation/elements/title/>

更多: <https://bulma.io/documentation/elements/>

***

### Components (部件)

* Navbar (導航欄): <https://bulma.io/documentation/components/navbar/>
* Card (卡片): <https://bulma.io/documentation/components/card/>

更多: <https://bulma.io/documentation/components/>

***

## Lab 01 - 裝飾自我介紹頁面

還記得之前在 lecture 02 的 自我介紹 頁面嗎？ 現在，讓我們使用更多的 `CSS` 和 `bulma` 來美化它 ！

以下是您的頁面應該添加的一些內容：

* 👩‍🎨 文本顏色 和 背景顏色 (`Text Color` and `background color`)
* 🎴 字體大小，文本對齊 (`Font size`, `text align`)
* 🎛 邊框 (`Border`)
* 📣 至少兩個來自 bulma 的元素 (`bulma`)

以下是您可以添加到您的頁面的一些內容：

* 📦 更多的 bulma 組件和佈局
* 🛒 任何您能想到的更多內容...


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://reemo.gitbook.io/life-is-possible-web-apps-workshop-sheng-ming-jiao-yu-shou-ji-cheng-shi-gong-zuo-fang/lecture-chinese/lecture-03-css-he-bulma-ru-men.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
