HTML 基礎
HTML(HyperText Markup Language)是網頁的骨架。它負責定義網頁的內容和結構,例如標題、段落、圖片和連結。HTML 透過標籤(tags)來組織內容。
基本的 HTML 內容結構
<!-- 網頁內容 -->
<h1>哈囉,世界!</h1>
<p>這是一個簡單的段落。</p>
<div>
<p>使用 <div> 來分組內容。</p>
</div>
基本文字與連結標籤
<h1>到<h6>:標題標籤,定義不同層級的標題。<p>:段落標籤。<a>:超連結標籤,用於連結到其他頁面,`href` 屬性定義目標 URL。<strong>或<b>:加粗文字,強調重要性。<em>或<i>:斜體文字,用於強調或表達不同語氣。
圖片與連結
<!-- 圖片標籤:src 指定圖片來源,alt 提供替代文字 -->
<img src="https://placehold.co/400x200" alt="一個範例圖片" class="rounded-lg shadow-md">
<!-- 連結到外部網站 -->
<p class="mt-4">
點擊這裡前往
<a href="https://www.google.com" class="text-blue-600 hover:text-blue-800 underline" target="_blank">Google</a>
</p>
列表標籤
列表是組織相關項目內容的常見方式,分為無序列表(`ul`)、有序列表(`ol`)和定義列表(`dl`)。
<h4>無序列表</h4>
<ul>
<li>項目一</li>
<li>項目二</li>
</ul>
<h4>有序列表</h4>
<ol>
<li>第一個項目</li>
<li>第二個項目</li>
</ol>
區塊與行內元素
div 是一個區塊元素,通常用來分組內容並建立佈局。span 則是一個行內元素,用來標記或樣式化一小段文字。
<!-- 區塊元素範例 -->
<div class="p-4 bg-gray-100 rounded-md">
<h4>這個是分組的區塊</h4>
<p>div 會佔據整行的寬度。</p>
</div>
<!-- 行內元素範例 -->
<p class="mt-4">
這句話中的
<span class="bg-yellow-200 font-bold">一部分文字</span>
使用了 span 標籤。
</p>
表格標籤
表格用於呈現有結構的二維數據。
<table class="w-full border-collapse">
<thead class="bg-gray-200">
<tr>
<th class="p-2 border">標題一</th>
<th class="p-2 border">標題二</th>
</tr>
</thead>
<tbody>
<tr>
<td class="p-2 border">數據 A</td>
<td class="p-2 border">數據 B</td>
</tr>
<tr>
<td class="p-2 border">數據 C</td>
<td class="p-2 border">數據 D</td>
</tr>
</tbody>
</table>
表單與輸入標籤
表單是收集使用者輸入的關鍵,例如註冊帳號或提交資訊。
<form>
<div class="mb-4">
<label for="username">使用者名稱:</label>
<input type="text" id="username" name="username" class="border p-2 rounded-md w-full">
</div>
<div class="mb-4">
<label for="color">選擇顏色:</label>
<select id="color" name="color" class="border p-2 rounded-md w-full">
<option value="red">紅色</option>
<option value="blue">藍色</option>
<option value="green">綠色</option>
</select>
</div>
<button type="submit" class="bg-blue-500 text-white font-bold py-2 px-4 rounded-full">
提交
</button>
</form>
HTML 進階功能
除了基礎標籤,HTML5 也引入了許多進階功能,幫助你建立更具結構性、互動性和多樣化的網頁。
語義化標籤 (Semantic Tags)
這些標籤能讓網頁結構更具意義,有利於搜尋引擎最佳化(SEO)和無障礙設計。
<!-- 網站的頁首 -->
<header>
<h1>網站標題</h1>
<nav>
<!-- 導航連結 -->
</nav>
</header>
<!-- 主要內容區塊 -->
<main>
<article>
<!-- 一篇獨立的文章內容 -->
</article>
<section>
<!-- 一個主題相關的內容區塊 -->
</section>
</main>
<!-- 側邊欄內容 -->
<aside>
<!-- 廣告、相關連結等 -->
</aside>
<!-- 網站的頁尾 -->
<footer>
<p>版權所有 © 2024</p>
</footer>
多媒體標籤 (Multimedia Tags)
HTML5 讓嵌入影音內容變得簡單,無需使用第三方插件。
<h4>嵌入影片</h4>
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
您的瀏覽器不支援影片標籤。
</video>
<h4>嵌入音訊</h4>
<audio controls>
<source src="audio.mp3" type="audio/mpeg">
您的瀏覽器不支援音訊標籤。
</audio>
表單進階
除了基本的 `input` 類型,還有多種表單元素可以收集不同類型的使用者資料。
<form class="space-y-4">
<!-- 帶有 `for` 的標籤,提升可訪問性 -->
<label for="email" class="block">電子郵件:</label>
<input type="email" id="email" name="email" class="border p-2 rounded-md w-full" placeholder="name@example.com">
<!-- 密碼輸入框 -->
<label for="password" class="block">密碼:</label>
<input type="password" id="password" name="password" class="border p-2 rounded-md w-full">
<!-- 多行文字輸入框 -->
<label for="message" class="block">留言:</label>
<textarea id="message" name="message" rows="4" class="border p-2 rounded-md w-full"></textarea>
</form>
嵌入外部內容與資料屬性
`iframe` 用於在網頁中嵌入另一個網頁;`data-*` 屬性則用於儲存自定義資料,方便 JavaScript 存取。
<h4>嵌入外部網站</h4> <iframe src="https://example.com" width="600" height="400" title="範例網站" class="border rounded-xl"></iframe> <h4>資料屬性範例</h4> <p data-user-id="12345" data-user-name="JohnDoe">這是帶有資料屬性的段落。</p>
註解與實體
HTML 註解用來在程式碼中添加備註,不會顯示在網頁上。實體則是用來顯示特殊字元,例如 `<` 或 `>`。
<!-- 這是 HTML 註解,使用者看不到 -->
<p>這是一個段落。</p>
<!-- HTML 實體範例 -->
<p>在 HTML 中,小於符號是 < ,大於符號是 > ,
而空格可以使用 來呈現。
</p>
CSS 基礎
CSS(Cascading Style Sheets)負責網頁的美化。它讓您可以控制網頁的顏色、字體、排版和佈局,將您的網頁設計得更具吸引力。
CSS 語法
CSS 規則由選擇器、屬性和值組成。
選擇器 {
屬性: 值;
屬性: 值;
}
常用的 CSS 屬性
每個 CSS 屬性都有其特定功能,讓您能精準控制網頁的視覺效果。以下是一些最常用的屬性:
color: 設定文字的顏色。background-color: 設定元素的背景顏色。font-size: 設定文字的大小。font-family: 設定字體類型(例如:宋體、黑體)。padding: 設定元素內容與邊框之間的內邊距。margin: 設定元素邊框與其他元素之間的外邊距。border: 設定元素的邊框樣式、寬度和顏色。text-align: 設定文字在元素中的水平對齊方式。display: 定義元素如何顯示(例如:區塊、行內、彈性)。
實作範例
您可以將 CSS 放在 HTML 檔案的 <head> 標籤內的 <style> 標籤裡。
<style>
h1 {
color: #2563eb;
font-family: 'Georgia', serif;
}
.highlight {
background-color: #fde68a;
padding: 5px;
border-radius: 8px;
}
</style>
<h1>這是一個藍色的標題</h1>
<p class="highlight">這個段落有黃色的背景。</p>
CSS 屬性互動調整器
試著改變下面的屬性值,觀察下方文字的即時變化。
這段文字會隨著你的調整而改變樣式!
試著組合不同的屬性來看看效果。
生成的 CSS 程式碼
生成的 HTML 程式碼
實時編輯器
在下方編輯器中輸入 HTML 或 CSS 程式碼,然後點擊「運行」按鈕即可立即看到結果。**強烈建議先點擊「基本結構」按鈕來載入標準的 HTML 模板。**
常用的程式碼範例
這些是學生們最常使用的範例,可以直接複製到上面的編輯器中運行。
1. 帶有懸停效果的按鈕
這是一個簡單的按鈕,當你將滑鼠懸停在上面時,它的顏色會改變。
<style>
.hover-button {
background-color: #007BFF;
color: white;
padding: 10px 20px;
border: none;
border-radius: 5px;
font-size: 16px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.hover-button:hover {
background-color: #0056b3;
}
</style>
<button class="hover-button">懸停我</button>
2. 基本的卡片元件
這個範例展示了一個常見的UI卡片,包含圖片、標題和描述文字。
<style>
.card {
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
border-radius: 10px;
overflow: hidden;
width: 300px;
font-family: Arial, sans-serif;
}
.card-image {
width: 100%;
height: 200px;
object-fit: cover;
}
.card-content {
padding: 20px;
}
.card-title {
font-size: 20px;
font-weight: bold;
margin-top: 0;
}
.card-text {
font-size: 14px;
color: #555;
}
</style>
<div class="card">
<img src="https://placehold.co/400x200" alt="Placeholder image" class="card-image">
<div class="card-content">
<h3 class="card-title">卡片標題</h3>
<p class="card-text">這是一段描述文字,展示了卡片的內容。</p>
</div>
</div>
3. 水平導航列
這是一個簡單的水平導航列,常用於網站的頂部,連結可以點擊。
<style>
.navbar {
background-color: #333;
overflow: hidden;
border-radius: 5px;
}
.navbar a {
float: left;
display: block;
color: white;
text-align: center;
padding: 14px 20px;
text-decoration: none;
transition: background-color 0.3s ease;
}
.navbar a:hover {
background-color: #575757;
}
</style>
<div class="navbar">
<a href="#home">首頁</a>
<a href="#about">關於我們</a>
<a href="#services">服務</a>
<a href="#contact">聯絡我們</a>
</div>
4. 響應式圖片庫 (使用 Grid)
這個範例展示了如何使用CSS Grid來建立一個響應式的圖片庫。
<style>
.gallery-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 15px;
padding: 10px;
}
.gallery-grid img {
width: 100%;
height: auto;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
</style>
<div class="gallery-grid">
<img src="https://placehold.co/200x200" alt="圖片 1">
<img src="https://placehold.co/200x200" alt="圖片 2">
<img src="https://placehold.co/200x200" alt="圖片 3">
<img src="https://placehold.co/200x200" alt="圖片 4">
</div>
5. 聯絡表單
這是一個樣式化的聯絡表單,包含輸入框和一個提交按鈕。
<style>
.form-container {
width: 350px;
padding: 20px;
border: 1px solid #ccc;
border-radius: 10px;
font-family: Arial, sans-serif;
}
.form-container input[type=text], .form-container textarea {
width: 95%;
padding: 10px;
margin: 8px 0;
display: block;
border: 1px solid #ccc;
border-radius: 4px;
}
.form-container input[type=submit] {
background-color: #4CAF50;
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
}
</style>
<div class="form-container">
<form action="/action_page.php">
<label for="fname">姓名</label>
<input type="text" id="fname" name="firstname" placeholder="你的名字..">
<label for="subject">訊息</label>
<textarea id="subject" name="subject" placeholder="寫下你的訊息.." style="height:100px"></textarea>
<input type="submit" value="提交">
</form>
</div>
6. 使用 Flexbox 的彈性佈局
這個範例展示了如何使用CSS Flexbox將元素排列成一列,並均勻分佈。
<style>
.flex-container {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px;
border: 1px solid #ddd;
border-radius: 8px;
gap: 10px;
}
.flex-item {
background-color: #f1f1f1;
padding: 20px;
border-radius: 5px;
text-align: center;
}
</style>
<div class="flex-container">
<div class="flex-item">項目 1</div>
<div class="flex-item">項目 2</div>
<div class="flex-item">項目 3</div>
</div>
7. 漸變背景
這個程式碼會為一個區塊添加一個美麗的從藍色到紫色的漸變背景。
<style>
.gradient-box {
width: 100%;
height: 150px;
border-radius: 10px;
background: linear-gradient(45deg, #4facfe 0%, #00f2fe 100%);
display: flex;
justify-content: center;
align-items: center;
color: white;
font-size: 24px;
font-weight: bold;
}
</style>
<div class="gradient-box">漸變背景</div>
8. 3D 轉換效果
這個範例展示了一個簡單的3D轉換,當你將滑鼠懸停在方塊上時,它會旋轉。
<style>
.transform-container {
perspective: 1000px; /* 設置透視效果 */
width: 200px;
height: 200px;
margin: 50px auto;
}
.transform-box {
width: 100%;
height: 100%;
background-color: #FF5733;
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
color: white;
font-size: 20px;
transition: transform 0.5s ease;
}
.transform-container:hover .transform-box {
transform: rotateY(180deg);
}
</style>
<div class="transform-container">
<div class="transform-box">懸停我</div>
</div>
9. 簡單的加載動畫
這個範例使用 CSS 關鍵幀動畫來創建一個循環的加載圓點。
<style>
.loader {
width: 50px;
height: 50px;
border: 5px solid #f3f3f3;
border-top: 5px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
</style>
<div class="loader"></div>
10. 懸停工具提示
當你將滑鼠懸停在文字上時,會顯示一個工具提示。
<style>
.tooltip-container {
position: relative;
display: inline-block;
border-bottom: 1px dotted black; /* 虛線 */
cursor: pointer;
}
.tooltip-text {
visibility: hidden;
width: 120px;
background-color: #555;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px 0;
position: absolute;
z-index: 1;
bottom: 125%;
left: 50%;
margin-left: -60px;
opacity: 0;
transition: opacity 0.3s;
}
.tooltip-container:hover .tooltip-text {
visibility: visible;
opacity: 1;
}
</style>
<div class="tooltip-container">
懸停此處
<span class="tooltip-text">這是一個工具提示!</span>
</div>