<!-- {%hackmd EafFu4VWQKuKkTQQXbkxGg %} -->
# 前端讀書會-Introduce
[toc]
## Introduce
### What we usually do ?
:::info
1. HTML: 表述並定義內容。(傳遞內容)
2. CSS: 用來描述網頁的外觀(美化外觀)。
3. JavaScript: 功能性的程式語言(與使用者的交互行為)
:::
---
## HTML5
來源連結:[HTML-MDN](https://developer.mozilla.org/zh-TW/docs/Web/HTML)、[HTML元素](https://zh.wikipedia.org/wiki/HTML%E5%85%83%E7%B4%A0)
1) What is HTML ?
:::info
1. HTML的全名是-HyperText Markup Language。
1) Hypertext(超文本),是一種可以顯示在電子裝置上的文字。目前普遍以電子文件的方式存在,其中的文字包含有可以連結到其他欄位或者文件的超連結,允許從當前閱讀位置直接切換到超連結所指向的文字。
2) Markup (標記)-用來詮釋文字、突現、其他能在瀏覽器顯示的內容。HTML 標記還包括一些特殊「元素」(element),例如:
```html=
<head>、<title>、<body>、<header>、<footer>、
<article>、<section>、<p>、<div>、<span>、<img>...等等
```
3) HTML 文件中的元素和其他內容文字不同的地方,在於元素名稱本身用「<」與「>」包圍,稱作「標籤」。HTML 標籤不分英文大小寫。也就是說,它們可以寫成英文全大寫、全小寫、或是混在一起。
4) HTML 標籤都是成對的,而且是「巢狀」的結構。但一些元素如換行符 < br >,不允許嵌入任何內容,無論是文字或其他標籤。這些元素只需一個單一的空標籤(類似於一個開始標籤),無需結束標籤。
< h1 >
< h2> < /h1 >
< /h2>
:::
### css3
來源連結:[CSS-MDN](https://developer.mozilla.org/zh-TW/docs/Web/CSS)
1) What is HTML ?
:::info
層疊樣式表(Cascading Style Sheets, CSS),是用來描述 HTML 或 XML(包含 SVG 或 XHTML 等各種 XML 變形)文件外觀的樣式表語言。CSS 會描述文件裡的結構化元素,該如何呈現在螢幕、紙、語音報讀、或其他媒介上。
:::
### JavaScript
來源連結: [JavaScript-MDN](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript)
:::info
JavaScript (簡稱 JS) 是具有"[**一級函術**](https://zh.wikipedia.org/wiki/%E5%A4%B4%E7%AD%89%E5%87%BD%E6%95%B0)"(First-class functions) 的輕量級、==直譯式==或即時編譯(JIT-compiled)的程式語言。它因為用作網頁的腳本語言而大為知名,但也用於許多非瀏覽器的環境,像是 node.js、Apache CouchDB。JavaScript 是一個基於原型的 (Prototype-based)、多範型的、動態語言,支援物件導向、指令式以及宣告式 (如函數式程式設計) 風格。
:::
---
## 在一個網頁裡的結構
:::info
- ==<!DOCTYPE html>==:告訴瀏覽器這份文件是一個 HTML5 的網頁,瀏覽器因而知道要怎麼用正確的方式來展示你的網頁。請注意宣告要寫在第一行,因為瀏覽器是一行一行讀取文件的,想愈早告訴他的資訊,請寫在愈上面。
- == < html >< /html > == 此標籤是置於整個文件的開始和結束之處,以供瀏覽器識別此文件為合法的文件。
- == < head >< /head > ==包圍的資訊稱為「標頭」,<head> 裡宣告各種網頁資訊,這些資訊不會顯示給使用者看,因為它們的溝通對象是瀏覽器與其他的網路服務,如 Google 搜索引擎,Facebook 等。<head> 宣告的資訊包括網頁標題、外部連結、網頁樣式、JavaScript 腳本、meta tag⋯⋯等。
- head tag
- ==<title></title>==:此標籤中的就是此網頁的標題,也就是您瀏覽器最左上面的標題,若沒設則只會顯示成此網頁所在的網址。
- ==<body></body>==:此標籤中所寫的內容即會顯示於網頁裡面,至於裡面要寫些什麼、可以寫些什麼,以我就會教你們怎麼去寫自己的網頁了。
:::
### 基本網頁元素
:::info
- 標題:h1, h2, h3, h4, h5, h6
- 文字段落:p
- 清單:ul, ol, li
- 強調語氣:em, strong
- 換行:br
- 水平線:hr
- 超連結:a
- 圖片:img
- 區域:div, span
- 表格:table, tr, th, td
- 表單:form, label, input
除了 img 標籤外,header、nav、main 和 section 是==語義元素== (semantic element),也就是「有意義的元素」,能讓搜尋引擎辨識出正確的網頁內容。
- 空元素一覽表: https://developer.mozilla.org/zh-TW/docs/Glossary/Empty_element
:::
### 範例:
```htmlmixed=
<!DOCTYPE html>
<html lang="en">
<!-- lang="en" 便是沒有特定的地區 -->
<head>
<!-- 主要放置得標籤用來告訴搜尋引擎這個網頁有什麼樣的內容、控制網頁與外部程式碼的連結、
定義網頁使用的樣式等等(例如你的css檔如何跟html運作)<title>、<meta>、<link>、<script>、<style>、<base> -->
<meta charset="UTF-8">
<!-- 在 head 標籤內,表示要適應各種網路瀏覽器的編碼問題,
如:IE瀏覽器預設文字編碼是BIG-5,我們在這邊先宣告統一使用utf-8編碼,解決使用不同瀏覽器會看到亂碼的問題。
-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name=COPYRIGHT content="Copyright (c) by Jung ">
<!-- 註明版權所有 -->
<meta name="description" content="全台最大3C零件銷售平台、舉凡電腦、手機、平板都買的到">
<!-- 搜尋引擎都會以網頁的前廿五字做為網頁內容摘要 -->
<title>Welcome Everyone</title>
<!-- style標籤是我們可以放寫Css的地方(classname) -->
<style>
.message-box{
width: 200px;
height: fit-content;
display: none;
border: 1px solid green;
border-radius: 5px;
text-align: center;
margin: auto ;
}
.protect{
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
width: 100%;
height: 100%;
background-color: #ddd;
}
#close{
position:relative;
z-index: 1;
cursor: pointer;
}
table {
border-collapse: collapse;
}
table, th, td {
border: 1px solid black;
}
</style>
</head>
<!-- body 包圍的內容是會直接顯示給使用者看的內容,也是這個網頁的核心。需要 CSS 來定義樣式的內容,也都會放在 body 裡面,現在,請你立刻在 body 裡輸入以下內容 -->
<body>
<!-- 這裡是傳統的寫法 -->
<div class="header"></div>
<div class="nav"></div>
<div class="main">
<div class="article"></div>
<div class="aside"></div>
</div>
<div class="footer">
Updated on <span class="time"></span>
</div>
<a href="https://google.com">Google</a>
<img src="https://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif" alt="GOOGLE">
<br>
<hr>
<ol>
<li>1</li>
<li>2</li>
<li>3</li>
</ol>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<table>
<thead>
<tr>
<th>cats</th>
<th>dogs</th>
</tr>
</thead>
<tbody>
<tr>
<td>7</td>
<td>6</td>
</tr>
</tbody>
<tfoot>
<tr>
<th colspan="2">Cats win!</th>
</tr>
</tfoot>
</table>
<table>
<tr>
<th>Month</th>
<th>Savings</th>
<th>Savings for holiday!</th>
</tr>
<tr>
<td>January</td>
<td>$100</td>
<td rowspan="2">$50</td>
</tr>
<tr>
<td>February</td>
<td>$80</td>
</tr>
</table>
<!-- 這裡是使用語意標籤和 <div>、<span> 一樣,沒有預設樣式。 -->
<!-- nav 網頁的選單與導覽 -->
<nav >網頁的選單、導覽</nav>
<!-- main 網頁的主要內容 -->
<!-- 元素內的內容對於文檔應該是唯一的。它不應包含跨文檔重複的任何內容,例如側欄,導航鏈接,版權信息,網站徽標和搜索表單。同時它不能是<article>,<aside>,<footer>,<header>或<nav>元素的後代。 //20200722 -->
<main style="border: 1px solid blue;">
<!-- article 一篇文章內容 -->
<article>
<!-- section 自訂的區塊,例如數篇摘要組成的空間。-->
<section>
<div>
<h2>電腦零件</h2>
<p>硬碟、記憶體、螢幕</p>
</div>
</section>
<section>
<div>
<h2>手機零件</h2>
<p>保護貼、手機殼、電源線</p>
</div>
</section>
</article>
<aside>:網頁的側欄、附加內容。</aside>
</main>
<!-- footer 網頁的頁尾,通常放置聯絡方式、著作權宣告等等。 -->
<footer>
<!-- time 顯示日期時間 -->
網頁的頁尾,通常放置聯絡方式、著作權宣告等等。Updated on <time></time>
</footer>
<button id="message-button">打開 message Box</button>
<div id="message" class="message-box">
<div class="protect"></div>
<button id="close">關閉</button>
</div>
<script>
window.onload = function () {
let messageButton = document.getElementById('message-button')
let close = document.getElementById('close')
messageButton.addEventListener("click", toggleMessageBox)
close.addEventListener("click", toggleMessageBox)
}
function toggleMessageBox() {
let status = document.getElementById('message').style.display
console.log( document.getElementById('message').style.display)
if (status === 'block') {
document.getElementById('message').style.display = 'none'
} else {
document.getElementById('message').style.display = 'block'
}
// status === 'block' ? document.getElementById('message').style.display = 'none' :document.getElementById('message').style.display = 'block'
// 這一段是三元運算式
}
</script>
</body>
</html>
```
###### tags: `前端讀書會`