一、 HTML學習記錄
0. 前言:
web标準的介紹
- w3c: 網際網路聯盟組織,用來指定Web标準的組織
- web标準:制作網頁要遵循的規範
- 結構:html ; 表現:css ; 行為:JavaScript
1. HTML介紹:
1.1 什麼是HTML?
- 全稱是hypertext markup language, 超文本标記語言,不是一種程式設計語言,是一種标記語言。由一系列的元素組成。
- 作用: 主要作用是負責描述文檔語義的語言。
- 注意:HTML不是一個程式設計語言,是一個标記語言,是沒有編譯過程的,HTML頁面直接由浏覽器解析執行。
1.2 計算機編碼介紹
1.2.1 基本知識
- bit:計算機存儲的最小機關。以 0 或 1 來表示比特位的值。網絡資訊傳輸的基本機關。
- 位元組:8 個比特位表示一個位元組。
- 字元:字元是可使用多種不同字元方案或代碼頁來表示的抽象實體。
1.2.2 字元編碼
- ASCII:用一個位元組表示一個字元,隻能表示英語字母,特殊符号,數字。
- GB2312 : 對ASCII的中文拓展
- GBK: 融合GB2312并新增 20000 個新的漢字(包括繁體字)和符号
- unicode編碼(統一編碼)utf-32:四個位元組表示一個字元,32個bit,效率太低
- utf-16 : 兩個位元組/四個位元組表示一個字元
- utf-8 : 根據字元的不同選擇編碼的長度,ascII編碼中的符号仍然采用一個位元組來編碼,格式0XXXXXXX。中文采用2個位元組來表示,格式110XXXXX 10XXXXXX
1.3 顔色介紹 3個位元組
- 純單詞表示:gray,green,red
- 10進制表示:rgb(255, 0, 0), rgb(0, 255, 0) 順序是紅、綠、藍;如果有第四個值,代表透明度
- 16進制表示:#FF0000 , #00FF00
1.4 什麼是元素?
元素的主要部分如下圖所示: 元素 = 開頭标簽 + 内容 + 結束标簽
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPn1EMrRlTysmeNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwgzNxQzMwQTM4AzMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
1.5 什麼是屬性:包括布爾屬性,可以沒有屬性值,比如checked等
2. HTML規範: (HTML不區分大小寫)
2.1 XHTML:
- 什麼是XHMTL:
指的是可擴充的超文本标記語言,是一個更嚴格/更純淨的HTML版本,以XML應用的方式定義的HTML
- 編寫XHTML的文法:
序号 | 規則 |
---|---|
1 | 必須正确嵌套 ,不能交叉嵌套 |
2 | 标簽必須小寫且必須關閉 |
3 | 所有的屬性必須加引号 |
4 | 所有的屬性必須加引号 |
5 | 必須要有DTD文檔類型定義 |
2.2 HTML文檔剖析
1. <!DCOTYPE html>:文檔類型。是一個聲明,在文檔的最前面,主要作用是告訴浏覽器按着哪種規範解析頁面
2. <html></html>:html元素,該元素将所有内容包裝在整個頁面上,也稱為根元素
3. <head></head>:是所有頭部元素的容器
4. <body></body>:使用者通路吧頁面時要顯示的所有内容
3. HTML結構詳解
3.1 文檔聲明頭:
doctype definition,簡稱DTD, 告訴在文檔的最前面,主要作用是告訴浏覽器按着哪種規範解析頁面
- 具體的聲明頭:
版本 | 聲明頭 | 介紹 |
---|---|---|
html1-html3 | 美國軍方及高等研究所用 | 無 |
html4.01 strict | | 不允許使用架構 樣式相關标簽屬性不允許使用等 |
html4.01 Transitional | | 不允許使用架構 |
html4.01 framset | | 允許使用架構 |
xhtml4.10- strict | | 必須以正确的xml格式标記 |
xhtml4.10 Transitional | | 必須以正确的xml格式标記 |
xhtml4.10 framset | | 必須以正确的xml格式标記 |
html5 | |
-
為什麼5中隻需要寫!DOCTYPE html?
HTML4.01中基于SGML,是以需要引用DTD, DTD 規定了标記語言的規則
HTML5 不基于 SGML,是以不需要引用 DTD。
3.2 HTML head
- meta标簽
name | description |
---|---|
charset | 允許該文檔使用的字元集 |
name = author | content = 作者資訊 |
name = description | content = 描述資訊 做到SEO(搜尋引擎優化) |
name=“Keywords” | content=網頁關鍵字 有助于SEO |
name=“viewpoint” | content=width=device-width, initial-scale=1.0 表示視口寬度等于螢幕寬度 |
HTTP-EQUIV=refresh | content=3;url 指定時間後跳到指定頁面 |
除了上面的refresh屬性規定重定向外, 還可以設定location:
res.statusCode = 301/302;
res.setHeader("Location", "url")
- title标簽: 設定網頁題目, 也有助于SEO
- link外部資源連結元素
name | description |
---|---|
rel | 規定目前文檔與連結文檔的關系 常用icon/stylesheet |
url | 屬性指定連結資源的url |
type | 定義連結到的内容的類型 mime類型 |
sizes | 定義圖示大小 |
media | 指定适用的媒體 |
- 引用樣式的三種方式
名字 | 方式 | 具體代碼 | 位置 |
---|---|---|---|
外部樣式表 | link引用 | | 外部 |
内部樣式表 | style标簽内部寫css | | head |
内聯樣式表 | 直接在标簽内部加style屬性 | | body |
-
引用js腳本的兩種方式
1 、第一種方式:直接放在script标簽中
javascript腳本的執行會阻塞它後面的html的解析
<script> var header = document.querySelector(".header"); ... </script> <div></div>
2、第二種方式:外鍊腳本
外鍊腳本的加載會阻塞它後面的html的解析
但是多個外鍊腳本他們之間是并行加載的<script src="js/form.js"></script> <input type="button" value="yz">
對于外鍊類型,如果在script後面加上async/defer,腳本的加載的過程都不會阻塞html的解析,async和defer不同的是:<script src="js/form.js"></script> <script src="js/domo.js"></script> <script src="js/snake.js"></script>
- async。腳本加載後就會立刻開始腳本執行,并停止對html的解析,待腳本執行完再繼續html的解析
- defer。腳本加載後,會等到全部的html的文檔都解析完,腳本才開始執行
3.3 body中的标簽屬性
3.3.1 塊級元素VS内聯元素
塊級元素:
· 會在元素之前的内容上換行,在它之後的元素也會換行
· 塊級元素不會嵌套在一個内聯元素中,内聯元素可以嵌套在一個塊級元素中
· 常見的塊級元素包括:段落、清單、導航菜單等
内聯元素:
· 不會導緻新行的出現
· 常見的内聯元素包括:超連結、強調元素、span等
3.3.2 字型标簽
- 預留字元要替換到字元實體,具體參考連結, 其中需要牢記背誦的見下表
轉義字元 | 字元 | 描述 |
---|---|---|
空格 | ||
| < | 小于号 |
| > | 大于号 |
| © | 商标 |
- 文字标簽清單 big在html5中已經删除
html理論基礎
3.3.3 body中非字型标簽
1⃣️ . a标簽
可以實作的功能包括:連結到絕對url ; 頁面内的跳轉(其中href = # -> 回到頁面頂部) ; 檔案的下載下傳 等等
屬性 | 含義 |
---|---|
download | 提示使用者儲存連結的url 。若沒有值可能是從url路徑截取/從請求頭裡的content-disposition等位置 |
href | 超連結指向的url |
type | 提示連結的url的格式 mime類型 |
target | _self: 目前浏覽上下文【預設】; _blank 新标簽頁; _parent 目前浏覽器父浏覽器上下文, _root在頂級視窗打開 |
name | 錨的名稱 |
title | 懸停文本 |
2⃣️ . img标簽
相容性比較好的圖檔格式png、svg、gif、bmp、(.jpg, .jpeg, .jfif, .pjpeg, .pjp)、ico
屬性 | 含義 |
---|---|
src | 圖檔路徑 |
alt | 替代文本描述,在圖檔加載失敗時非常有必要 |
width | 寬 不帶機關整數 |
height | 高 不帶機關整數 |
loading | 如何加載圖像 lazy延遲加載/eager立即加載 |
decoding | 解碼提示 同步/異步 |
title | 提示性文本 |
3⃣️ . input标簽
名稱 | 類型 | 說明 |
---|---|---|
button | 按鈕 | 按鈕的值在value屬性中填寫 |
radio | 單選框 | 一般和lable組合使用,name相同為一組,一組僅能有一個元素被選中 |
checkbox | 複選框 | 一般和lable組合使用,name相同為一組,一組允許一個或多個元素被選中 |
text | 文本類型 | 文本字段 |
password | 密碼類型 | 遮蓋文本 |
submit | 送出 | 使用者代理嘗試将表單送出給伺服器; |
補充内容:
submit類型下支援屬性formenctype屬性,表示編碼類型。其中text/plain代表純文字,multipart/form-data代表formdata處理資料,application/x-www-form-urlencoded使用encodeURI() 之類的算法對文本進行加密,預設使用最後一種方式
4⃣️ . form标簽
屬性 | 說明 |
---|---|
action | 定義送出表單時應将表單的收集資料發送到的位置 |
method | 定義了使用哪種HTTP方法發送資料 |
5⃣️ . ifame标簽
屬性 | 說明 |
---|---|
src | 要潛入頁面的url |
sandbox | 設定是否支援使用腳本,是否支援表單送出等 |
3.3.4 常見組合
1⃣️ . 有序/無序清單
标簽名 | 含義 |
---|---|
ol | 有序清單項 可以嵌套,支援用start屬性改變第一個元素的序号 |
ul | 無序清單項 支援嵌套 |
li | 清單條目 有序清單中可以加入value屬性改變目前序号(加value僅在有序清單中有效)type=“circle”/square變為空心圓/方形(僅在無序清單中有效) |
2⃣️ . table表格
标簽:
标簽名 | 含義 |
---|---|
table | 表格 |
tr | 表格行元素 |
th | 表格的頭部單元格 |
td | 表格的單元格 |
caption | 表格标題元素 |
thread | 表頭元素 |
tbody | 表主體元素 |
tfoot | 定義表格的頁腳 ; tfoot、tbody、thread資料可以邊擷取邊顯示,不寫的話要等表格全部内容都取完才顯示出來 |
屬性:
屬性名 | 含義 |
---|---|
table:border-collapse | 是否合并邊框 |
tr:colspan | 水準方向上合并單元格 |
tr:rowspan | 垂直方向上合并單元格 |
3⃣️ . 下拉框/自動完成框
标簽名 | 含義 |
---|---|
option | 可選項 |
select | 下拉框 |
datalist | 自動完成框 将input綁定到這個list來實作 |
3.3.5 多媒體相關标簽
标簽名 | 具體用法 | 解釋 |
---|---|---|
bgsound | <bgsound src=“xxx.mp3”></bgsound^> | 可以加入loop=-1來循環播放 |
marquee | behavior=slide隻移動一次 ;scrollamount移動速度;direction:right 移動的方向 ; loop:循環多少圈 ; scrolldelay移動一次休息多長時間 | 滾動字幕标簽 |
4 HTML5的介紹
4.1 什麼是HTML5?
HTML5制定了Web應用開發的一系列标準,是第一個将web作為應用開發平台的HTML語言;它定義了新語義标簽,新的多媒體标簽,新的javascipt api比如地理定位,重力感應。
4.2 新增語義和結構元素
4.2.1 新增标簽:
- section: 表示文檔或應用程式的通用部分
- aritcle: 表示文檔,頁面,應用程式或站點中的完整或獨立的組成
- header: 頁眉, 展示介紹性内容/輔助導航的實用元素
- footer: 頁腳
- nav: 提供導航連結
- aside: 定義了一個部分,與main元素相關,但不屬于主流,比如廣告
- time: 該元素用于以機器可讀格式顯示日期和時間
4.2.2 解決ie9下的不相容的問題
<!--[if lt IE 9]>
<script src="https://cdn.bootcss.com/html5shiv/r29/html5.js"></script>
<![endif]-->
4.3 新表單元素
- 新增表單類型:包括time/date/time日期時間元件, color拾色器, range滑動條, url隻能輸入url格式, email校驗是否是郵箱, tel手機号碼, number隻能輸入數字
- 新增表單元素:datalist自動補充下拉框,keygen自動生成密鑰公鑰,meter度量器
- 新增屬性:placeholder提示文字,autofocus自動獲得焦點,form指定表單項屬于哪個表單,pattern自定義正則,required必填等
4.4 圖像
4.4.1 canvas
-
canvas是什麼?
canvas定義位圖畫布,可以用于動态繪制圖形
- 腳本繪畫
var canvas = document.getElementById("canvas"); //擷取元素
var cxt = canvas.getContext("2d");//建立context對象
/*畫矩形*/
cxt.fillStyle="#FF0000"; //設定填充顔色
cxt.strokeStyle="#00FF00";//設定邊框顔色
cxt.fillRect(0,0,10,10);//fillRect(x,y,width,height) 填充 設定的是起點x,y以及矩形的長、寬
cxt.strokeRect(0,0,10,10);//畫出邊框
cxt.clearRect(x,y,width,height)//清除指定區域(包括填充+邊框)
/*畫直線、n邊形等等*/
cxt.beginPath(); //開始路徑
cxt.moveTo(100, 100);//移動到某點
cxt.lineTo(200,200);//移動筆觸
cxt.closePath();//關閉路徑
cxt.stroke();//描邊
cxt.fill();//填充
/*畫圓*/
cxt.beginPath();
cxt.arc(20,20,5,10,30,true);//(圓心x,圓心y,半徑,起始角度,結束角度,是否順時針畫圓)
cxt.closePath();
cxt.fill();
/*寫字*/
cxt.font="30px Arial";
cxt.fillText("加油",100,100);
cxt.strokeText("加油",90,90);
/*線性漸變*/
var grd=cxt.createLinearGradient(0,0,200,0);// 建立漸變 (漸變開始節點x,漸變開始節點y,漸變結束節點x, 漸變結束節點y)
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
cxt.fillStyle=grd;// 填充漸變
cxt.fillRect(10,10,150,80);
畫圖的角度參考下圖: 比如畫整個圓就是起始角0,結束角2*Math.PI
4.4.1 svg
-
svg是什麼?
SVG 指可伸縮矢量圖形 (Scalable Vector Graphics),圖像在放大或改變尺寸的情況下其圖形品質不會有損失,SVG 是網際網路聯盟的标準
- 代碼(僅介紹如何畫圓,其餘參考連結)
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="190">
<circle cx="50" cy="50" r="49" stroke="black" stroke-width="2" fill="red" />
</svg>
4.4.3 canvas VS svg
兩個元素都允許在浏覽器中建立圖形,但是有很大的不同:
canvas | svg |
---|---|
依賴于分辨率 | 不依賴分辨率 |
不支援事件處理器 | 支援事件處理器 |
适合圖像密集的遊戲 | 不适合遊戲 |
弱的文本渲染能力 | 适合大型渲染區域 |
4.5 多媒體
4.5.1 視訊格式
類型 | 介紹 |
---|---|
AVI | 由微軟開發的。所有運作 Windows 的計算機都支援 AVI 格式 |
WMV | indows Media 由微軟開發,但是如果未安裝額外元件,就無法播放 Windows Media 電影 |
MPEG | 網際網路上最流行的格式。它是跨平台的,得到了所有最流行的浏覽器的支援 |
Mpeg-4 .mp4 | 是一種針對網際網路的新格式 |
QuickTime .mov | 蘋果公司開發的,不能在沒有安裝額外的元件的 Windows 計算機上播放 |
RealVideo .rm/.ram | RealVideo 格式是由 Real Media 針對網際網路開發的。該格式允許低帶寬條件下(線上視訊、網絡電視)的視訊流。由于是低帶寬優先的,品質常會降低 |
4.5.3 audio音頻标簽
屬性 | 介紹 |
---|---|
autoplay | 自動播放 |
controls | 控制條 |
loop | 循環播放 |
preload | 預加載 |
src | 資源url 建議寫多個類型的src,來解決相容性問題 mp3/ogg/wav |
4.5.4 video視訊标簽
屬性 | 介紹 |
---|---|
autoplay | 自動播放 |
controls | 控制條 |
loop | 循環播放 |
preload | 預加載 |
src | 資源url 建議寫多個類型的src,來解決相容性問題 mp4/ogg/webm |
4.5 HTML5 api
4.5.1 可拖拽屬性
- 屬性:draggable:true (a超連結和圖檔的可拖拽是預設開啟的)
- 拖拽元素的監聽事件:
事件 | 介紹 |
---|---|
ondragstart | 當拖拽開始的時候 |
ondragend | 當拖拽結束的時候 |
ondreagleave | 被拖拽元素完全離開本來的元素的時候 |
ondrag | 整個拖拽的過程中 |
- 目标元素的監聽事件:
事件 | 介紹 |
---|---|
ondragenter | 當有元素進入到目标元素時 |
ondragleave | 當元素離開目标元素時 |
ondragover | |
ondrop | 在目标元素上松開滑鼠時調用 |
4.5.2 地理位置
geolocation規範提供了一套保護使用者隐私的機制,必須得到使用者的明确許可才能獲得使用者的位置資訊。
如果成功會調用successCallback方法,并傳回一個包含位置資訊的對象position coords坐标
- position.coords.latitude緯度
- position.coords.longitude經度
如果失敗會調用errorCallback方法,并傳回一個error對象, error對象裡包括message錯誤資訊,code錯誤碼等
4.5.3 全屏
-
方法:
requestFullscreen() 元素開啟全屏顯示
document.fullscreen 判斷是否全屏
document.webkitCancelFullScreen() 退出全屏
-
僞類:
.content-left:fullscreen
.content-left:-webkit-full-screen
.content-left:-moz-full-screen
- 代碼:
// 相容性,相容webkit,moz核心的浏覽器
nav.onclick = function(){
if(nav.requestFullscreen){
nav.requestFullscreen();
}else if(nav.webkitRequestFullscreen){
nav.webkitRequestFullscreen();
}else if(nav.mozkitRequestFullscreen){
nav.mozRequestFullscreen();
}
}
4.5.4 存儲
傳統存在cookie,存儲在使用者本地,存在磁盤裡,可以持久化存儲一段時間(可以自己設定),但是其存儲大小隻有4k,解析也相對複雜。HTML5提出了解決的辦法:
-
window.sessionStorage會話存儲
1.儲存在記憶體中
2.生命周期在浏覽器關閉時資料銷毀
3.在同一個視窗下資料可以共享
4.可以存儲約5M
5.隻能存儲字元串
6.api:
window.sessionStorage.setItem(key, value) 插入或更新一個item
window.sessionStorage.getItem(key) 擷取存儲的内容
window.sessionStorage.removeItem(key) 删除指定内容
window.sessionStorage.clear() 清空所有存儲内容
7.代碼:
buttonList[0].onclick = function(){//插入按鈕
window.sessionStorage.setItem("userName", userName.value);
window.sessionStorage.setItem("password", password.value);
window.sessionStorage.setItem("age", 18);
}
buttonList[1].onclick = function(){//更新按鈕
window.sessionStorage.setItem("userName", userName.value);//更新
window.sessionStorage.setItem("password", password.value);
}
buttonList[2].onclick = function(){//擷取按鈕
userName.value = window.sessionStorage.getItem("userName");
password.value = window.sessionStorage.getItem("password");
}
buttonList[3].onclick = function(){//删除按鈕
window.sessionStorage.removeItem("age");
}
buttonList[4].onclick = function(){//清空按鈕
window.sessionStorage.clear();
}
-
windows.localStorage本地存儲
1.有可能在記憶體,有可能硬碟裡
2.永久生效,除非手動删除
3.可以多個視窗共享
4.可以存儲約20M
5.隻能存儲字元串
6.api:
window.localStorage.setItem(key, value) 插入或更新一個item
window.localStorage.getItem(key) 擷取存儲的内容
window.localStorage.removeItem(key) 删除指定内容
window.localStorage.clear() 清空所有存儲内容
7.代碼:
buttonList[0].onclick = function(){
window.localStorage.setItem("userName", userName.value);
window.localStorage.setItem("password", password.value);
window.localStorage.setItem("age", 18);
}
buttonList[1].onclick = function(){
window.localStorage.setItem("userName", userName.value);
window.localStorage.setItem("password", password.value);
}
buttonList[2].onclick = function(){
userName.value = window.localStorage.getItem("userName");
password.value = window.localStorage.getItem("password");
}
buttonList[3].onclick = function(){
window.localStorage.removeItem("age");
}
buttonList[4].onclick = function(){
window.localStorage.clear();
}
二、 附錄
- 整體項目的檔案處理:标準的一個web項目的檔案目錄包括index.html, images檔案夾, styles檔案夾, scripts檔案夾
html理論基礎