yiling
顯然是一顆水餃
年輕時的照片
vscode
先備知識
HTML
CSS
GitHub
vscode
編輯器
就是一個可以寫程式碼的地方
那我們怎麼看寫出來的網頁長怎樣
右鍵
也可以直接按畫面右下角的go live
仙貝芝士
網頁簡介及運作模式
前端 / 後端
DevTools
網頁簡介及
運作模式
含文字、圖片、影片、連結的檔案
網頁(web page)
如果網站是一本書
網頁就是書頁
書只有一頁可以嗎
可以啊(一頁式網頁)
頂級域
(TLD)
二級域(SLD)
子網域
(Subdomain)
註冊時指定的
唯一名稱
組織網站的不同部分
提供不同的服務
TLD, Top-Level Domain
Root Domain
SLD, Secomd-Level Domain
Subdomain
在網路上找使用者輸入的內容
負責儲存、處理,提供網頁給使用者
搜尋引擎
伺服器
瀏覽器
找到網址
把東西變成看得懂的樣子
跟伺服器要東西
前端 / 後端
使用者看到跟操作的介面
JS
JavaScript
HTML
HyperText Markup Language
超文本標記語言
CSS
Cascading Style Sheets
在伺服器上運作
負責處理資料與邏輯
語言多樣
DevTools
想看網頁原始碼噎
兩個方法
右鍵+檢查
F12
左上角小箭頭
按了可以選東西
然後可以改字
好欸找到照片檔案了
HTML
HTML
HTML 元素
HTML 基本架構
head 內容
文字
巢狀結構
空格、特殊字元
超連結
圖片
清單
表格
表單
輸入框
下拉式選單
多行文字輸入
按鈕
欄位標題
容器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>這些基本的架構在vscode上按 ! + tab就會直接跳出來
<title>Document</title>
起始標籤
內容
結束標籤
前面加個/
這樣就是一個元素
空元素(沒有內容的元素)只有起始標籤
例如換行<br>
<meta charset="UTF-8">
屬性
屬性值
用""包起來
標籤名稱
元素的屬性會放在起始標籤,提供更多關於這個元素的資訊
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html><!DOCTYPE html> 告訴瀏覽器文件類型
<html> </html>根元素,最外層框架,包住所有資訊
<head></head> 給瀏覽器看的資訊
<body></body> 畫面所有內容
en 表示主要語言是英文
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>meta 描述網頁資料的標籤
關於編碼詳見資安小社,簡單來說就是把文字變成電腦看得懂的樣子
name 資訊種類、content 實際資訊內容
<title> </title> 分頁頁籤上顯示的標題
這一行的意思是讓網頁在各種裝置上按實際寬度顯示,不要自動縮放
charset 字元編碼資訊
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>除了這些,head裡也可以放其他關於網頁的資料,例如
<h1>123</h1>
<h2>456</h2>
<p>789</p>
<hr>
<b>Bold</b>
<br>
<u>Underline</u>
<i>Italic</i>
<s>Strikethrough</s>
<sup>Superscript</sup>
<sub>Subscript</sub>
<!-- This is a comment -->就是可以標籤包標籤,一層一層的
不能交錯
<body>
<p>
<b>333</b>
</p>
</body><b><i>111</i></b>
<b><i>111</b></i>會報錯
| 不換行空格 | |
| 半形空格 |   |
| 全形空格 |   |
| < | < |
| > | > |
| & | & |
| " | " |
| ' | ' |
直接打連續多個空格會變成只有一個
<p>1 2 3 4< >&" '</p>
需要的時候再查就可以了
<a href="https://slides.com">Slides</a>
指定連結的屬性
連結
顯示文字
target="" 指定在哪裡開連結
_self 原分頁
_blank 新分頁
一些常用的屬性
download="" 下載檔案
""裡放檔案
<img src="https://hackmd.io/Logo.svg" >
圖片來源
圖片
一些常用的屬性
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul><ol>
<li>1</li>
<li>2</li>
<li>3</li>
</ol>無序
有序
有序清單可以加屬性
換編碼方式
<ol type="">
A 大寫字母
a 小寫字母
I 大寫羅馬數字
i 小寫羅馬數字start="50" 從50開始數
<table>
<caption>分數登記表</caption>
<tr>
<th>座號</th>
<th>分數</th>
</tr>
<tr>
<td>1</td>
<td>20</td>
</tr>
<tr>
<td>2</td>
<td>40</td>
</tr>
<tr>
<td>3</td>
<td>60</td>
</tr>
</table>有點陽春
<table border="2">
<caption>分數登記表</caption>
<thead>
<tr>
<th>座號</th>
<th>分數</th>
</tr>
</thead>
<tfoot>
<tr>
<th>平均</th>
<td>40</td>
</tr>
</tfoot>
<tbody>
<tr>
<td>1</td>
<td>20</td>
</tr>
<tr>
<td>2</td>
<td>40</td>
</tr>
<tr>
<td>3</td>
<td>60</td>
</tr>
</tbody>
</table>
複習一下
要有:
<form> </form> 包起來
常見的元素:<input> <select><texterea> 等等
常見的屬性:
| text | 單行文字(預設) |
| password | 密碼(用 ● 隱藏) |
| number | 選數字 |
| date / time / datetime-local | 選日期時間 |
| file | 上傳檔案 |
| checkbox / radio | 核取方塊 / 選項按鈕 |
<input type="text" value="value"><br>
<input type="text"><br>
<input type="password"><br>
<input type="number"><br>
<input type="date"><br>
<input type="time"><br>
<input type="datetime-local"><br>
<input type="file"><br>
<input type="checkbox"><br>
<input type="radio"><br>
<select>
<option>選項1</option>
<option>選項2</option>
<option>選項3</option>
</select>select屬性
option屬性
基礎長這樣
<form>
<!-- 單選 -->
<label>城市(必填):
<select name="city" required>
<option value="">-- 請選擇 --</option>
<option value="taipei" selected>台北</option>
<option value="taichung">台中</option>
<option value="kaohsiung">高雄</option>
<option value="taitung" disabled>沒開的</option>
</select>
</label>
<br>
<!-- 多選 -->
<label>食物(可多選):
<select name="food" multiple>
<option value="dumpling" selected>水餃</option>
<option value="noodle">麵</option>
<option value="rice">飯</option>
<option value="soup">湯</option>
</select>
</label>
<br>
<!-- 禁用 -->
<label>交通工具:
<select name="transport" disabled>
<option value="bus">公車</option>
<option value="train">火車</option>
<option value="bike">腳踏車</option>
</select>
</label>
</form>屬性
<textarea rows="6"cols="40">
12345
123
</textarea>屬性
input, textarea, select, button等等都可以搭配label
<form>
<label>input</label>
<input type="text">
<br><br>
<label>textarea</label>
<textarea></textarea>
<br><br>
<label>select</label>
<select>
<option>1</option>
<option>2</option>
</select>
<br><br>
<label>button</label>
<button>123</button>
</form>包裹其他html,整理出不同區塊
方便給CSS排版,JS操作
<div>
<h3>123</h3>
<p>111</p>
<p>222</p>
</div>跟div功能差不多,包裹文字或其他行內的 HTML
<p>123 <span>456</span> 123</p>CSS
套用CSS
語法
選擇器
屬性選擇器
偽類
偽元素
Box Model
border
color
font-family
float
position
background
display
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>document</title>
<style>
h1 {
color: #f00;
}
</style>
</head>
<body>
<h1>123</h1>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>document</title>
</head>
<body>
<h1 style="color: blue;">123</h1>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
</body>
</html>
h1 { color: #333; font-size: 20px; }
選擇器
Selector
屬性
Property
屬性值
Value
宣告區塊Declaration Block
宣告Declaration
h1 {
color: #333;
font-size: 20px;
}
/* 大部分會寫成這樣 */
/* 好欸
註解 */
HTML 屬性(Attribute)
寫在標籤裡面
控制結構或行為
語法:屬性="值"
<input type="text">
<p class="highlight">水餃</p>CSS 屬性(Property)
寫在 css 檔案
控制外觀與呈現
語法:屬性: 值;
#intro {
color: blue;
}
.highlight {
background-color: yellow;
color: green;
}選擇 html 裡的元素
同一 class name 可以放在多個不同元素上
一個 id name 只能放在一個元素上
<p class="wow">有 class</p>
<p id="special">有 ID</p>
<body>
<h2>h2</h2>
<p class="wow">有 class</p>
<p id="special">有 ID</p>
<p name="123">有 name 屬性</p>
</body>
/* 通用:選所有元素 */
* {
background: pink;
}
/* 選所有 <h2> 標籤 */
h2 {
color: blue;
}
/* 選 class="wow" 的元素 */
.wow {
color: green;
}
/* 選 id="special" 的元素 */
#special {
color: red;
}
/* 選有 name 屬性的元素 */
[name] {
color: purple;
}
| A, B | A 或 B |
| AB | A 且 B |
| A B | A 裡的所有 B |
| A > B | A 下一層的所有 B |
| A ~ B | A 後面的所有同輩 B |
| A + B | 緊接在 A 後面的同輩 B |
A、B為不同選擇器
A, B
選擇 A 或 B
p, .wow{
color: blue;
}<h2>h2</h2>
<h2 class="wow">h2</h2>
<p>p</p>
<p class="wow">p</p>p.wow {
color: green;
}AB
選擇 A 且 B
A B
選擇 A 裡的所有 B
<p>p0</p>
<div class="wow">
<p>p1</p>
<h3>h3</h3>
<div>
<p>p2</p>
</div>
</div>
.wow p{
color: blue;
}.wow > p{
color: green;
}A > B
選擇 A 下一層的所有 B
A ~ B
選擇 A 後面的所有同輩 B
A + B
選擇緊接在 A 後面的同輩 B
<h3>h3</h3>
<p>p1</p>
<p>p2</p>
<div>
<p>p0</p>
</div>h3 ~ p{
color: blue;
}h3 + p{
color: green;
}| X[attr] | 有特定屬性的元素 |
| X[attr=val] | 有特定屬性且值完全相同的元素 |
| X[attr~=val] | 屬性值包含某字(以空白分隔) |
| X[attr^=val] | 屬性值開頭是某字 |
| X[attr$=val] | 屬性值結尾是某字 |
| X[attr*=val] | 屬性值包含某字串 |
<a href="https://www.google.com/" target="_blank" class="btn link">Google</a><br><br>
<a href="https://www.youtube.com/" class="video btn">YouTube</a><br><br>
<a href="https://openai.com/">OpenAI</a>/* [attr]:有這個屬性的元素 */
a[target] {
color: red;
}
/* [attr=value]:屬性值完全相符 */
a[target="_blank"] {
border: 2px dotted black;
}
/* [attr~=value]:屬性值包含「以空白分隔」的其中一個字 */
a[class~="btn"] {
background-color: pink;
}
/* [attr^=value]:屬性值開頭是指定字 */
a[href^="https://o"] {
color: black;
}
/* [attr$=value]:屬性值結尾是指定字 */
a[href$=".com/"] {
text-decoration: underline;
}
/* [attr*=value]:屬性值中含有指定字 */
a[href*="youtube"] {
border: 2px solid black;
}
元素在特定條件下的設定
a:active { color: red; }
選擇器
Selector
屬性
Property
屬性值
Value
偽類pseudo class
| 偽類 | 條件 |
| :link | 沒點過的連結 |
| :visited | 點過的連結 |
| :hover | 滑鼠移到該元素 |
| :active | 點擊時(按著不放) |
| :focus | 元素被聚焦(正在操作) |
| :first-child | 第一個子元素 |
| :last-child | 最後一個子元素 |
更多🌰
link, visited, hover, active
<a href="https://www.google.com/">Google</a>
<a href="https://www.wikipedia.org/">Wikipedia</a>a:link {
color: skyblue;
}
a:visited {
color: green;
}
a:hover {
color: yellow;
}
a:active {
color: orange;
}點擊前
點擊後
按住
滑鼠滑到
focus, first-child, last-child
<input><br><br>
<input value="focus">
<ul>
<li>第一項</li>
<li>第二項</li>
<li>第三項</li>
</ul>input:focus {
border-color: dodgerblue;
outline: none;
}
ul li:first-child {
color: lightgreen;
}
ul li:last-child {
color: tomato;
}
focus, first-child, last-child
<input><br><br>
<input value="focus">
<ul>
<li>第一項</li>
<li>第二項</li>
<li>第三項</li>
</ul>input:focus {
border-color: dodgerblue;
outline: none;
}
ul li:first-child {
color: lightgreen;
}
ul li:last-child {
color: tomato;
}
focus, first-child, last-child
<input><br><br>
<input value="focus">
<ul>
<li>第一項</li>
<li>第二項</li>
<li>第三項</li>
</ul>input:focus {
border-color: dodgerblue;
outline: none;
}
ul li:first-child {
color: lightgreen;
}
ul li:last-child {
color: tomato;
}
假的元素(?
選取元素特定的部分,或在元素前後插入東西
p:before { content: "A"; }
選擇器
Selector
屬性
Property
屬性值
Value
偽元素pseudo elements
| 偽類 | 條件 |
|---|---|
| ::first-letter | 第一個字母 |
| ::first-line | 第一行 |
| ::selection | 被使用者選取的部分 |
| ::before | 在前面加東西 |
| ::after | 在後面加東西 |
before、after必須要有 content
<h3>123123</h3>
<p>今天天氣晴 <br> 我想要吃蛋餅</p>h3::first-letter {
color: red;
}
p::before {
content: "hi ";
}
p::after {
content: " oh";
}
p::first-line {
background-color: gray;
}
p::selection {
color: green;
}<h3>123123</h3>
<p>今天天氣晴 <br> 我想要吃蛋餅</p>h3::first-letter {
color: red;
}
p::before {
content: "hi ";
}
p::after {
content: " oh";
}
p::first-line {
background-color: gray;
}
p::selection {
color: green;
}<h3>123123</h3>
<p>今天天氣晴 <br> 我想要吃蛋餅</p>h3::first-letter {
color: red;
}
p::before {
content: "hi ";
}
p::after {
content: " oh";
}
p::first-line {
background-color: gray;
}
p::selection {
color: green;
}<h3>123123</h3>
<p>今天天氣晴 <br> 我想要吃蛋餅</p>h3::first-letter {
color: red;
}
p::before {
content: "hi ";
}
p::after {
content: " oh";
}
p::first-line {
background-color: gray;
}
p::selection {
color: green;
}<h3>123123</h3>
<p>今天天氣晴 <br> 我想要吃蛋餅</p>h3::first-letter {
color: red;
}
p::before {
content: "hi ";
}
p::after {
content: " oh";
}
p::first-line {
background-color: gray;
}
p::selection {
color: green;
}<h3>123123</h3>
<p>今天天氣晴 <br> 我想要吃蛋餅</p>h3::first-letter {
color: red;
}
p::before {
content: "hi ";
}
p::after {
content: " oh";
}
p::first-line {
background-color: gray;
}
p::selection {
color: green;
}| :first-of-type | 同層裡的第一個 |
| :last-of-type | 同層裡的最後一個 |
| :nth-last-of-type(n) | 同層裡的倒數第n個 |
| :nth-of-type(n) | 同層裡的第n個 |
| :nth-of-type(2n) | 同層裡某一偶數個 |
| :nth-of-type(2n+1) | 同層裡某一奇數個 |
| :only-type | 同層裡只有一個 |
<div>
<p>第 1 個 p</p>
<p>第 2 個 p</p>
<p>第 3 個 p</p>
<p>第 4 個 p</p>
</div>
<div>
<p>唯一的 p → only-of-type</p>
</div> p:first-of-type {
background: lightblue;
} /* 第一個 p */
p:last-of-type {
background: lightgray;
} /* 最後一個 p */
p:nth-of-type(2) {
background: orange;
} /* 第 2 個 p */
p:nth-of-type(2n) {
color: blue;
} /* 偶數個 p */
p:nth-of-type(2n+1) {
color: green;
}/* 奇數個 p */
p:nth-last-of-type(1) {
font-weight: bold;
} /* 倒數第 1 個 p */
p:only-of-type {
background: pink;
} /* 若只有一個 p */<div>
<p>第 1 個 p</p>
<p>第 2 個 p</p>
<p>第 3 個 p</p>
<p>第 4 個 p</p>
</div>
<div>
<p>唯一的 p → only-of-type</p>
</div> p:first-of-type {
background: lightblue;
} /* 第一個 p */
p:last-of-type {
background: lightgray;
} /* 最後一個 p */
p:nth-of-type(2) {
background: orange;
} /* 第 2 個 p */
p:nth-of-type(2n) {
color: blue;
} /* 偶數個 p */
p:nth-of-type(2n+1) {
color: green;
}/* 奇數個 p */
p:nth-last-of-type(1) {
font-weight: bold;
} /* 倒數第 1 個 p */
p:only-of-type {
background: pink;
} /* 若只有一個 p */<div>
<p>第 1 個 p</p>
<p>第 2 個 p</p>
<p>第 3 個 p</p>
<p>第 4 個 p</p>
</div>
<div>
<p>唯一的 p → only-of-type</p>
</div> p:first-of-type {
background: lightblue;
} /* 第一個 p */
p:last-of-type {
background: lightgray;
} /* 最後一個 p */
p:nth-of-type(2) {
background: orange;
} /* 第 2 個 p */
p:nth-of-type(2n) {
color: blue;
} /* 偶數個 p */
p:nth-of-type(2n+1) {
color: green;
}/* 奇數個 p */
p:nth-last-of-type(1) {
font-weight: bold;
} /* 倒數第 1 個 p */
p:only-of-type {
background: pink;
} /* 若只有一個 p */<div>
<p>第 1 個 p</p>
<p>第 2 個 p</p>
<p>第 3 個 p</p>
<p>第 4 個 p</p>
</div>
<div>
<p>唯一的 p → only-of-type</p>
</div> p:first-of-type {
background: lightblue;
} /* 第一個 p */
p:last-of-type {
background: lightgray;
} /* 最後一個 p */
p:nth-of-type(2) {
background: orange;
} /* 第 2 個 p */
p:nth-of-type(2n) {
color: blue;
} /* 偶數個 p */
p:nth-of-type(2n+1) {
color: green;
}/* 奇數個 p */
p:nth-last-of-type(1) {
font-weight: bold;
} /* 倒數第 1 個 p */
p:only-of-type {
background: pink;
} /* 若只有一個 p */<div>
<p>第 1 個 p</p>
<p>第 2 個 p</p>
<p>第 3 個 p</p>
<p>第 4 個 p</p>
</div>
<div>
<p>唯一的 p → only-of-type</p>
</div> p:first-of-type {
background: lightblue;
} /* 第一個 p */
p:last-of-type {
background: lightgray;
} /* 最後一個 p */
p:nth-of-type(2) {
background: orange;
} /* 第 2 個 p */
p:nth-of-type(2n) {
color: blue;
} /* 偶數個 p */
p:nth-of-type(2n+1) {
color: green;
}/* 奇數個 p */
p:nth-last-of-type(1) {
font-weight: bold;
} /* 倒數第 1 個 p */
p:only-of-type {
background: pink;
} /* 若只有一個 p */前面的示範已經有用到一些常用的屬性
margin (外邊距)
元素外部的間距
可以為負值,但會與其它元素重疊
border (邊框)
框線,將內容包在裡面
padding (內邊距)
元素內部的間距
不能為負
content (內容)
內容任何 HTML 元素
絕對單位
in : 英吋
cm : 公分
mm : 毫米
pt : point
1pt = 1/72 in
pc : picas
1pc = 12pt
px : pixel units
1px = 0.75 pt
相對單位
em : 相對於該元素字體大小
ex : 通常與字體 x 高度相同
vh : 螢幕高的百分比
vw : 螢幕寬的百分比
相對單位
em : 相對於該元素字體大小
ex : 通常與字體 x 高度相同
vh : 螢幕高的百分比
vw : 螢幕寬的百分比
.box {
font-size: 20px; /* 文字大小 */
width: 50vw; /* 螢幕寬度百分比 */
margin: 5vh; /* 上下外邊距佔螢幕高度 */
padding: 1em; /* 文字與邊框距離 */
background-color: #b3d8e6; /* content 範圍顏色 */
}<div class="box">
content
</div>.box1{
/* 上下左右 */
margin:20px;
background-color: #b3d8e6;
}
.box2{
/*上下 左右 */
margin:20px 30px;
background-color: #00d8e6;
}
.box3{
/* 上 右 下 左 */
margin:20px 30px 40px 50px;
background-color: #b3ffe6;
}
.box4{
/* 上 左右 下 */
margin:20px 30px 40px;
background-color: #b3d8ff;
}<div class="box1">
這是內容(content)
</div>
<div class="box2">
這是內容(content)
</div>
<div class="box3">
這是內容(content)
</div>
<div class="box4">
這是內容(content)
</div>margin-top(top/bottom / left / right):長度;
padding-top(top/bottom / left / right):長度;
.box {
width: 150px;
padding: 15px;
margin: 10px;
text-align: center; /*置中*/
}
/* border: 框線 樣式 顏色 */
.dotted {
border: 2px dotted black;
}
.dashed {
border: 2px dashed black;
}
.solid {
border: 2px solid black;
}
.double {
border: 3px double black;
}
.groove {
border: 3px groove gray;
}
.ridge {
border: 3px ridge gray;
}
.inset {
border: 3px inset gray;
}
.outset {
border: 3px outset gray;
}
<div class="box dotted">dotted</div>
<div class="box dashed">dashed</div>
<div class="box solid">solid</div>
<div class="box double">double</div>
<div class="box groove">groove</div>
<div class="box ridge">ridge</div>
<div class="box inset">inset</div>
<div class="box outset">outset</div>div {
width: 100px;
height: 30px;
margin: 20px;
padding:10px;
}
.width {
border: solid;
border-width: 5px;
}
.radius {
border: 3px solid green;
border-radius: 20px;
}
.radius-sides {
border: 3px solid orange;
border-top-left-radius: 10px;
border-top-right-radius: 20px;
border-bottom-right-radius: 30px;
border-bottom-left-radius: 40px;
}
<div class="width"> border-width </div>
<div class="radius"> border-radius </div>
<div class="radius-sides"> radius-sides </div>更詳細的看這裡
<h3 class="a"> green </h3>
<h3 class="b"> #008800 </h3>
<h3 class="c"> rgb(0, 128, 0, 1) </h3>.a {
color: green;
}
.b {
color: #008800;
}
.c {
color: rgb(0, 128, 0, 1);
}
對照組
sans-serif 無襯線字體
serif 有襯線
monospace 等寬字型
cursive 手寫感
.sans {
font-family: sans-serif;
}
.serif {
font-family: serif;
}
.monospace {
font-family: monospace;
}
.cursive {
font-family: cursive;
}<p> h3110 </p>
<p class="sans"> h3110 </p>
<p class="serif"> h3110 <p>
<p class="monospace"> h3110 </p>
<p class="cursive"> h3110 <p>字體種類
用不同瀏覽器開可能不一樣
對照組
Courier New
Arial
consolas
.CN{
font-family:"Courier New",sans-serif;
}
.Arial{
font-family:"Arial", sans-serif;
}
.consolas{
font-family:"consolas",sans-serif;
}
<p> h3110 </p>
<p class="CN"> h3110 </p>
<p class="Arial"> h3110 <p>
<p class="consolas"> h3110 </p>具體字型名稱
不見得都能顯示出來
貼在 html 的 head
<p> hello </p>
<p class="lol"> hello </p>
<p class="hoh"> hello </p>
<p class="wow"> hello <p>p{
font-size:30px;
}
.lol {
font-family: sans-serif;
}
.hoh {
font-family:"Bitcount Prop Single", sans-serif;
}
.wow {
font-family: "Press Start 2P", sans-serif;
}
記得 head 裡面要放剛剛那一坨
<link href="https://fonts.googleapis.com/css2?family=Bitcount+Prop+Single:wght@100..900&display=swap" rel="stylesheet"><link href="https://fonts.googleapis.com/css2?family=Bitcount+Prop+Single:wght@100..900&family=Press+Start+2P&display=swap" rel="stylesheet">.pic {
width: 100px;
height: auto;
float: left;
margin: 10px;
}
讓文字環繞圖片的排版方式
<img src="https://avatars.githubusercontent.com/u/108336252?s=280&v=4" class="pic">
<p>2026 建北電資聯合寒訓</p>
<p>冰凍三尺非一日資寒</p>
<p>2/03(二) 到 2/09(一)</p>
<p>高一高二都可參加</p>
<p>有很多豐富的課程跟好玩的活動</p>
<p>早鳥3200/1人(到12/28)</p>
<p>原價3500/1人(1/10截止)</p>.kkk {
width: 145px;
background-color:#f1f1f1;
}
.left {
width: 50px;
height: auto;
float: left;
}
.right {
width: 50px;
height: auto;
float: right;
}讓文字環繞圖片的排版方式
<div class="kkk">
<h3>float: left</h3>
<img src="https://www.ckefgisc.org/images/fgisc_star.png" class="left">
<p>fgisc fgisc fgisc fgisc fgisc fgisc fgisc fgisc fgisc</p>
<h3>float: right</h3>
<img src="https://www.ckefgisc.org/images/ckeisc_mouse.png" class="right">
<p>ckefgisc ckefgisc ckefgisc ckefgisc ckefgisc</p>
</div>位置設定
位置設定
<div class="kkk">
<div class="sta">static</div>
<div class="rela">relative (往右下移)</div>
<div class="abs">
<div class="absolute">absolute (貼在右上)</div>
</div>
<div class="fixed">fixed (右下角)</div>
</div>.sta {
position: static;
border: 1px solid black;
}
.rela {
position: relative; /* 相對定位 */
top: 10px; /* 向下移 10px */
left: 10px; /* 向右移 10px */
border: 1px solid black;
}
/* 容器用 relative 讓內部 absolute 可以參考 */
.abs {
position: relative;
width: 200px;
height: 100px;
border: 1px solid black;
margin-top: 20px; /* 上方間距 20px */
}
.absolute {
position: absolute;
top: 0; /* 貼到父元素上邊 */
right: 0; /* 貼到父元素右邊 */
border: 1px solid black;
}
.fixed {
position: fixed;
right: 10px; /* 右邊距離視窗 10px */
bottom: 10px; /* 下邊距離視窗 10px */
border: 1px solid black;
}
.kkk {
width: 250px;
background-color: #f1f1f1;
}
/* 背景顏色 */
.color {
width: 120px;
height: 100px;
background-color: lightblue; /* 背景顏色 */
margin-bottom: 10px;
}
/* 背景圖片 */
.image {
width: 120px;
height: 100px;
background-image: url("https://avatars.githubusercontent.com/u/108336252?s=280&v=40");
background-repeat: no-repeat; /* 不重複 */
background-size: contain; /* 讓整張圖都顯示在容器內 */
background-position: center; /* 放在中間 */
background-color: lightgray; /* 若圖片不滿,顯示背景色 */
margin-bottom: 10px;
}
/* 線性漸層 */
.gradient {
width: 120px;
height: 100px;
background-image: linear-gradient(to right, red, yellow);
/* 從左到右紅→黃 */
margin-bottom: 10px;
}
/* 重複圖片 */
.repeat {
width: 120px;
height: 100px;
background-image: url("https://avatars.githubusercontent.com/u/108336252?s=280&v=40");
background-repeat: repeat; /* 重複平鋪 */
background-size: 50px 50px; /* 每個圖的大小 */
background-position: left top; /* 從左上角開始平鋪 */
margin-bottom: 10px;
}
/* 調整大小 & 位置 */
.size-position {
width: 120px;
height: 100px;
background-image: url("https://avatars.githubusercontent.com/u/108336252?s=280&v=4");
background-size: 50px 50px; /* 設定圖片大小 */
background-position: right bottom; /* 放在右下角 */
background-repeat: no-repeat;
}
<div class="color">背景顏色</div>
<div class="image">背景圖片</div>
<div class="gradient">線性漸層</div>
<div class="repeat">重複圖片</div>
<div class="size-position">大小 & 位置</div>/* inline:行內元素,不可設定長寬 */
.inline {
display: inline;
background-color: lightblue;
margin: 5px;
padding: 5px;
}
/* block:區塊元素,可設定長寬,占滿一整行 */
.block {
display: block;
width: 150px;
height: 50px;
background-color: lightgreen;
margin: 5px 0;
text-align: center;
line-height: 50px; /* 垂直置中 */
}
/* inline-block:行內區塊元素,可設定長寬,水平排列 */
.inline-block {
display: inline-block;
width: 150px;
height: 50px;
background-color: lightcoral;
margin: 5px;
text-align: center;
line-height: 50px;
}
/* flex:彈性盒子,子元素會自動排列 */
.flex {
display: flex;
gap: 10px; /* 子元素間距 */
}
.flex > div {
width: 100px;
height: 50px;
background-color: lightyellow;
text-align: center;
line-height: 50px;
}
<h2>inline</h2>
<span class="inline">元素1</span>
<span class="inline">元素2</span>
<span class="inline">元素3</span>
<h2>block</h2>
<div class="block">元素1</div>
<div class="block">元素2</div>
<div class="block">元素3</div>
<h2>inline-block</h2>
<div class="inline-block">元素1</div>
<div class="inline-block">元素2</div>
<div class="inline-block">元素3</div>
<h2>flex</h2>
<div class="flex">
<div>元素1</div>
<div>元素2</div>
<div>元素3</div>
</div>
/* inline:行內元素,不可設定長寬 */
.inline {
display: inline;
background-color: lightblue;
margin: 5px;
padding: 5px;
}
/* block:區塊元素,可設定長寬,占滿一整行 */
.block {
display: block;
width: 150px;
height: 50px;
background-color: lightgreen;
margin: 5px 0;
text-align: center;
line-height: 50px; /* 垂直置中 */
}
/* inline-block:行內區塊元素,可設定長寬,水平排列 */
.inline-block {
display: inline-block;
width: 150px;
height: 50px;
background-color: lightcoral;
margin: 5px;
text-align: center;
line-height: 50px;
}
/* flex:彈性盒子,子元素會自動排列 */
.flex {
display: flex;
gap: 10px; /* 子元素間距 */
}
.flex > div {
width: 100px;
height: 50px;
background-color: lightyellow;
text-align: center;
line-height: 50px;
}
<h2>inline</h2>
<span class="inline">元素1</span>
<span class="inline">元素2</span>
<span class="inline">元素3</span>
<h2>block</h2>
<div class="block">元素1</div>
<div class="block">元素2</div>
<div class="block">元素3</div>
<h2>inline-block</h2>
<div class="inline-block">元素1</div>
<div class="inline-block">元素2</div>
<div class="inline-block">元素3</div>
<h2>flex</h2>
<div class="flex">
<div>元素1</div>
<div>元素2</div>
<div>元素3</div>
</div>
/* inline:行內元素,不可設定長寬 */
.inline {
display: inline;
background-color: lightblue;
margin: 5px;
padding: 5px;
}
/* block:區塊元素,可設定長寬,占滿一整行 */
.block {
display: block;
width: 150px;
height: 50px;
background-color: lightgreen;
margin: 5px 0;
text-align: center;
line-height: 50px; /* 垂直置中 */
}
/* inline-block:行內區塊元素,可設定長寬,水平排列 */
.inline-block {
display: inline-block;
width: 150px;
height: 50px;
background-color: lightcoral;
margin: 5px;
text-align: center;
line-height: 50px;
}
/* flex:彈性盒子,子元素會自動排列 */
.flex {
display: flex;
gap: 10px; /* 子元素間距 */
}
.flex > div {
width: 100px;
height: 50px;
background-color: lightyellow;
text-align: center;
line-height: 50px;
}
<h2>inline</h2>
<span class="inline">元素1</span>
<span class="inline">元素2</span>
<span class="inline">元素3</span>
<h2>block</h2>
<div class="block">元素1</div>
<div class="block">元素2</div>
<div class="block">元素3</div>
<h2>inline-block</h2>
<div class="inline-block">元素1</div>
<div class="inline-block">元素2</div>
<div class="inline-block">元素3</div>
<h2>flex</h2>
<div class="flex">
<div>元素1</div>
<div>元素2</div>
<div>元素3</div>
</div>
/* inline:行內元素,不可設定長寬 */
.inline {
display: inline;
background-color: lightblue;
margin: 5px;
padding: 5px;
}
/* block:區塊元素,可設定長寬,占滿一整行 */
.block {
display: block;
width: 150px;
height: 50px;
background-color: lightgreen;
margin: 5px 0;
text-align: center;
line-height: 50px; /* 垂直置中 */
}
/* inline-block:行內區塊元素,可設定長寬,水平排列 */
.inline-block {
display: inline-block;
width: 150px;
height: 50px;
background-color: lightcoral;
margin: 5px;
text-align: center;
line-height: 50px;
}
/* flex:彈性盒子,子元素會自動排列 */
.flex {
display: flex;
gap: 10px; /* 子元素間距 */
}
.flex > div {
width: 100px;
height: 50px;
background-color: lightyellow;
text-align: center;
line-height: 50px;
}
<h2>inline</h2>
<span class="inline">元素1</span>
<span class="inline">元素2</span>
<span class="inline">元素3</span>
<h2>block</h2>
<div class="block">元素1</div>
<div class="block">元素2</div>
<div class="block">元素3</div>
<h2>inline-block</h2>
<div class="inline-block">元素1</div>
<div class="inline-block">元素2</div>
<div class="inline-block">元素3</div>
<h2>flex</h2>
<div class="flex">
<div>元素1</div>
<div>元素2</div>
<div>元素3</div>
</div>
GitHub
這是寫完的那一坨
出現在電腦桌面的樣子
這可能是點開的樣子
這是在vscode
按下go live的樣子
:欸有網址欸
是不是有網址就可以開了
有看過前面仙貝芝士就不會說出這種話了
滑到最下面按下
把檔案丟上去
要再新增檔案按這裡
By yiling
114-1 北資中午小社 結束啦~~