從零開始學 Web 之 HTML5(四)拖拽介面,Web儲存,自定義播放器
試著把我拖過去
``` > 1、被拖拽的元素必須新增 `draggable="true"` 屬性。 > > 2、瀏覽器預設會阻止目標元素的 ondrop 事件:我們必須在目標元素的 ondragover 中阻止瀏覽器的預設行為(使用事件引數物件的 `preventDefault() `方法),才能將拖拽的元素放到目標元素中。 **遺留問題:**如果有多個 div,那麼每個 div 都必須寫 ondragover 和 ondrop 事件觸發的處理函式,也就是隻能拖拽指定的元素到指定的元素中,這樣程式碼的可用性就很低了。 **分析問題:**既然有多個被拖拽元素和多個目標元素存在,這些元素都存在於 document 中的,那麼可不可以給 document 新增這些事件呢? 答案是可以的。 ```html試著把我拖過去
試著也把我拖過去
``` > 在事件引數物件中有一個 target 屬性,其值為被拖拽的元素物件。 問題解決了,但是,又是但是......,但是一般少使用全域性變數,全域性變數誰都可以修改,容易誤操作。 **在事件引數物件中有一個 `dataTransfer` 屬性,通過 `dataTransfer` 來實現資料的儲存與獲取。** dataTransfer 有兩個方法: `setData(format,data); `用於儲存資料; `getData(format,data); 用於取出資料;`**(取出資料必須在目標元素的 ondrop 事件中,其他事件中無法取到資料)** format:資料的型別:`text/html` ,` text/uri-list` Data:資料:一般來說是字串值 ```html試著把我拖過去
試著也把我拖過去
``` # 二、Web儲存 使用者在瀏覽網頁的時候,可能需要儲存一些資料在本地,之前是採用 Cookie 的方式儲存,但是 Cookie 只能儲存大小為 4k 以內的資料,再多的資料就儲存不了。並且 Cookie 的解析也是很複雜的。 到了h5階段,又提供了兩種方式來儲存 web 資料:sessionStorage 和 localStorage。 ## 1、sessionStorage sessionStorage的使用:將儲存資料到本地。儲存的容量 **5MB** 左右。 注意:sessionStorage 的儲存特點: - **這個資料本質是儲存在當前頁面的記憶體中,意味著其它頁面和瀏覽器無法獲取資料。** - **它的生命週期為關閉當前頁面時,資料會自動清除。** 提供的方法: - **setItem(key,value)** :儲存資料,以鍵值對的方式儲存, - **getItem(key)** :獲取資料,通過指定名稱的key獲取對應的value值, - **removeItem(key)** :刪除資料,通過指定名稱key刪除對應的值, - **clear()** :清空所有儲存的內容。 示例: ```htmlsessionStorage的使用
``` > 1、獲取資料的時候,如果找不到對應名稱的 key,那麼獲取的值為 null。 > > 2、刪除資料的時候,如果 key 值錯誤,不會報錯,但是也不會刪除資料。 ## 2、localStorage localStorage的使用: - 儲存的內容大概 **20MB** 大小 - **不同瀏覽器不能共享資料。但是在同一個瀏覽器的不同視窗中可以共享資料;** - **永久生效,它的資料是儲存在硬碟上,並不會隨著頁面或者瀏覽器的關閉而清除。如果想清除,必須手動清除** `setItem(key,value)`:儲存資料,以鍵值對的方式儲存 `getItem(key)`:獲取資料,通過指定名稱的key獲取對應的value值 `removeItem(key)`:刪除資料,通過指定名稱key刪除對應的值 `clear()`:清空所有儲存的內容 示例: ```html
localStorage的使用:
``` # 三、自定義播放器 我們知道不同的瀏覽器的音訊視訊的播放器控制元件顯示樣式有差異,那麼我們怎麼做一個在任何瀏覽器下都有相同樣式的播放器呢? **常用方法**: - `load()` 載入, - `play()`播放, - `pause()` 暫停。 > 注意:jQuery中沒有提供對視訊播放控制元件的方式,所以如果使用jQuery操作元素,必須將其轉為原生 js 的方式來呼叫這些方法。 **常用屬性**: - `currentTime`:視訊播放的當前進度 - `duration`:視訊的總時長 - `paused`:視訊播放的狀態 **常用事件**: - `oncanplay`:事件在使用者可以開始播放視訊/音訊時出觸發 - `ontimeupdate`:通過該事件報告當前的播放進度 - `onended`:播放完時觸發 示例程式碼: ```html
自定義視訊播放器
00:00:00 \ 00:00:00 ``` ![](https://images2018.cnblogs.com/blog/754332/201807/754332-20180728100957724-1872429251.png) > 1、視訊控制器中的播放暫停按鈕和全屏按鈕都是來自線上字型圖示 font-awesome。 > > 2、進度條一欄實際上有4層,處理可以看到的總時長,快取時長,播放時長外還有一個最頂層的透明層,用於點選進度條實現跳變功能。 ![](https://github.com/Daotin/pic/raw/master/fgx.png)相關推薦
從零開始學 Web 之 HTML5(四)拖拽介面,Web儲存,自定義播放器
>大家好,這裡是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... > > - github:https://github.com/Daotin/Web > - 微信公眾號:[Web前端之巔](https://github.com/Daotin/pi
從零開始學 Web 之 jQuery(四)元素的建立新增與刪除,自定義屬性
一、元素的建立新增和刪除 1、方式一:以物件的方式建立元素 append,appendTo :在被選元素所有子元素的結尾插入內容(增加子元素)。 prepend,prependTo:在被選元素所有子元素的開頭插入元素(增加子元素)。 before:在當前被選元素之後插入內容(相當於增加兄弟元素)。 af
從零開始學Kotlin-控制語句(4)
系列文章 ren kcon tin else andro 格式 當前 break 從零開始學Kotlin基礎篇系列文章 條件控制-if var a=10 var b=20 if(a>b) print(a)
從零開始學Kotlin-枚舉(9)
emc roi 實例 list cnblogs 外部 listener ring 枚舉 從零開始學Kotlin基礎篇系列文章 枚舉的定義 一個類的對象是有限且固定的,這種實例有限且固定的類稱為枚舉類; 枚舉常量用逗號分隔,每個枚舉常量都是一個對象; enum class
從零開始學Hadoop——淺析MapReduce(一)
之前,我們說過Hadoop的兩個核心為HDFS和MapReduce,既然我們已經學習了Hadoop的HDFS,那麼我們就來看看MapReduce是什麼。當然,我們學習的順序還是先看看基
從零開始學Hadoop----淺析HDFS(一)
之前,我們簡單介紹了一下Hadoop,知道他是一個處理大資料的框架。今天我們來看看Hadoop的核心構成之一—-HDFS. 一、基礎概念 1、是什麼
從零開始的RxJava之旅(4)---- RxJava2總結
目錄 正文 為什麼要學 RxJava? 提升開發效率,降低維護成本一直是開發團隊永恆不變的宗旨。近兩年來國內的技術圈子中越來越多的開始提及 RxJava ,越來越多 的應用和麵試中都會有 RxJava ,而就目前的情況,Andro
從零開始學C#——基本語法(二)
基本語法 (菜鳥系列學習教程) C#,又名Csharp,天朝喜歡叫C井。 C#是一種面向物件的程式語言。在面向物件的程式設計方法中,程式有各種相互互動的物件組成。相同種類的物件通常具有相同的型別,或者說,是在先溝通那個的class中。 例如,以Rectangle(矩形)物件
從零開始學寫HTTP伺服器(七)muduo+tinyhttpd
(一)前言 對muduo內嵌的HttpServer進行了稍微的改進,融入了TinyHttpd中對CGI部分內容。 (二)程式碼 (三)CGI 簡單的理解:如果客戶請求的是靜態資料,則web server直接將資料響應給客戶端,如果是動
《一個Android工程的從零開始》-5、base(四) BaseActivity——方法封裝
先扯兩句 昨天發了一篇GitHub版本控制的整合後,今天終於迴歸正事,繼續我們的《一個Android工程的從零開始》,真心有點小開心呢。 今天也是base的BaseActivity完結掉了,昨天我也查了一下其他人的BaseActivity封裝,發現卻比我的篇
從零開始學 Web 之 HTML5(二)表單,多媒體新增內容,新增獲取操作元素,自定義屬性
器) user 對比 style 按鈕 ont mp3 url -- 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博客園:ht
從零開始學 Web 之 HTML5(一)HTML5概述,語義化標籤
一、HTML5簡介 1、什麼是html5 html5 不是一門新的語言,而是我們之前學習的 html 的第五次重大修改版本。 2、html的發展歷史 超文字標記語言(第一版,不叫 HTML 1.0)——在1993年6月作為網際網路工程工作小組(IETF)工作草案發布(並非標準); HTML 2.0——19
從零開始學 Web 之 HTML5(三)網路監聽,全屏,檔案讀取,地理定位介面,應用程式快取
一、網路監聽介面 ononline:網路連通時觸發 onoffline:網路斷開時觸發 window.addEventListener("online", function(){}); window.addEventListener("offline", function(){}); 二、全屏介面 全
從零開始學 Web 之 DOM(四)節點
def clas scrip while p標簽 設置 ner 操作 text 大家好,這裏是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關註。在這裏我會從 Web 前端零基礎開始,一步步學習 Web 相
從零開始學 Web 之 BOM(四)client系列
一、client 系列 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style
從零開始學 Web 之 ES6(四)ES6基礎語法二
一、Promise Promise是一個物件,代表了未來某個將要發生的事件(,這個事件通常是一個非同步操作) 有了Promise物件, 可以將非同步操作以同步的流程表達出來, 避免了層層巢狀的回撥函式(俗稱'回撥地獄')。 ES6的Promise是一個建構函式, 用來生成promise例項。 1、prom
從零開始學 Web 之 JavaScript(四)陣列
大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、陣列 1、陣列
從零開始學 Web 之 Ajax(四)介面文件,驗證使用者名稱唯一性案例
>大家好,這裡是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... > > - github:https://github.com/Daotin/Web > - 微信公眾號:[Web前端之巔](https://github.com/Daotin/pi
從零開始學 Web 之 CSS(四)CSS初始化、定位、overflow、標籤規範
大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、CSS初始化
從零開始學 Web 之 CSS3(四)邊框圖片,過渡
一、邊框圖片 邊框圖片:就是給邊框加圖片背景。 我們之前加的邊框都是純顏色的邊框,那麼我們怎麼給邊框加圖片呢? 原理:把一張圖片分成九宮格的形式,然後一一對應到需要新增邊框的元素上。 並且,新增邊框圖片是以背景的方式新增的,所以會有可能文字覆蓋在邊框的情況,後面也會介紹處理方法。 語法: /* bord