[JS-3] HTML、CSS、JavaScript 是怎麼合作的?打造一台 MacBook 一次搞懂!

更新 發佈閱讀 20 分鐘

上一篇我們使用了Copilot做出了第一個網頁,雖然只是單純的Html,但也是網頁。但我們是介紹 JavaScript的,你心裡大概有疑惑,為什麼我來學JavaScript還要學 html呢?

讀完此篇你會了解
1. 為什麼要學 Html 和 Css
2. 了解 HTML、CSS、JavaScript三者關係。

今天這篇使用做一台筆電的方式來說明一下學寫網頁一定不可不認識的網頁三劍客-HTML、CSS、JavaScript。

HTML 就像組裝 MacBook 的外殼和零件擺放位置

HTML(HyperText Markup Language,超文本標記語言)是 Web 最基本的架構。使用標籤來定義網頁內容的意義和結構。負責告訴瀏覽器:「這個頁面裡有哪些元素?這些元素的階層與位置是什麼?」

你可以想像我們在用 HTML 做什麼?

就像是在「組裝一台 MacBook」,並且標記出各個組件的位置:

<div class="macbook"> ← 整台筆電的外殼
<div class="screen"> ← 螢幕區域
<div class="camera"></div> ← 螢幕上的小黑點(攝影機)
<div class="display-content"> ← 顯示器
</div>

<div class="body"> ← 下面的機蓋
<div class="keyboard"> ← 鍵盤
<div class="key"></div> ... ← 每一顆按鍵
</div>
<div class="touchpad"></div> ← 觸控板
</div>

</div>

這邊用 <div> 標記出電腦的組件應該在哪個位置,也就是結構的部分。

  • 筆電外殼在哪裡(.macbook
  • 螢幕區( .screen)、鍵盤區(.keyboard)、觸控板(.touchpad)在什麼位置
  • ​按鍵(.key)在鍵盤(.keyboard)裡面的排列

HTML 的本質其實就像在做「內容的架構圖」,將每一塊畫面拆出來並標記清楚,哪個區域是什麼畫面、哪個地方是功能元件、元件還有什麼樣的元件。

CSS 就像 MacBook 的顏色、造型、樣式。

CSS(Cascading Style Sheets,階層式樣式表)就是這台筆電的「外觀設計師」

想像你正在看一場 Apple 發表會。

舞台燈光打下來,Tim Cook 微笑登場,說出:「This… is the best MacBook we’ve ever made.」

接著畫面一轉,拿著產品展示:銀色金屬外殼、極窄邊框、背光鍵盤,薄到可以從牛皮紙袋抽出來,每個角度都讓人驚嘆。

那種讓人「哇~好棒!」的設計,就是 CSS 負責的工作。

 <style>
.macbook { ← 描述電腦的外觀
position: relative;
transform-style: preserve-3d;
transform: rotateX(15deg) rotateY(-15deg);
width: 400px;
}
.screen { ← 螢幕的大小顏色
width: 100%;
height: 250px;
background: #000;
border-radius: 12px 12px 0 0;
box-shadow: 0 10px 30px rgba(0,0,0,0.4);
position: relative;
z-index: 2;
}
.camera { ← 攝影機的樣子
position: absolute;
top: 6px;
left: 50%;
transform: translateX(-50%);
width: 6px;
height: 6px;
background: #222;
border-radius: 50%;
z-index: 3;
}
.display-content { ← 顯示器內容
position: absolute;
top: 50px;
left: 50%;
transform: translateX(-50%);
width: 240px;
border-radius: 8px;
background: #1e1e1e;
box-shadow: 0 5px 10px rgba(0,0,0,0.3);
font-family: monospace;
}
.keyboard { ← 鍵盤
width: 90%;
margin: 20px auto 0 auto;
display: grid;
grid-template-columns: repeat(10, 1fr);
gap: 5px;
padding-top: 16px;
}
.key { ← 按鍵
background: #333;
border: 1px solid #555;
height: 20px;
border-radius: 3px;
box-shadow: 0 5px 4px rgba(0, 0, 0, 0.5);
}
.touchpad { ← 觸控板
width: 90px;
height: 56px;
background: #999;
border-radius: 4px;
margin: 24px auto 0;
}
</style>

CSS 的寫法如上,在 html 中使用 <style> 標籤裡面使用 css 的語法。對應 HTML .macbook 用來描述 Mackbook的機殼外觀,.screen 是來描述螢幕大小,.keyboard.touchpad 分別對應鍵盤和觸控板。

JavaScrpit 就像讓 MacBook「動起來」的智慧功能

我們現在電腦組裝(HTML)好了,外觀設計(CSS)也都做好了,現在只剩下操作軟體和系統這樣電腦才會動起了。這個部分就是 JavaScript的工作了,JavaScript 就像是筆電裡的「作業系統或軟體」

 <script>
const output = document.getElementById("output");
output.textContent = "$ echo \"Hello Tom\"";
</script>

Javascript 的寫法如上,在 html 中使用 <script> 標籤裡面寫 JS的語法就可以動作了。上面的意思寄售,在螢幕中間的終端機output的地方印出 “Hello Tom”。就像我們前面的範例一樣。

總結

我們透過「打造一台虛擬 MacBook」的例子,我們更清楚認識了 HTML、CSS 和 JavaScript 的分工與關係:


技術 比喻角色 功能說明

HTML 電腦的架構 負責建立「結構」,決定每個元件的擺放與階層

CSS 外觀設計 負責畫面「外觀」,調整顏色、邊框、陰影與細節風格

JavaScript 作業系統與互動 讓畫面能「動起來」,控制行為、邏輯、互動與功能


相信通過今天的範例說明,大家就更了解 HTML,CSS,JavaScript三者的關係了吧!下一篇我們會稍微介紹一下 CSS的寫法,讓大家識做一下。

關注Tom,每天十分鐘,你也學得會寫程式!

https://vocus.cc/article/6811992afd89780001f79f46

範例程式碼

程式碼範例如下,執行起來如下 codepen跑出來的樣子,可以看到就像一台 macbook。大家可以自己修改玩玩看。


<!DOCTYPE html>
<html lang="zh-Hant">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CSS MacBook</title>
<style>
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}

body {
background: #eee;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
perspective: 1000px;
font-family: sans-serif;
}

.macbook {
position: relative;
transform-style: preserve-3d;
transform: rotateX(15deg) rotateY(-15deg);
width: 400px;
}

.screen {
width: 100%;
height: 250px;
background: #000;
border-radius: 12px 12px 0 0;
box-shadow: 0 10px 30px rgba(0,0,0,0.4);
position: relative;
z-index: 2;
}

.camera {
position: absolute;
top: 6px;
left: 50%;
transform: translateX(-50%);
width: 6px;
height: 6px;
background: #222;
border-radius: 50%;
z-index: 3;
}

.logo {
position: absolute;
top: 12px;
left: 50%;
transform: translateX(-50%);
color: white;
font-size: 24px;
font-weight: bold;
opacity: 0.5;
z-index: 4;
}

.display-content {
position: absolute;
top: 50px;
left: 50%;
transform: translateX(-50%);
width: 240px;
border-radius: 8px;
background: #1e1e1e;
box-shadow: 0 5px 10px rgba(0,0,0,0.3);
font-family: monospace;
}

.window-header {
height: 24px;
background: #2e2e2e;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
display: flex;
align-items: center;
padding: 0 8px;
gap: 6px;
}

.dot {
width: 10px;
height: 10px;
border-radius: 50%;
}

.red { background: #ff5f56; }
.yellow { background: #ffbd2e; }
.green { background: #27c93f; }

.window-body {
color: #00ff00;
padding: 10px;
font-size: 14px;
}

.body {
width: 100%;
height: 210px;
background: linear-gradient(to bottom, #888, #666);
position: absolute;
top: 100%;
left: 0;
transform: rotateX(65deg);
transform-origin: top;
border-radius: 0 0 12px 12px;
box-shadow: 0 20px 50px rgba(0,0,0,0.35);
z-index: 1;
}

.keyboard {
width: 90%;
margin: 20px auto 0 auto;
display: grid;
grid-template-columns: repeat(10, 1fr);
gap: 5px;
padding-top: 16px;
}

.key {
background: #333;
border: 1px solid #555;
height: 20px;
border-radius: 3px;
box-shadow: 0 5px 4px rgba(0, 0, 0, 0.5);
}

.touchpad {
width: 90px;
height: 56px;
background: #999;
border-radius: 4px;
margin: 24px auto 0;
}
</style>
</head>
<body>
<div class="macbook">
<div class="screen">
<div class="camera"></div>
<div class="display-content">
<div class="window-header">
<div class="dot red"></div>
<div class="dot yellow"></div>
<div class="dot green"></div>
</div>
<div class="window-body" id="output">
<!-- JS will write here -->
</div>
</div>
</div>
<div class="body">
<div class="keyboard">
<div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div>
<div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div>
<div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div>
<div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div>
<div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div><div class="key"></div>
</div>
<div class="touchpad"></div>
</div>
</div>

<script>
const output = document.getElementById("output");
output.textContent = "$ echo \"Hello Tom\"";
</script>
</body>
</html>


留言
avatar-img
湯編驛-湯姆實驗室
40會員
82內容數
這邊會放一些我自己的分享內容,實驗測試還有做的MVP介紹
2025/05/09
學習程式設計不再困難!本文提供一份循序漸進的 JavaScript 教學,每天只需 10 分鐘,就能從基礎語法到專案實作,逐步學習網頁開發,包含 HTML、CSS、JavaScript、DOM 操作、Canvas 等,並以 Road Map 呈現學習進度。即使零基礎也能輕鬆入門,開啟程式設計之路。
Thumbnail
2025/05/09
學習程式設計不再困難!本文提供一份循序漸進的 JavaScript 教學,每天只需 10 分鐘,就能從基礎語法到專案實作,逐步學習網頁開發,包含 HTML、CSS、JavaScript、DOM 操作、Canvas 等,並以 Road Map 呈現學習進度。即使零基礎也能輕鬆入門,開啟程式設計之路。
Thumbnail
2025/05/07
這篇文章將指導讀者使用Copilot建立他們的第一個網頁。文章涵蓋了網頁的基本組成元素(HTML、CSS、JavaScript),並逐步說明如何使用Copilot產生HTML檔案、安裝Live Server插件執行程式碼,以及修改網頁內容。
Thumbnail
2025/05/07
這篇文章將指導讀者使用Copilot建立他們的第一個網頁。文章涵蓋了網頁的基本組成元素(HTML、CSS、JavaScript),並逐步說明如何使用Copilot產生HTML檔案、安裝Live Server插件執行程式碼,以及修改網頁內容。
Thumbnail
2025/04/29
這篇文章提供新手一個零摩擦的學習寫程式的入門方法,使用GitHub Codespaces線上編輯器,無需設定複雜的本地開發環境,即可快速編寫和執行第一個程式碼。文章詳細介紹了Codespaces的使用方法、介面功能,以及如何編寫和執行一個簡單的 "Hello World!" 程式。
Thumbnail
2025/04/29
這篇文章提供新手一個零摩擦的學習寫程式的入門方法,使用GitHub Codespaces線上編輯器,無需設定複雜的本地開發環境,即可快速編寫和執行第一個程式碼。文章詳細介紹了Codespaces的使用方法、介面功能,以及如何編寫和執行一個簡單的 "Hello World!" 程式。
Thumbnail
看更多
你可能也想看
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
在這個章節中,我們介紹了HTML的基本概念,包括其作為結構化標記語言的特性、應用領域,以及主要使用者。這些知識為後續的深入學習和實踐奠定了基礎,幫助讀者了解HTML在現代網頁開發中的重要性。
Thumbnail
在這個章節中,我們介紹了HTML的基本概念,包括其作為結構化標記語言的特性、應用領域,以及主要使用者。這些知識為後續的深入學習和實踐奠定了基礎,幫助讀者了解HTML在現代網頁開發中的重要性。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
JavaScript (簡稱 JS) 是具有一級函數的輕量級、直譯式或即時編譯的程式語言。它因為用作網頁的腳本語言而大為知名,但也用於許多非瀏覽器的環境,像是 Node.js 等。由於 JavaScript 語法上的一些缺點,軟體工程師們又設計出了 CoffeeScript、TypeScript 和
Thumbnail
JavaScript (簡稱 JS) 是具有一級函數的輕量級、直譯式或即時編譯的程式語言。它因為用作網頁的腳本語言而大為知名,但也用於許多非瀏覽器的環境,像是 Node.js 等。由於 JavaScript 語法上的一些缺點,軟體工程師們又設計出了 CoffeeScript、TypeScript 和
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News