核心思想 —— 語義化
【面試題】如何理解 HTML 語義化 ?
僅通過標簽便能判斷內容的類型,特別是區分標題、段落、圖片和表格
- 增加代碼可讀性,讓人更容易讀懂
- 對SEO更加友好,讓搜索引擎更容易讀懂
html 文件的基本結構
html 文件的文件后綴為 .html
,如 index.html
vscode 中輸入英文 !
可快捷輸入
<!-- HTML5的文檔類型聲明【必要】 -->
<!doctype html>
<!-- 整個頁面,語言為英文【必要】 -->
<html lang="en"><!-- 頁面的頭部【必要】 --><head><!-- 頁面的元信息-- 文檔的字符編碼為 UTF-8 --><meta charset="UTF-8" /><!-- 頁面的元信息-- 設備上顯示頁面的區域 viewport 的配置 -- width 為 device-width ,即采用設備寬度;intial-scale 為 1 ,即按原比例顯示(無縮放)--><meta name="viewport" content="width=device-width, initial-scale=1.0" /><!-- 頁面的標題【必要】 --><title>Document</title><!-- 頁面中的樣式 --><style>html,body {height: 100%;}</style></head><!-- 頁面的身體【必要】 --><body><!-- 頁面的內容 --><div></div><!-- 頁面的腳本 —— JS 代碼 --><script></script></body>
</html>
【面試題】為什么<style></style> 標簽要寫在<head></head> 中 ?
瀏覽器解析 HTML 文檔是自上而下的,將 <style></style>
標簽要寫在<head></head>
中就能先加載樣式,再加載元素。
若將 <style></style>
標簽寫在<body></body>
下方,則是先加載元素,再加載樣式,導致用戶會看到沒有樣式的頁面結構。
【面試題】為什么<script></script> 標簽要寫在 <body></body> 內的底部 ?
瀏覽器解析 HTML 文檔是自上而下的, <style></style>
若未放在<body></body>
內的底部,則會先加載并解析 JS ,再渲染元素,導致頁面渲染的時間延長,倘若 JS 中涉及 DOM 操作,還會阻塞頁面的渲染。
html 標簽的分類
根據標簽的默認的 display 樣式值分為兩類
【面試題】HTML有哪些內聯元素和塊狀元素 ?
內聯元素
寬度由內容決定
display :inline
不能設置寬高
img,span , a , b 等
display :inline-block
可以設置寬高
input, button 等
塊狀元素
寬度由容器決定(寬度會撐滿整個容器),可以設置寬高
display: block
div,h1-h6,p,ul, ol ,form , hr 等
display: table
table
display: list-item
li
HTML5 新增的標簽
【面試題】HTML5 新增了哪些標簽 ? (回答幾個常用的即可)
結構性標簽
<header>: 定義文檔或節的頭部。
<nav>: 定義導航鏈接。
<section>: 定義文檔中的獨立節。
<article>: 定義文檔、頁面、應用或網站中獨立的內容區域。
<aside>: 定義頁面的側邊欄內容。
<footer>: 定義文檔或節的頁腳。
<main>: 定義文檔的主體內容。
多媒體標簽
<video>: 定義視頻或電影。
<audio>: 定義音頻內容。
<source>: 為<video>和<audio>元素定義媒體資源。
<track>: 為<video>和<audio>元素定義文本軌道。
<embed>: 定義嵌入的內容,比如插件。
<canvas>: 用于在網頁上繪制圖形。
表單標簽
<datalist>: 定義選項列表,與<input>元素配合使用,以提供“自動完成”功能。
<output>: 定義不同類型的輸出,比如腳本的輸出。
其他標簽
<time>: 定義日期或時間。
<mark>: 定義高亮顯示的文本。
<progress>: 定義任何類型的任務的進度。
<meter>: 定義已知范圍或分數值內的標量測量。
<details>: 定義用戶可見的或者隱藏的額外的細節。
<summary>: 定義<details>元素的可見標題。
<figure>: 規定獨立的流內容(圖像、圖表、照片、代碼等等)。
<figcaption>: 定義<figure>元素的標題(caption)。
HTML 常用標簽實戰要點
link 外鏈資源
限 head 標簽內使用,可定義文檔與外部資源之間的關系,如外鏈 css 樣式,外鏈頁面標題前的小圖標等。
<!-- 外鏈--樣式 -->
<link rel="stylesheet" type="text/css" href="style.css" />
<!-- 外鏈--頁面標題前的小圖標 -->
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" />
a 超鏈接
-
超鏈接 a 標簽的四大功能(頁面跳轉、頁內滾動【錨點】、頁面刷新、文件下載)
https://blog.csdn.net/weixin_41192489/article/details/140217094 -
給段落添加超鏈接
用 p 包裹 a,而不是 a 包裹 p<p><a href="">段落</a></p>
普通文本專用標簽
br 段落內換行
僅適用于 p 標簽內部的換行,段落間的換行或調整元素間的間距請使用樣式 padding、margin 等樣式。
<p>廣東省<br/>廣州市<br/>黃埔大道西601號</p>
span 行內文本
用于包裹行內的部分文本來添加特殊的樣式。
<p><span style="color: red">要點:</span> 不能長時間睡覺。</p>
sup 上標
<p>m<sup>2</sup></p>
sub 下標
<p>m<sub>2</sub></p>
pre 預定義文本
塊狀元素 display: block
可保留所有空白字符(空格、換行符),原封不動的輸出結果,常用于展示計算機的源代碼。
<pre>
你好:我昨天給你打了個電話。
</pre>
code 代碼
內聯元素 display: inline
用于表示計算機源代碼或者其他機器可以閱讀的文本內容,為保留代碼的縮進格式,通常和 pre 標簽一起使用。
code 標簽內的文本將用等寬、類似電傳打字機樣式的字體(Courier)顯示出來。
<pre><code>let a = 1;</code>
</pre>
列表相關標簽
ul 無序列表
- type 屬性可修改序號類型
- disc 實心原點【默認】
- square 實心方點
- circle 空心圓
<ul><li>咖啡</li><li>茶</li><li>牛奶</li>
</ul>
ol 有序列表
- type 屬性 —— 序號類型,如1( 阿拉伯數字【默認】) 、a、A、i、I
- start 屬性 —— 計數起點
<ol><li>咖啡</li><li>茶</li><li>牛奶</li>
</ol>
<ol type="a"> <li>嘿嘿</li><li>嘿嘿</li><li>呵呵</li>
</ol>
<ol type="1" start="4"> <li>哈哈</li><li>哈哈</li><li>哈哈</li>
</ol>
列表嵌套
li 是一個容器級標簽,里面什么都能放,包括 ul。
<ul><li><b>北京市</b><ul><li>海淀區</li><li>朝陽區</li><li>東城區</li></ul></li><li><b>廣州市</b><ul><li>天河區</li><li>越秀區</li></ul></li>
</ul>
table 表格
https://blog.csdn.net/weixin_41192489/article/details/140217983
i 圖標
i 標簽原用于表示斜體文字,默認有字體傾斜的效果,但現在斜體統一通過css實現。 因 i 為圖標 icon 的首字母,現習慣用 i 標簽來展示圖標,所以需添加樣式 font-style:normal 取消默認的傾斜。
<i style="font-style:normal">☎</i>
img 圖片
display :inline
內聯元素
支持的圖片格式:jpg(jpeg)、gif、png、bmp,其他格式不支持,如psd、ai
<img src="./ecLogo.jpg" alt="EC編程俱樂部的logo" />
-
src【必要】:圖片的地址
-
alt【重要】:當圖片無法顯示時,代替圖片顯示的內容,搜索引擎會抓取此屬性。alt 源自單詞 alternate “替代”,代表替換資源。(有的瀏覽器不支持)
-
要想圖片保持寬高比,通常只設置 width 和 height 中的一個
-
響應式圖片
https://blog.csdn.net/weixin_41192489/article/details/126038175 -
圖片懶加載(手寫)
https://blog.csdn.net/weixin_41192489/article/details/126263221
audio 音頻
display :inline
內聯元素
<audio controls><source src="./test.mp3" type="audio/mp3" />您的瀏覽器不支持 audio 標簽。
</audio>
- src【必要】:音頻的地址
- controls 展示音樂播放器
- autoplay 自動播放
- loop 循環播放
- preload 預加載(設置 autoplay 時,此屬性將失效)
下方為使用 vue3 實現的簡易音樂播放器,相關屬性和方法詳見注釋
<script setup>
let bgMusic_ref = ref(null)function printInfo() {let musicInfo = {//currentTime 當前播放進度(單位秒s)currentTime: bgMusic_ref.value.currentTime,//duration 音頻總時長(單位秒s)duration: bgMusic_ref.value.duration}console.log(musicInfo)
}function play() {// 播放音頻bgMusic_ref.value.play()
}function pause() {// 暫停播放音頻bgMusic_ref.value.pause()
}// 重新播放音頻(從頭開始播放)
function rePlay() {// 先將當前播放進度重置為 0bgMusic_ref.value.currentTime = 0// 再播放音頻bgMusic_ref.value.play()
}
</script><template><audio ref="bgMusic_ref" controls autoplay><source src="./test.mp3" type="audio/mp3" />您的瀏覽器不支持 audio 標簽。</audio><button @click="play">播放</button><button @click="pause">暫停</button><button @click="rePlay">重新播放</button><button @click="printInfo">打印音頻信息</button>
</template>
- 【實用技巧】下載音樂到本地電腦
https://blog.csdn.net/weixin_41192489/article/details/122680809
video 視頻
display :inline
內聯元素
僅支持MP4、WebM、Ogg三種格式,不支持其他格式,如flv、mkv等
<video controls><source src="./test.mp4" type="video/mp4" /></video>
-
src【必要】:視頻的地址
-
controls 展示視頻播放器
-
autoplay 自動播放
-
loop 循環播放
-
preload 預加載(設置 autoplay 時,此屬性將失效)
-
【實用技巧】下載視頻到本地電腦-CSDN博客
https://blog.csdn.net/weixin_41192489/article/details/140223996
iframe 內嵌框架
display :inline
內聯元素
在頁面內嵌入網頁
<iframe src="https://www.w3school.com.cn/index.html"></iframe>
- src【必要】:其他網頁的地址
表單相關標簽
button 按鈕
display :inline-block
內聯元素
<button onclick="alert('你好!')">點擊我!</button>
HTML 渲染特殊字符
字符 | 描述 | 代碼 |
---|---|---|
空格 | non-breaking spacing | |
< | 小于號less than | < |
> | 大于號greater than | > |
? | 版權 | © |
& | 和號 | & |
更多特殊字符,參考《html特殊字符的html,js,css寫法匯總》
https://www.cnblogs.com/starof/p/4718550.html
HTML 常用標簽實戰范例
頁面布局
-
vue3【實戰】語義化首頁布局-CSDN博客
https://blog.csdn.net/weixin_41192489/article/details/140215515 -
CSS 【實戰】 “四合院”布局-CSDN博客
https://blog.csdn.net/weixin_41192489/article/details/139243680