三天學會HTML5 之第一天
引言
HTML5 一直是非常熱門的話題,因此此係列文章主要從一些基本功能開始講起,逐步深入瞭解HTML5的新概念。
首先了解一些基本的術語和概念。
- SGML, HTML,XML三者之間的區別
- Doc型別是什麼
- HTML5 有什麼新特點新優勢。
-
學習HTML5
在開始之前首先來區分SGMC,HTML,XML 三者的概念。
SGML 即 Standard Globalized Markup Language 是用來定義標準的標記語言,簡單的說,就是定義文件的元語言。
HTML 是基於SGML 的超連結語言,可以用於建立Web頁面。在DTD 內部定義了標籤的規則,DTD就是使用SGML 語言建立的。
XML 是從SGML 衍生而來的,它主要處理網際網路方面的需求,HTML 有很多限制,XML 是SGML 的子集,可用於表示資料。
Doc 型別
建立HTML 頁面時會自動生成以下程式碼:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "">
-
這句程式碼簡單的介紹了HTML 版本號,有了Doctype,就引入了對應的DTD(定義了HTML文件的組織結構),在頁面中新增的所有標籤才會是合法的,簡單的說DTD 就是定義HTML的語法規則。
即使在沒有引入DTD的情況下,很多瀏覽器也可以識別HTML元素,因為它們自身包含對HTML 元素的定義,這就是為什麼很多開發人員沒有感受到DTD 的存在。
HTML5 與之前的版本區別
HTML5不是基於SGML 語言的,因此不需要DTD ,它是一種全新的標記語言,有自己的解析規則,HTML5的語法規則與之前版本有很大的差別,可以稱的上是一種全新的語言。
HTML5 的Doctype 非常簡單:
<!DOCTYPE html>
-
HTML5 新特性
1. 理解新的頁面結構語義
HTML 舊版本並沒有標準的文件定義規則,比如如何定義文件Header或Footer等,很多人都在使用div來修飾一些CSS ,常常會導致不一致性。
HTML5 定義標準tag如Header,Footer,nav,FlipCaption等。這些標籤可使得標記語言更有意義。
注意: 這些標籤不提供特殊的渲染功能,僅僅使的HTML 文件結構更具有意義。
Lab2_ 新的輸入屬性
新型別值
之前為了獲得不同的UI 元素,如DatePicker,range Picker,color Picker等,會使用不同的類庫。
HTML5 為輸入元素引入了新屬性“type”,看以下示例:
-
Number
<input type="number" name="MyNuberElement" id="MyNumberElement" />
-
-
Range
<input type="range" name="MyRangeElement" id="MyRangeElement"/>
-
-
Color
<input type="color" id="MyColorElement" name="MyColorElement" />
-
Date
<input type="date" id="MyDateElement" name="MyDateElement" />
-
Time
<input type="time" id="MyTimeElement" name="MyTimeElement"/>
-
-
Datetime-local
<input type="datetime-local" id="MyDateTimeLElement" name="MyDateTimeLElement" />
-
-
DateTime (Also include time zone)
<input type="datetime" id="MyDateTimeElement" name="MyDateTimeElement"/>
-
Month
<input type="month" id="MyMonthElement" name="MyMonthElement" />
-
Week
<input type="week" id="MyWeekElement" name="MyWeekElement" />
-
下面列舉一些有用的屬性:
-
Autofocus 該屬性表示在頁面載入時,可初始化焦點。
… <label for="birthMonth">Birth Month</label> <input type="month" id="MyMonthElement" name="MyMonthElement" autofocus /> …
上面程式碼實現了,當頁面載入時,滑鼠聚焦於“MyMonthElement”控制元件,“autofocus” 則繫結到多控制元件。
-
Placeholder 新的輸入控制元件
-
<input type="text" placeholder="Enter Value" id="MyPlaceHolderControl" name="MyPlaceHolderControl" />
實驗3——瞭解HTML5 Datalist 控制元件
DataList是HTML5中的新標籤,能夠在輸入框中,實現自動完成功能。
可透過3個步驟實現:
1. 建立DataList
<datalist id="Hobbies"> <option>Reading books</option> <option>Watching movies</option> <option>Playing games</option> </datalist>
-
2. 建立輸入控制元件,繫結List
<input type="text" name="TxtHobbies" value="" list="Hobbies" />
-
3. 執行測試
實驗 4 輸出元素
HTML5 中引入標準的語義“Output”元素
<div oninput= "document.getElementById(MyOutputElement).value = (document.getElementById('input1').valueAsNumber) + (document.getElementById('input2').valueAsNumber)"> <input id="input1" name="input1" type="number" value="1"> + <input id="input2" name="input2" type="number" value="2"> = <output id="MyOutputElement">3</output> </div>
-
實驗 5,6,7-學習HTML5 驗證功能
驗證是開發應用最重要的功能,之前都會使用JQuery 驗證等功能,在新版的HTML5中提供了驗證支援。
Lab5—使用輸入元素的type屬性,實現驗證功能:
<form> <table> <tr> <td> <label>E-mail:</label> <input type="email" id="email" name="email" /> <label>URL:</label> <input type="url" id="url" name="url" /> <label>Telephone</label> <input type="tel" id="phone" name="phone" /> <label>Number Demo:</label> <input type="number" name="MyNumberElement" id="MyNumberElement" /> <label>Range Demo:</label> <input type="range" name="MyRangeElement" id="MyRangeElement" /> <label>Color Demo</label> <input type="color" id="MyColorElement" name="MyColorElement" /> </td> <td> <label>Date Demo</label> <input type="date" id="MyDateElement" name="MyDateElement" /> <label>Time Demo</label> <input type="time" id="MyTimeElement" name="MyTimeElement" /> <label>DateTime Local Demo</label> <input type="datetime-local" id="datetime" name=" datetime" /> <label>Month Demo</label> <input type="month" id="month" name="month" /> <label>Week Demo</label> <input type="week" id="MyWeekElement" name="MyWeekElement" /> <div style="text-align:right"> <input type="submit" value="validate" /> </div> </td> </tr> </table> </form>
-
2. 執行測試
實驗6-使用自定義驗證屬性實現驗證
1. 建立輸入控制元件
<form> <label>Email</label> <input type="email" name="TxtEmail" id="TxtEmail" required /> <label>User Name</label> <input type="text" name="username" id="username" pattern="[a-zA-Z]{5,}" /> <label>Age</label> <input type="number" name="TxtAge" id="TxtAge" min="10" max="50" /> <br /><input type="submit" value="Register" /> </form>
-
輸出:
實驗7——自定義驗證
透過處理oninvalid 事件完成自定義HTML5 驗證功能。
1. 建立輸入控制元件,並繫結驗證屬性,新增自定義錯誤提示。
<form> <label>Email</label> <input type="email" name="TxtEmail" id="TxtEmail" required/> <span class="MissingEmailSpan invalid">Email Missing <span class="InvalidEmailSpan invalid">Invalid email <label>User Name</label> <input type="text" name="username" id="username" pattern="[a-zA-Z]{5,10}" /> <span class="InvalidUserNameSpan invalid">Username not matching with pattern <label>Age</label> <input type="number" name="TxtAge" id="TxtAge" min="10" max="50" /> <span class="AgeIsNotInRangeSpan invalid">Age must be be between 10 and 50 <span class="InvalidAgeSpan invalid">Invalid Age <br /><input type="submit" value="Register" /> </form>
-
2. 新增style 標籤,建立CSS 來隱藏錯誤資訊
<style> .invalid { display: none; } </style>
-
3. 點選提交按鈕,隱藏錯誤資訊
<input type="submit" value="Register" onclick="$('.invalid').hide();" />
-
4. 當輸入控制元件包含非法值時觸發
<input type="email" name="TxtEmail" id="TxtEmail" oninvalid="OnInvalidEmail();" required/>
-
5. 建立Event Handler JavaScript函式
function OnInvalidEmail() { event.preventDefault(); var element = event.srcElement; var validity = element.validity; if (validity.valueMissing) { $('.MissingEmailSpan').show(); } else if (validity.typeMismatch) { $('.InvalidEmailSpan').show(); } }
event.preventDefault(); 會組織預設行為的發生,將錯誤資訊置頂
event.srcElement;獲取包含非法值的控制元件,如上的Email textbox;
element.validity; 包含控制元件的驗證資訊,如valueMissing,typeMismatch,badInput等。
6. 執行
-
實驗8——HTML5的快取技術
如下是簡答的快取Demo
1.建立新的ASP.NET Web 應用
2. 新增Style.css,在Block 中新增以下類:
.DivStyle { background-color:silver; }
-
3. 建立manifest 文字檔案:
CACHE MANIFEST # ver 1 CACHE: /Styles/Style.css
-
4. 建立需要快取的檔案
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %> <!DOCTYPE html> <html manifest="MyCache.txt"> <head runat="server"> <title></title> <link href="Styles/Style.css" rel="stylesheet" /> </head> <body> <form id="form1" runat="server"> <div class="DivStyle" id="MyDiv"> Hi, Execution count is 1 </div> </form> </body> </html>
-
5. 執行
6. 設定離線,檢視結果
7. 重新整理頁面
8 修改MyPage.aspx 檔案,修改Mydiv
<div class="DivStyle" id="MyDiv"> Hi, Execution count is 2 </div>
-
9. 執行程式
10. 修改manifest 檔案
CACHE MANIFEST # ver 3 CACHE: /Styles/Style.css
-
11 再次重新整理網頁
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28298702/viewspace-1985530/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 五分鐘學會HTML5!(一)HTML
- 五分鐘學會HTML5!(二)HTML
- HTML5學習之必記HTML
- 三天學會HTML5——SVG和Canvas的使用HTMLSVGCanvas
- HTML5學習之Canvas基礎知識HTMLCanvas
- go 第一天學習Go
- vue 第一天學習Vue
- 學習go第一天Go
- 學習HTML第一天HTML
- 學習java第一天Java
- jquery學習第一天jQuery
- JAVA學習第一天Java
- MarkDown 學習第一天
- HTML5學習之Web Storage基礎知識HTMLWeb
- HTML5如何學?HTML5該學什麼?HTML
- NodeJS 第一天學習NodeJS
- 學習HTML的第一天HTML
- HTML5如何學?學HTML5要注意什麼?HTML
- 14天學會安卓開發(第一天)Android架構與環境搭建安卓Android架構
- HTML5培訓教程學習之動效製作HTML
- RabbitMQ學習心得體會之ExchangeMQ
- 補打卡學習go第一天Go
- 學習筆記-JAVA第一天筆記Java
- 小白學python第一天打卡Python
- Vue2 第一天學習Vue
- Python學習的第一天Python
- 新人小白第一天學JavaJava
- JavaWeb學習筆記——第一天JavaWeb筆記
- HTML5開發學習教程,學習HTML5還是學習HTML5的製作工具?HTML
- HTML5學習之離線儲存基礎知識HTML
- HTML5 之全屏方法HTML
- HTML5示例之WebSocketHTMLWeb
- C++基礎學習第一天C++
- angularjs學習第一天筆記AngularJS筆記
- 學習C語言的第一天C語言
- 記錄JAVA學習的第一天Java
- 學習HTML5還是學習HTML5的製作工具?HTML
- Html5學習系列(一)認識HTML5HTML