☞HTML5屬於上一代HTML的新迭代語言,設計HTML5最主要的目的是爲了在移動設備上支持多媒體!!! 例如: video 標籤和 audio 及 canvas 標記 ☞ 新特性: 1. 取消了過期的顯示效果標記 <font></font> 和 <center></center> ... 2. 新表單元素引入 3. 新語義標籤的引入 4. canvas標籤(圖形設計) 5. 本地數據庫(本地存儲) 6. 一些API ☞ 好處: 1. 跨平臺 例如:好比你開發了一款HTML5的遊戲,你能夠很輕易地移植到UC的開放平臺、Opera的遊戲中心、Facebook應用平臺,甚至能夠經過封裝的技術發放到App Store或Google Play上,因此它的跨平臺性很是強大,這也是大多數人對HTML5有興趣的主要緣由。 ☞ 缺點: 1. pc端瀏覽器支持不是特別友好,形成用戶體驗不佳
<header></header> <footer></footer> <article></article> <aside></aside> <nav></nav> <section></section> .... http://www.w3school.com.cn/html/html5_semantic_elements.asp
☞ <video></video> 視頻 屬性:controls 顯示控制欄 屬性:autoplay 自動播放 屬性:loop 設置循環播放 ☞ <audio></audio> 音頻 屬性:controls 顯示控制欄 屬性:autoplay 自動播放 屬性:loop 設置循環播放 ☞ video標籤支持的格式 http://www.w3school.com.cn/html5/html_5_video.asp ☞ 多媒體標籤在網頁中的兼容效果方式 <video> <source src="code/多媒體標籤/trailer.mp4"> <source src="trailer.ogg"> <source src="trailer.WebM"> </video>
<input type="email"> email: 輸入合法的郵箱地址 url: 輸入合法的網址 number: 只能輸入數字 range: 滑塊 color: 拾色器 date: 顯示日期 month: 顯示月份 week : 顯示第幾周 time: 顯示時間
◆form屬性: autocomplete=on | off 自動完成 novalidate=true | false 是否關閉校驗 ◆ input屬性: *autofocus : 自動獲取焦點 form: list: <input type="text" list="abc"/> <datalist id="abc"> <option value="123">12312</option> <option value="123">12312</option> <option value="123">12312</option> <option value="123">12312</option> </datalist> multiple: 實現多選效果 *placeholder : 佔位符 (提示信息) *required: 必填項 做業: ◆本身解決required自定義提示信息 ◆預習和複習 留下的疑問: ◆ 如何修改表單控件中的默認提示信息 1. 表單驗證觸發oninvalid事件 2. 經過setCustomValidity方法設置修改內容
☞ document.querySelector("選擇器"); 備註: 選擇器: 能夠是css中的任意一種選擇器 經過該選擇器只能選中第一個元素。 ☞ document.querySelectorAll("選擇器"); 備註: 與document.querySelector區別: querySelectorAll 能夠選中全部符合選擇器規則的元素,返回的是一個列表。querySelector返回的只是單獨的一個元素 ☞ Dom.classList.add("類名"): 給當前dom元素添加類樣式 ☞ Dom.classList.remove("類名"); 給當前dom元素移除類樣式 ☞ classList.contains("類名"); 檢測是否包含類樣式 ☞ classList.toggle("active"); 切換類樣式(有就刪除,沒有就添加) ☞ 自定義屬性 (小案例分析體驗自定義屬性) data-自定義屬性名 備註: 在標籤中,以data-自定義名稱 1. 獲取自定義屬性 Dom.dataset 返回的是一個對象 Dom.dataset.屬性名 或者 Dom.dataset[屬性名] 注意: 屬性名是不包含data- 2. 設置自定義屬性 Dom.dataset.自定義屬性名=值 或者 Dom.dataset[自定義屬性名]=值;
☞ FileReader FileReader 接口有3個用來讀取文件方法返回結果在result中 readAsBinaryString ---將文件讀取爲二進制編碼 readAsText ---將文件讀取爲文本 readAsDataURL ---將文件讀取爲DataURL ☞ FileReader 提供的事件模型 onabort 中斷時觸發 onerror 出錯時觸發 onload 文件讀取成功完成時觸發 onloadend 讀取完成觸發,不管成功或失敗 onloadstart 讀取開始時觸發 onprogress 讀取中 ☞ 分析讀取圖片小案例
☞ 獲取當前網絡狀態 window.navigator.onLine 返回一個布爾值 ☞ 網絡狀態事件 1. window.ononline 2. window.onoffline
☞ 只能獲取一次當前位置 window.navigator.geolocation.getCurrentPosition(success,error); 1. coords.latitude 維度 2. coords.longitude 經度 ☞ 實時獲取當前位置 window.navigator.geolocation.watchPosition(success,error); ☞ 分析地理定位小案例:1h07m
☞發展: 隨着互聯網的快速發展,基於網頁的應用愈來愈廣泛,同時也變的愈來愈複雜,爲了知足各類各樣的需求,會常常性在本地存儲大量的數據,傳統方式咱們以document.cookie來進行存儲的,可是因爲其存儲大小隻有4k左右,而且解析也至關的複雜,給開發帶來諸多不便,HTML5規範則提出解決方案,使用sessionStorage和localStorage存儲數據。 ☞ localStorage: 1. 永久生效 2. 多窗口共享 3. 容量大約爲20M ◆window.localStorage.setItem(key,value) 設置存儲內容 ◆window.localStorage.getItem(key) 獲取內容 ◆window.localStorage.removeItem(key) 刪除內容 ◆window.localStorage.clear() 清空內容 ☞ sessionStorage: 1. 生命週期爲關閉當前瀏覽器窗口 2. 能夠在同一個窗口下訪問 3. 數據大小爲5M左右 ◆window.sessionStorage.setItem(key,value) ◆window.sessionStorage.getItem(key) ◆window.sessionStorage.removeItem(key) ◆window.sessionStorage.clear()
http://www.w3school.com.cn/html5/html5_ref_audio_video_dom.asp 做業: 完成一個在線音樂播放器或者視頻播放器
配置代碼段javascript
☞ 介紹canvas畫布 ☞ 設置畫布大小: 使用屬性方式設置 ☞ 解決畫布重繪問題 1. 設置一次描邊 2. 開啓新的圖層
ctx.moveTo(x,y) 落筆 ctx.lineTo(x,y) 連線 ctx.stroke() 描邊 ctx.beginPath(); 開啓新的圖層 演示: strokeStyle="值" 線寬: linewidth="值" 備註:不須要帶單位 線鏈接方式: lineJoin: round | bevel | miter (默認) 線帽(線兩端的結束方式): lineCap: butt(默認值) | round | square 閉合路徑: ctx.closePath() --繪製一條直線演示代碼 --做業: 1. 從200,100的位置繪製寬爲200高爲150的矩形 2. 準備一個600*400的畫布,三等分這個畫布,分別繪製正方形。直角三角形,梯形
☞ 線性漸變 var grd=ctx.createLinearGradient(x0,y0,x1,y1); x0-->漸變開始的x座標 y0-->漸變開始的y座標 x1-->漸變結束的x座標 y1-->漸變結束的y座標 grd.addColorStop(0,"black"); 設置漸變的開始顏色 grd.addColorStop(0.1,"yellow"); 設置漸變的中間顏色 grd.addColorStop(1,"red"); 設置漸變的結束顏色 ctx.strokeStyle=grd; ctx.stroke(); 備註: addColorStop(offse,color); 中漸變的開始位置和結束位置介於0-1之間,0表明開始,1表明結束。中間能夠設置任何小數 ☞ 徑向漸變 ctx.createradialGradient(x0,y0,r0,x1,y1,r1); (x0,y0):漸變的開始圓的 x,y 座標 r0:開始圓的半徑 (x1,y1):漸變的結束圓的 x,y 座標 r1:結束圓的半徑
ctx.fill(); 設置填充效果 ctx.fillstyle="值"; 設置填充顏色
☞ 繪製一個以下圖形
☞ 非零環繞原則: 1. 任意找一點,越簡單越好 2. 以點爲圓心,繪製一條射線,越簡單越好(相交的邊越少越好) 3. 以射線爲半徑順時針旋轉,相交的邊同向記爲+1,反方向記爲-1,若是相加的區域等於0,則不填充。 4. 非零區域填充 ☞ 非零環繞原則案例:
原理: 設置虛線其實就是設置實線與空白部分直接的距離,利用數組描述其中的關係 例如: [10,10] 實線部分10px 空白部分10px 例如: [10,5] 實線部分10px 空白部分5px 例如: [10,5,20] 實線部分10px 空白5px 實線20px 空白部分10px 實線5px 空白20px.... 繪製: ctx.setLineDash(數組); ctx.stroke(); 例如: ctx.moveTo(100, 100); ctx.lineTo(300, 100); ctx.setLineDash([2,4]); ctx.stroke(); 注意: 若是要將虛線改成實線,只要將數組改成空數組便可。
☞ 繪製一個描邊矩形: content.strokeRect(x,y,width,height) ☞ 繪製一個填充矩形: content.fillRect(x,y,width,height) ☞ 清除: content.clearRect(x,y,width,height) ☞ 實現動畫效果: 1. 先清屏 2. 繪製圖形 3. 處理變量
☞ 繪製填充文本 content.fillText(文本的內容,x,y) ☞ 繪製鏤空文本 content.strokeText(); ☞ 設置文字大小: content.font="20px 微軟雅黑" 備註: 該屬性設置文字大小,必須按照cssfont屬性的方式設置 ☞ 文字水平對齊方式【文字在圓心點位置的對齊方式】 content.textalign="left | right | center" ☞文字垂直對齊方式 content.textBaseline="top | middle | bottom | alphabetic(默認)" ☞文字陰影效果 ctx.shadowColor="red"; 設置文字陰影的顏色 ctx.ShadowOffsetX=值; 設置文字陰影的水平偏移量 ctx.shadowOffsetY=值; 設置文字陰影的垂直偏移量 ctx.shadowBlur=值; 設置文字陰影的模糊度
☞ //將圖片繪製到畫布的指定位置 content.drawImage(圖片對象,x,y); ☞ //將圖片繪製到指定區域大小的位置 x,y指的是矩形區域的位置,width和height指的是矩形區域的大小 content.drawImage(圖片對象,x,y,width,height); ☞ //將圖片的指定區域繪製到指定矩形區域內 content.drawImage(圖片對象,sx,sy,swidth,sheight,dx,dy,dwidth,dheight); sx,sy 指的是要從圖片哪塊區域開始繪製,swidth,sheight 是值 截取圖片區域的大小 dx,dy 是指矩形區域的位置,dwidth,dheight是值矩形區域的大小 ☞ 解決圖片繪製到某一個區域的按原比例縮放繪製: 繪製寬:繪製高==原始寬:原始高
☞ content.arc(x,y,radius,startradian,endradian[,direct]); x,y 圓心的座標 radius 半徑 startradian 開始弧度 endradian 結束弧度 direct 方向(默認順時針 false) true 表明逆時針 ☞ 0度角在哪? 以圓心爲中心向右爲0角 順時針爲正,逆時針爲負 ☞ 備註: 角度 和 弧度的關係: 角度:弧度= 180:pi 特殊值 0度 = 0弧度 30度 = π/6 (180度的六分之一) 45度 = π/4 60度 = π/3 90度 = π/2 180度 = π 360度 = 2π ☞ 繪製圓上任意點: 公式: x=ox+r*cos( 弧度 ) y=oy+r*sin( 弧度 ) ox: 圓心的橫座標 oy: 圓心的縱座標 r: 圓的半徑
ctx.translate(x,y); 特色: 經過該方法能夠將原點的位置進行從新設置。 注意: 1. translate(x,y) 中不能設置一個值 2. 與moveTo(x,y) 的區別: moveTo(x,y) 指的是將畫筆的落筆點的位置改變,而座標系中的原點位置並無發生改變 translate(x,y) 是將座標系中的原點位置發生改變
ctx.rotate(弧度)
ctx.scale(x,y) 備註: 沿着x軸和y軸縮放 x,y 爲倍數 例如: 0.5 1