v0.41 - by 晴☆
網路上的頁面
就是一個呈現資料給使用者看的介面
因為不可能把資料直接砸給使用者,那沒有人看得懂
[
[
1687148361470,
"這裡可以點進來看",
"# 這裡可以點進來看\n測試一下公告系統的 Markdown 吧~\n\n**粗體字**\n\n`Codeblock`\n\n[Google 連結](https://google.com/)"
],
[
1687156229013,
"公告系統測試",
"# 公告系統測試\n好耶,現在可以**從前端**發公告了!\n\n||但別問我是怎麼寫的 :)||"
],
[
1687158587116,
"AaW 問我是怎麼寫的",
"# AaW 問我是怎麼寫的\r\n但我不想說 哈哈\r\n\r\n放個 Spoiler: ||公告系統其實就是存一個 JSON 檔案而已啦||"
],
[
1687159332173,
"我試試看大的 Codeblock 效果如何",
"# 我試試看大的 Codeblock 效果如何\r\n\r\n```\r\n// import module\r\nconst express = require(\"express\");\r\n\r\n// create an express app\r\nvar app = express();\r\n\r\n// GET method route\r\napp.get(\"/\", (req, res) => {\r\n res.send(\"GET request to the homepage\");\r\n});\r\n\r\n// POST method route\r\napp.post(\"/\", (req, res) => {\r\n res.send(\"POST request to the homepage\");\r\n});\r\n\r\n// listion port 80 (http)\r\napp.listen(80);\r\n```"
],
[
1687160438498,
"Markdown 有點複雜啊",
"# Markdown 有點複雜啊\r\n\r\n因為 URL Encode 的縮排似乎會爛掉\r\n\r\n不過沒差啦 不要用需要縮排的東西就好\r\n\r\n之後再想有沒有更好的做法"
],
[
1687253865816,
"96 是一個數字",
"# 96 是一個數字\r\n\r\n我相信有寫學術上機考的人都知道這是什麼\r\n\r\n但……\r\n\r\n我發這個文幹嘛?\r\n\r\n其實只是||想要測試手機發文啦|| :D"
],
[
1688555310525,
"123",
"# 123\n聽說明天是茶會總籌欸\r\n\r\n但我簡報還沒做好\r\n\r\n── 晴☆"
],
[
1688557042348,
"空格",
"# 空格\n話說現在標題會自己加上去了!\r\n\r\n嗯,所以有沒有辦法不要去掉頭尾的空格啊?\r\n\r\n不然這樣:\r\n\r\n```\r\nint main() {\r\n cout << \"cout\\n\";\r\n}\r\n```\r\n\r\n會爛掉欸"
],
[
1688557161141,
"哇他是好的",
"# 哇他是好的\n好耶\r\n\r\n空格沒跑掉!\r\n\r\n因為我用的是現成的 Markdown Render\r\n\r\n但是框框跑掉了,好醜\r\n\r\n而且我覺得 Spoiler 會爛掉\r\n\r\n||測試||"
],
[
1688558358240,
"Bruh",
"# Bruh\n因為 Spoiler 跑掉不太開心\r\n\r\n所以我還是手刻好了\r\n\r\n||沒問題吧||\r\n\r\n而且 Codeblock 現在是好的了\r\n\r\n```\r\n(async () => {\r\n console.log(\"Hello world!\");\r\n})();\r\n```"
],
[
1688558417824,
"List",
"# List\n蛤 你說 List\r\n\r\n那種東西真的會用到嗎\r\n\r\n1. 可能會\r\n2. 應該吧\r\n3. 我好像正在用"
],
[
1688560152643,
"好欸終於有第二頁了",
"# 好欸終於有第二頁了\n我可以來抓 Bug 囉"
],
[
1688560875386,
"2023 建北電資聯合社展《Code Apocalypse》",
"# 2023 建北電資聯合社展《Code Apocalypse》\n建北電資聯合社展即將盛大舉辦嘍~\r\n\r\n來看展覽不需要花錢喔!\r\n\r\n現場還會有小活動與摸彩環節\r\n\r\n當天只要完成小任務就能參加摸彩\r\n\r\n有機會獲得精美小禮物喔~\r\n\r\n(偷偷說在我們社展ig主頁有個神秘表單據說填完可以多拿一張摸彩券喔)\r\n\r\n-\r\n\r\n活動時間:6/3 (六) 10:00~16:00 ( 12:00中場休息1小時 )\r\n\r\n活動地點:建國中學資源大樓5F\r\n\r\n主辦單位:**建中電研第42屆 北一資研第36屆**\r\n\r\n社群帳號:[code_apocalypse_2023](https://www.instagram.com/code_apocalypse_2023/)\r\n\r\n執秘|208 張存逸|二溫蘇怡恩"
],
[
1688627300693,
"我覺得茶會總籌沒料啊",
"# 我覺得茶會總籌沒料啊\n我到底去做什麼?\r\n\r\n傳染 A 流給大家嗎?"
]
]就是一個呈現資料給使用者看的介面
因為不可能把資料直接砸給使用者,那沒有人看得懂
[
[
1687148361470,
"這裡可以點進來看",
"# 這裡可以點進來看\n測試一下公告系統的 Markdown 吧~\n\n**粗體字**\n\n`Codeblock`\n\n[Google 連結](https://google.com/)"
],
[
1687156229013,
"公告系統測試",
"# 公告系統測試\n好耶,現在可以**從前端**發公告了!\n\n||但別問我是怎麼寫的 :)||"
],
[
1687158587116,
"AaW 問我是怎麼寫的",
"# AaW 問我是怎麼寫的\r\n但我不想說 哈哈\r\n\r\n放個 Spoiler: ||公告系統其實就是存一個 JSON 檔案而已啦||"
],
[
1687159332173,
"我試試看大的 Codeblock 效果如何",
"# 我試試看大的 Codeblock 效果如何\r\n\r\n```\r\n// import module\r\nconst express = require(\"express\");\r\n\r\n// create an express app\r\nvar app = express();\r\n\r\n// GET method route\r\napp.get(\"/\", (req, res) => {\r\n res.send(\"GET request to the homepage\");\r\n});\r\n\r\n// POST method route\r\napp.post(\"/\", (req, res) => {\r\n res.send(\"POST request to the homepage\");\r\n});\r\n\r\n// listion port 80 (http)\r\napp.listen(80);\r\n```"
],
[
1687160438498,
"Markdown 有點複雜啊",
"# Markdown 有點複雜啊\r\n\r\n因為 URL Encode 的縮排似乎會爛掉\r\n\r\n不過沒差啦 不要用需要縮排的東西就好\r\n\r\n之後再想有沒有更好的做法"
],
[
1687253865816,
"96 是一個數字",
"# 96 是一個數字\r\n\r\n我相信有寫學術上機考的人都知道這是什麼\r\n\r\n但……\r\n\r\n我發這個文幹嘛?\r\n\r\n其實只是||想要測試手機發文啦|| :D"
],
[
1688555310525,
"123",
"# 123\n聽說明天是茶會總籌欸\r\n\r\n但我簡報還沒做好\r\n\r\n── 晴☆"
],
[
1688557042348,
"空格",
"# 空格\n話說現在標題會自己加上去了!\r\n\r\n嗯,所以有沒有辦法不要去掉頭尾的空格啊?\r\n\r\n不然這樣:\r\n\r\n```\r\nint main() {\r\n cout << \"cout\\n\";\r\n}\r\n```\r\n\r\n會爛掉欸"
],
[
1688557161141,
"哇他是好的",
"# 哇他是好的\n好耶\r\n\r\n空格沒跑掉!\r\n\r\n因為我用的是現成的 Markdown Render\r\n\r\n但是框框跑掉了,好醜\r\n\r\n而且我覺得 Spoiler 會爛掉\r\n\r\n||測試||"
],
[
1688558358240,
"Bruh",
"# Bruh\n因為 Spoiler 跑掉不太開心\r\n\r\n所以我還是手刻好了\r\n\r\n||沒問題吧||\r\n\r\n而且 Codeblock 現在是好的了\r\n\r\n```\r\n(async () => {\r\n console.log(\"Hello world!\");\r\n})();\r\n```"
],
[
1688558417824,
"List",
"# List\n蛤 你說 List\r\n\r\n那種東西真的會用到嗎\r\n\r\n1. 可能會\r\n2. 應該吧\r\n3. 我好像正在用"
],
[
1688560152643,
"好欸終於有第二頁了",
"# 好欸終於有第二頁了\n我可以來抓 Bug 囉"
],
[
1688560875386,
"2023 建北電資聯合社展《Code Apocalypse》",
"# 2023 建北電資聯合社展《Code Apocalypse》\n建北電資聯合社展即將盛大舉辦嘍~\r\n\r\n來看展覽不需要花錢喔!\r\n\r\n現場還會有小活動與摸彩環節\r\n\r\n當天只要完成小任務就能參加摸彩\r\n\r\n有機會獲得精美小禮物喔~\r\n\r\n(偷偷說在我們社展ig主頁有個神秘表單據說填完可以多拿一張摸彩券喔)\r\n\r\n-\r\n\r\n活動時間:6/3 (六) 10:00~16:00 ( 12:00中場休息1小時 )\r\n\r\n活動地點:建國中學資源大樓5F\r\n\r\n主辦單位:**建中電研第42屆 北一資研第36屆**\r\n\r\n社群帳號:[code_apocalypse_2023](https://www.instagram.com/code_apocalypse_2023/)\r\n\r\n執秘|208 張存逸|二溫蘇怡恩"
],
[
1688627300693,
"我覺得茶會總籌沒料啊",
"# 我覺得茶會總籌沒料啊\n我到底去做什麼?\r\n\r\n傳染 A 流給大家嗎?"
]
]那我們要怎麼做?
排版!
我們用個動畫演示一下
2023-07-05 2023 建北電資聯合社展《Code Apocalypse》
公告
關於
幹部
課程
活動
ISCOJ
歷屆社網
2023-07-05 2023 建北電資聯合社展《Code Apocalypse》
用程式寫
會教:
使用 html, css & js 製作一個可以自己打開的前端網頁
html
css
js
檔案之間的連結
不會教:
架伺服器
靜態檔案路徑
伺服器後端處理 & database
「超文本標記語言」
以不同標籤撰寫
用來表示網頁中有不同元件
<div class="box" onclick="fun()">
<a>Click me!</a>
<br>
<a>Or me!</a>
</div>.box {
padding: 20px;
font-size: 64px;
background-color: lightblue;
}又稱作 ECMA Script
是個簡單易學的程式語言
可以增加網頁的互動
function fun() {
alert("Hello!");
alert("Nice to meet you!");
}我信賴 VS Code
首先要有一個資料夾來放東西
然後打開 VS Code
按左上角的「檔案」
首先要有一個資料夾來放東西
然後打開 VS Code
按左上角的「檔案」
按「開啟資料夾」然後開啟你要用的工作資料夾
然後打開 VS Code
按左上角的「檔案」
按「開啟資料夾」然後開啟你要用的工作資料夾
建立 html 檔案
然後就可以開始寫了
但我什麼都還沒教啊
馬上來教
標記一下哪邊有什麼物件
就是很多標記
<element>
</element>
<inner-element>
<element-2>
</element-2>
文字內容
</inner-element>
文字內容 2
就是很多標記
<element>
</element>
<inner-element>
<element-2>
</element-2>
文字內容
</inner-element>
文字內容 2
文字內容
文字內容 2
其實 element 有種類之分
<div>
123
</div><a>123</a><button>
Click me!
</button>區塊
文字
按鈕
還有一堆其他的,等等有一個章節專門講
先在 html 檔案中寫下這串:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
</body>
</html>先在 html 檔案中寫下這串:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
</body>
</html><html> - 整個 HTML
<head> - 頭,前置處理區
<body> - 身體,真正會顯示的區塊
<html> - 整個 HTML
<head> - 頭,前置處理區
<body> - 身體,真正會顯示的區塊
<html> - 整個 HTML
<body> - 身體,真正會顯示的區塊
我們回到 code 來看
直接加上文字!
<!DOCTYPE html>
<html>
<head>
</head>
<body>
123
</body>
</html>回到檔案總管
點兩下用 Chrome 把它打開就可以了
回到檔案總管
點兩下用 Chrome 把它打開就可以了
好欸你會寫網頁了!
改變物件的樣式
先
看看
完全沒有
樣式的網頁長什麼樣子:
再
已經加上
再
看看
已經加上
樣式的網頁長什麼樣子:
先
完全沒有
用 CSS 語言!
基本上就是 選擇物件 → 修改它們的屬性值
蛤?
舉個例子:
晴☆ {
身高: 200cm;
體重: 20kg;
}這樣就修改好了
我就會變成 200 公分高、20 公斤重 = =
可以寫在一個 <style> 裡面
<style>
晴☆ {
智商: -200;
}
</style>或者使用連結來引入其他 .css 檔案
<link rel="stylesheet" type="text/css" href="./神奇檔案.css">新增一個資料夾
然後對它按又鍵新增一個檔案,命名為 style.css
懶得放截圖了
現在它應該會長這樣
新增一個資料夾
然後對它按又鍵新增一個檔案,命名為 style.css
懶得放截圖了
現在它應該會長這樣
先不管它 回去 index.html 我要解釋一下如何辨別 html 中的物件
Tag Name 就是種類
<div> </div>這個物件的 tag name 就是 div
ID 就是 ID,不能有重複的
<div id="123"> </div>這個物件的 id 就是 123
Class 就是所屬的類別,一個物件可以有很多 Class
<div class="happy tree"> </div>這個物件的 class 就是 happy 和 tree
選取所有相同 tag name 的物件
div {
}<div>選取在這個 class 裡面的所有物件
.my-class {
}<div class="my-class other-class">選取指定 ID 的物件
#my-id {
}<div id="my-id">全選
* {
}優先順序: \(\text{ID} > \text{Class} > \text{Type} > *\)
選取所有相同 tag name 的物件
div {
}<div>選取在這個 class 裡面的所有物件
.my-class {
}<div class="my-class other-class">選取指定 ID 的物件
#my-id {
}<div id="my-id">全選
* {
}優先順序: \(\text{ID} > \text{Class} > \text{Tag} > *\)
A 或 B:用逗號分隔
div, .my-class {
}<div>被包在 A 裡面的 B:用 > 分隔
.box > .banana {
}<div class="box"> <div class="banana"> </div> </div>
A 且 B:接在一起
div.red.circle {
}<div class="circle red">
<button class="my-class">首先我們把 html 改成這樣:
<body>
<div id="my-first-div" class="cool hot">
about this element:
<br>
type = div
<br>
id = my-first-div
<br>
class = cool & hot
</div>
<br><br><br>
<div id="my-second-div" class="hot">
about this element:
<br>
type = div
<br>
id = my-second-div
<br>
class = hot
</div>
</body>應該會長這樣:
按 F12,點選元素就可以看到它的位置了
加上這行
<link rel="stylesheet" type="text/css" href="./static/style.css">引入 css 是前置處理的一部分
好像不應該顯示出來
放在 <head> 裡面!
<head>
<link rel="stylesheet" type="text/css" href="./static/style.css">
</head>在 style.css 中寫上這些:
div {
font-size: 32px;
}
.hot {
border: 5px solid red;
}
.cool {
background-color: lightblue;
}把在 hot 這個 class 裡面的物件 加上紅色邊框
把在 cool 這個 class 裡面的物件 變成淺藍色背景
把 div 中的文字放大
它理論上會變成這樣:
這就是 css 的力量!
但這個範例感覺有點醜欸
讓網頁能夠與使用者互動
這好像是題外話
如果學得好,JavaScript 也可以向 Python 一樣,有一大堆功能
我們想要讓一個按鈕可以互動
那就會用到 JS 了
先寫 html:
<body>
<button>按我按我</button>
</body>現在按了還是沒用
我們想要讓一個按鈕可以互動
那就會用到 JS 了
先寫 html:
<body>
<button>按我按我</button>
</body>現在按了還是沒用
我們要讓它在被按得時候做點事 那就會用到 onclick 事件
<element onclick="/* JavaScript 程式碼內容 */"> </element>這個事件會在物件被點擊時觸發 並執行 JavaScript 程式碼
我們想要讓一個按鈕可以互動
那就會用到 JS 了
先寫 html:
<body>
<button>按我按我</button>
</body>我們要讓它在被按得時候做點事 那就會用到 onclick 事件
<element onclick="/* JavaScript 程式碼內容 */"> </element>這個事件會在物件被點擊時觸發 並執行 JavaScript 程式碼
把 onclick 加到 <button>
我們想要讓一個按鈕可以互動
那就會用到 JS 了
<body>
<button onclick="myFunction();">按我按我</button>
</body>這個事件會在物件被點擊時觸發 並執行 JavaScript 程式碼
把 onclick 加到 <button>
這樣按按鈕的時候就會呼叫 myFunction 函數!
蛤?什麼函數???
話說 JavaScript 和 CSS 一樣,可以直接寫在 HTML 中:
<script>
// some code
</script>但我們還是寫在獨立的 .js 檔案裡比較好
可以這樣引入:
<script src="./神奇檔案.js"> </script>加上 .js 檔:
從 html 那邊引入:
<head>
<link rel=stylesheet type="text/css" href="./static/style.css">
<script src="./static/script.js"> </script>
</head>定義一個叫做 myFunction 的函數
function myFunction() {
alert("你好");
alert("很高興認識你");
}它的內容就會呼叫 alert 函數 (警示,也就是彈出對話框) 依序顯示「你好」、「很高興認識你」
大概長這樣:
這大概就是把 JS 應用在 HTML 中的原理了!
但其實我喜歡全部都用 <div>
<div>
就是一個好用的方塊,可以互相排列、包來包去之類的
會換行
什麼意思?
<div> </div>
<div> </div>
<div> </div><span>
就是一個好用的方塊,可以互相排列、包來包去之類的
不會換行
<span> </span>
<span> </span>
<span> </span>但之後你就會發現,要不要換行其實可以自己指定
<button>
一個原始的、別人幫你寫好樣式的按鈕
寫起來很簡單
長得大概像這樣:
但之後你就會發現,只要 CSS & JS 寫得好,<div> 也可以當按紐
<button>
不要按我,按了也沒用
</button><input>
各式各樣的輸入,比較複雜一些
<input />你可能覺得那個 / 出現在很奇怪的地方欸 因為它是少數不用對應 </> 的 Blocks 之一
預設是輸入文字
但目前也沒什麼用
<input>
各式各樣的輸入,比較複雜一些
<input />你可能覺得那個 / 出現在很奇怪的地方欸 因為它是少數不用對應 </> 的 Blocks 之一
預設是輸入文字
但目前也沒什麼用
<input type="button" value="文字" />和 <button> 差在哪?
也可以是按紐
可以搞後端 我沒有要教啊
<input>
各式各樣的輸入,比較複雜一些
但目前也沒什麼用
<input type="button" value="文字" />和 <button> 差在哪?
也可以是按紐
可以搞後端 我沒有要教啊
還有一堆:
type="checkbox"
type="date"
<input>
各式各樣的輸入,比較複雜一些
但目前也沒什麼用
<input type="button" value="文字" />和 <button> 差在哪?
也可以是按紐
可以搞後端 我沒有要教啊
還有一堆:
type="checkbox"
type="date"
type="color"
<input>
各式各樣的輸入,比較複雜一些
但目前也沒什麼用
<input type="button" value="文字" />和 <button> 差在哪?
也可以是按紐
可以搞後端 我沒有要教啊
還有一堆:
type="date"
type="color"
type="file"
<input>
各式各樣的輸入,比較複雜一些
但目前也沒什麼用
<input type="button" value="文字" />和 <button> 差在哪?
也可以是按紐
可以搞後端 我沒有要教啊
還有一堆:
type="color"
type="file"
不舉例了,因為大概不會用到
<a>
用來包文字的,預設不會有任何改變
123<a>123</a><a>
用來包文字的,預設不會有任何改變
123<a>123</a>但是可以用來放連結!
<a href="https://ckefgisc.org/">建北電資社網</a>"href" 是 hyper reference,也就是超連結
<h*>
標題,有 <h1> ~ <h6> 之分
<h1> 最大,<h6> 最小
但基本上到 <h4> 再更小就沒什麼意義了,平常也不會去用
<h1>1 號標題</h1>
<h2>2 號標題</h2>
<h3>3 號標題</h3><b|i|u|s>
粗體 <b>old
斜體 <i>talic
底線 <u>nderline
刪除線 <s>trikethrough
我們其實也可以透過 CSS 改樣式來做到一樣的效果
<b>粗體</b> <i>斜體</i> <u>底線</u> <s>刪除線</s>等級: 1☆;
啊吧啦吧啦吧啦