DOM 編程藝術(shù) 8-11

8.動畫

幀:動畫里的最小單位,是靜態(tài)的圖像驻谆;幀頻:一秒鐘播放的幀的數(shù)量票罐。

一個完整的動畫由很多幀組成,流暢的動畫一秒鐘 30 幀以上缝龄。

JS 動畫三要素

對象:我們要操作的 DOM 對象

屬性:DOM 對象的屬性汰现,如 width,height,opacity,Left

定時器:setInterval ? ? ?setTimeout ? ? ?requestAnimationFrame

可以用定時器不斷地改變對象的屬性,構(gòu)成動畫叔壤。

setInterval

var intervalID = setInterval(func,delay[,param1,param2,...])

clearInterval(intervalID)

func:執(zhí)行改變屬性的操作的函數(shù)

delay:觸發(fā)定時器的時間間隔瞎饲,以毫秒為單位的值

param:可選參數(shù),在執(zhí)行 func 時可作為參數(shù)傳入

在執(zhí)行定時器期間清除定時器可調(diào)用 clearInterval

setTimeout

var timeoutID = setTimeout(func,[delay,param1,param2,...])

clearTimeout(timeoutID)

delay:可選參數(shù)炼绘,不傳默認為 0嗅战,表示定時器立即觸發(fā)。

setTimeout 和 setInterval 主要區(qū)別在于 setTimeout 在指定的觸發(fā)時間之后只執(zhí)行一次俺亮,setInterval 每隔指定時間都會執(zhí)行一次驮捍。

requestAnimationFrame

var requestID = requestAnimationFrame(func)

cancelAnimationFrame(requestID)

間隔時間不受用戶控制,由顯示器的刷新頻率控制脚曾,一秒鐘刷新 60 次东且,16.67 毫秒刷新一次,每次刷新觸發(fā)定時器本讥,與 setTimeout 相似珊泳,觸發(fā)之后執(zhí)行一次。

好處:不用關(guān)心間隔時間拷沸,動畫更流暢色查,瀏覽器控制刷新頻率不會出現(xiàn)掉幀情況。

常見動畫:形變 ?位移 ?旋轉(zhuǎn) ?透明度

動畫函數(shù)

進度條:形變動畫撞芍,不斷改變寬度

圖片切換:位移動畫秧了,父容器一直在移動實現(xiàn)切換效果

進度條


9.音頻與視頻

<audio src = "music.mp3"></audio>

<video src = "movie.mp4" width = 240 ?height = 240></video>

視頻播放器頁面上占據(jù)一定的空間,需要指定寬高序无。

audio 兼容用法

video 兼容用法

多媒體格式兼容性

如何在瀏覽器端檢測某一種音頻(視頻)是否兼容验毡,可用到 canPlayType 方法,將要檢測的媒體類型作為字符串參數(shù)傳入帝嗡。

var a = new Audio(); ? ?a.canPlayType('audio/nav');

如果瀏覽器支持媒體類型米罚,返回字符串“maybe”或“probably”,不支持返回空字符串丈探。根據(jù)結(jié)果可做進一步操作录择。

瀏覽器未實現(xiàn) video 構(gòu)造函數(shù),如果想用 video 的 canPlayType 方法,必須先在頁面插入 video 標簽隘竭,然后通過 JS 獲取 video 標簽的 DOM 對象塘秦,再調(diào)用 DOM 對象的 canPlayType 方法檢測。

HTML 屬性

audio 標簽和 video 標簽除了在頁面上顯示的有所差異动看,大部分屬性尊剔、方法相同。

src:音頻文件的 URL菱皆,必須有的屬性

controls:是否向用戶顯示控件须误,默認值為 false

autoplay:音頻是否在就緒后馬上播放,默認值為 false

preload:音頻在頁面加載時是否進行加載并預(yù)備播放仇轻,如果使用“autoplay”京痢,則忽略該屬性∨竦辏可取值為“none”祭椰,“metadata”,“auto”,分別表示不進行預(yù)加載疲陕,僅預(yù)加載元信息方淤,預(yù)加載資源,默認值為“none”

loop:音頻結(jié)束時是否重新開始播放蹄殃,默認值為 false

控制多媒體播放

load() 加載媒體內(nèi)容携茂;play() ?開始播放;pause() ?暫停

palybackRate ?播放速度(非負數(shù)诅岩,0-1之間慢速邑蒋,1以上快速);

currentTime ?播放進度(秒為單位按厘,修改后直接跳轉(zhuǎn));

volume ?音量(0-1之間的浮點數(shù))钱慢; muted ?靜音(true 為靜音)

查詢多媒體狀態(tài)(只讀屬性)

布爾值:pause 暫停逮京;seeking 跳轉(zhuǎn);ended 播放完成

數(shù)值:duration 媒體時長束莫;initialTime 媒體開始時間

多媒體相關(guān)事件

loadstart:開始請求媒體內(nèi)容

loadmetadata:媒體元數(shù)據(jù)已經(jīng)加載完成

canplay:加載了一些內(nèi)容懒棉,可以開始播放

play:調(diào)用了 play() 或設(shè)置了 autoplay

waiting:緩沖數(shù)據(jù)不夠,播放暫停

playing:正在播放


10.canvas

基本用法

<canvas id = "tutorial" width = "300" height = "150"></canvas>

如果不為 canvas 指定寬高览绿,默認 width 為 300策严,height 為 150

不建議用 CSS 指定寬高。

渲染上下文

var canvas = document.getElementById('tutorial');

var ctx = canvas.getContext('2d');

ctx 即為渲染上下文對象饿敲,canvas 大部分的 API 在這個對象里妻导。

globalCompositeOperation

在畫每一幀圖像之前,需要設(shè)置 globalCompositeOperation 屬性。設(shè)置后畫圖像與之前畫的圖像的關(guān)系倔韭。

基本繪畫步驟

清除畫布——繪制圖形——保存渲染上下文狀態(tài)——繪制圖形——恢復(fù)渲染上下文狀態(tài)——繪制圖形——保存渲染上下文狀態(tài)——繪制圖形——恢復(fù)渲染上下文狀態(tài)——繪制圖形……


11. BOM

從廣義上理解术浪,JavaScript 應(yīng)該包含三個部分,首先包含 ECMAScript(JavaScript 的語法部分)寿酌,DOM(文檔對象模型)胰苏,還有 BOM

BOM 代表瀏覽器窗口對象的一組 API

BOM——屬性

navigation 瀏覽器信息 ? ? ? location 瀏覽器定位和導(dǎo)航? ??

history 窗口瀏覽器歷史? ? ? screen 屏幕信息

1.navigation 瀏覽器信息

platform 屬性:代表瀏覽器運行在什么平臺

userAgent 屬性:是一系列屬性合成的一個很長的字符串,包含很多信息醇疼。有瀏覽器內(nèi)核信息以及瀏覽器版本號信息硕并。在編程時可通過 userAgent 判斷當前設(shè)置運行在什么瀏覽器上,一般來說只需判斷內(nèi)核秧荆。


2.location 瀏覽器定位和導(dǎo)航

可通過 location 屬性操縱 URL 各個部分

href 屬性倔毙,代表瀏覽器當前訪問的資源的完整路徑,可通過修改 href 進行跳轉(zhuǎn)辰如。

toString() 方法:如果直接修改 location 屬性普监,讓它賦值為一個字符串,會默認去調(diào)用 toString() 方法琉兜,返回 href 屬性凯正,可以通過直接修改 location 屬性達到 href 屬性的效果。

assign(url):載入新的 URL豌蟋,記錄瀏覽歷史

replace(url):載入新的 URL廊散,不記錄瀏覽歷史(替換瀏覽記錄)

reload():重載當前頁


3.history 窗口瀏覽器歷史

length 屬性代表瀏覽器歷史長度為 2?

back(),forward():傳入的都是整數(shù),表示要前進或后退的步長梧疲。

go():傳入整數(shù)允睹,正數(shù)前進,負數(shù)后退


4.screen 屏幕信息

avail- 作為前綴的為可用屬性幌氮,沒有 avail- 前綴為顯示器屬性


BOM——方法

alert(),confirm(),prompt() 三種對話框

setTimeout() setInterval() 計時器

open(),close() 開新窗口缭受,關(guān)閉窗口

1.三種對話框:阻塞瀏覽器當前線程

alert():警告框,提示用戶该互,只有確定按鈕

confirm():對話框米者,有確定和取消按鈕,點擊確定返回 true宇智,取消返回 false

prompt():對話框蔓搞,含輸入框與確定取消按鈕,點擊確定返回用戶輸入字符串

2.開關(guān)新窗口

var w =window.open("http://www.163.com","subwindow",

"width=400,height=350,status=yes,resizable=yes")

三個參數(shù):要打開的新窗口訪問的URL地址随橘,窗口名喂分,新開窗口屬性

在父窗口下關(guān)閉打開的新窗口 w.close();在子窗口下關(guān)閉 window.close()


BOM——事件

load:文檔和所有圖片加載完畢時觸發(fā)

在寫腳本時可能會操作文檔的節(jié)點或圖片机蔗,可通過監(jiān)聽 load 事件蒲祈,確保文檔和圖片加載完畢甘萧。在回調(diào)函數(shù)里操作文檔、節(jié)點和圖片資源的邏輯讳嘱。

unload:離開當前文檔時觸發(fā)(刷新幔嗦,關(guān)閉窗口觸發(fā))

beforeunload:和 unload 類似,但它提供詢問用戶是否確定離開的機會沥潭,返回 true 離開邀泉,false 不離開

resize:拖動改變?yōu)g覽器窗口大小時觸發(fā)

scroll:拖動滾動瀏覽器時觸發(fā)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市钝鸽,隨后出現(xiàn)的幾起案子汇恤,更是在濱河造成了極大的恐慌,老刑警劉巖拔恰,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件因谎,死亡現(xiàn)場離奇詭異,居然都是意外死亡颜懊,警方通過查閱死者的電腦和手機财岔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來河爹,“玉大人匠璧,你說我怎么就攤上這事∠陶猓” “怎么了夷恍?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長媳维。 經(jīng)常有香客問我酿雪,道長,這世上最難降的妖魔是什么侄刽? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任指黎,我火速辦了婚禮,結(jié)果婚禮上州丹,老公的妹妹穿的比我還像新娘醋安。我一直安慰自己,他們只是感情好当叭,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盖灸,像睡著了一般蚁鳖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赁炎,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天醉箕,我揣著相機與錄音钾腺,去河邊找鬼。 笑死讥裤,一個胖子當著我的面吹牛放棒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播己英,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼间螟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了损肛?” 一聲冷哼從身側(cè)響起厢破,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎治拿,沒想到半個月后摩泪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡劫谅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年见坑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捏检。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡荞驴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出未檩,到底是詐尸還是另有隱情戴尸,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布冤狡,位于F島的核電站孙蒙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏悲雳。R本人自食惡果不足惜挎峦,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望合瓢。 院中可真熱鬧坦胶,春花似錦、人聲如沸晴楔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽税弃。三九已至纪岁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間则果,已是汗流浹背幔翰。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工漩氨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人遗增。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓叫惊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親做修。 傳聞我的和親對象是個殘疾皇子霍狰,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • element.chidren和element.childNodes的區(qū)別 element.children是El...
    cheerss閱讀 448評論 0 1
  • Web前端技術(shù)由html、css和 javascript 三大部分構(gòu)成缓待,是一個龐大而復(fù)雜的技術(shù)體系蚓耽,其復(fù)雜程度不低...
    WEB攻程獅閱讀 1,875評論 2 116
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)旋炒,斷路器步悠,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 早上擠地鐵11號線。11號線堪稱上海早高峰之王瘫镇,第二站上車的我上車時勉強能有好的站著的位置鼎兽。 一路各站停靠铣除,越來越...
    Mexi閱讀 364評論 0 0
  • 1谚咬、財富的種子 1)悲田: 500+100+1500+500+1500+500+80+40+100+75*7+...
    coco22閱讀 179評論 0 0