09-HTML5新特性

前言

認(rèn)識(shí)HTML5

  • 之前學(xué)的是HTML4或者HTML4.1蟹地;

  • 網(wǎng)頁開發(fā):

  • html:結(jié)構(gòu) 4.0

  • Css:樣式 2.0

  • Js:行為 用戶交互

  • HTML5 是html4.0 升級(jí)版

  • 結(jié)構(gòu):Html5 螟左、樣式:css3 、行為: API侠仇,有所增強(qiáng),如地理定位瞎抛、web存儲(chǔ)钓株、拖拽等。

  • HTML5并不僅僅只是做為HTML標(biāo)記語言的一個(gè)最新版本斋荞,更重要的是它制定了Web應(yīng)用開發(fā)的一系列標(biāo)準(zhǔn)荞雏,成為第一個(gè)將Web做為應(yīng)用開發(fā)平臺(tái)的HTML語言。

  • HTML5定義了一系列新元素平酿,如新語義標(biāo)簽凤优、智能表單、多媒體標(biāo)簽等蜈彼,可以幫助開發(fā)者創(chuàng)建富互聯(lián)網(wǎng)應(yīng)用筑辨,還提供了一些Javascript API,如地理定位幸逆、重力感應(yīng)棍辕、硬件訪問等,可以在瀏覽器內(nèi)實(shí)現(xiàn)類原生應(yīng)用还绘,甚至結(jié)合Canvas我們可以開發(fā)網(wǎng)頁版游戲楚昭。

  • H5范稱:HTML + CSS3 + JS API

  • 優(yōu)點(diǎn):http://www.intertid.com/school/2014/595568.shtml

語法規(guī)范

  • HTML5在語法規(guī)范上也做了比較大的調(diào)整,去除了許多冗余的內(nèi)容拍顷,書寫規(guī)則更加簡潔抚太、清晰。

  • 特點(diǎn):

  • 更簡潔;

  • 更寬松

    • 單標(biāo)簽不用寫關(guān)閉符號(hào)昔案;
    • 雙標(biāo)簽可省略結(jié)束標(biāo)簽凭舶;
    • html、head爱沟、body帅霜、colgroup、tbody可以完全省略呼伸;
    • 實(shí)際開發(fā)中應(yīng)規(guī)范書寫身冀,不建議太隨意。
  • W3C驗(yàn)證地址:https://validator.w3.org/

語義標(biāo)簽

  • 此章節(jié)學(xué)習(xí)目的為了理解增加語義標(biāo)簽的目的括享,以及各語義標(biāo)簽所表達(dá)的意義搂根,在網(wǎng)頁布局中能夠合理使用標(biāo)簽。

  • 傳統(tǒng)網(wǎng)頁布局:

<!-- 頭部 -->
<div class="header">
     <ul class="nav"></ul>
</div>
<!-- 主體部分 -->
<div class="main">
    <!-- 文章 -->
    <div class="article"></div>
    <!-- 側(cè)邊欄 -->
    <div class="aside"></div>
</div>
<!-- 底部 -->
<div class="footer"></div>
  • H5 經(jīng)典網(wǎng)頁布局:
<!-- 頭部 -->
<header>
    <ul class="nav"></ul>
</header>
<!-- 主體部分 -->
<div class="main">
    <!-- 文章 -->
    <article></article>
    <!-- 側(cè)邊欄 -->
    <aside></aside>
</div>
<!-- 底部 -->
<footer></footer>

常用新語義標(biāo)簽

語義 說明
header 表示頁眉
nav 表示導(dǎo)航
section 表示區(qū)塊
aside 表示側(cè)邊欄 如文章的側(cè)欄
article 表示文章 如文章铃辖、評(píng)論剩愧、帖子、博客
footer 表示頁腳
figure 表示媒介內(nèi)容分組 與 ul > li 做個(gè)比較
mark 表示標(biāo)記 (帶用“UI”娇斩,不怎么用)
progress 表示進(jìn)度 (帶用“UI”仁卷,不怎么用)
time 表示日期
  • 本質(zhì)上新語義標(biāo)簽與<div>穴翩、<span>沒有區(qū)別锦积,只是其具有表意性丰介,使用時(shí)除了在HTML結(jié)構(gòu)上需要注意外背蟆,其它和普通標(biāo)簽的使用無任何差別,可以理解成<div class="nav">相當(dāng)于<nav>哮幢。不要好奇带膀,它只是一個(gè)標(biāo)簽!
  • 盡量避免全局使用header橙垢、footer垛叨、aside等語義標(biāo)簽。

兼容處理

  • 在測(cè)試IE的兼容的時(shí)候钢悲,有一個(gè)叫做ietest 的軟件点额,這個(gè)軟件可以模擬IE6~IE11舔株。

  • 在不支持HTML5新標(biāo)簽的瀏覽器里莺琳,會(huì)將這些新的標(biāo)簽解析成行內(nèi)元素inline對(duì)待,所以我們只需要將其轉(zhuǎn)換成塊元素(block)即可使用载慈。但是在IE9版本以下惭等,并不能正常解析這些新標(biāo)簽,但是可以識(shí)別通過document.createElement('tagName')創(chuàng)建的自定義標(biāo)簽办铡,于是我們的解決方案就是將HTML5的新標(biāo)簽全部通過document.createElement('tagName')來創(chuàng)建一遍辞做,這樣IE低版本也能正常解析HTML5新標(biāo)簽了。

  • 在實(shí)際開發(fā)中我們更多采用的是通過檢測(cè)IE瀏覽器的版本來加載第三方的一個(gè)JS庫來解決兼容問題寡具。

  • IE678不支持H5秤茅,需要引入html5shiv.js文件:

<!--條件注釋,只有IE才能夠識(shí)別-->
<!--[if lte ie 8]>
    <script src="html5shiv.min.js"></script>
<![endif]-->

表單

  • HTML5在Web表單方向做了很大的改進(jìn)童叠,如拾色器框喳、日期/時(shí)間組件等,使表單處理更加高效厦坛。
  • 此章節(jié)學(xué)習(xí)目的五垮,了解HTML5表單的新增的特性,以及PC和移動(dòng)設(shè)備間的差異杜秸,其兼容性較差放仗。

輸入類型 (表單類型,表單元素撬碟,表單屬性,表單事件诞挨。)

輸入類型 說明
email 輸入email格式
tel 手機(jī)號(hào)碼
url 只能輸入url格式
number 只能輸入數(shù)字
search 搜索框
range 范圍莉撇、滑動(dòng)條
color 拾色器
time 時(shí)間
date 日期(不是絕對(duì)的)
datetime 時(shí)間日期
month 月份
week 星期
  • 注:部分類型是針對(duì)移動(dòng)設(shè)備生效的,且具有一定的兼容性亭姥,在實(shí)際應(yīng)用當(dāng)中可選擇性的使用稼钩。

表單元素(標(biāo)簽)

  • <datalist> 數(shù)據(jù)列表與input配合使用
<input type=”text” list=”data”>
<datalist id=”data”>
    <option>男</option>
    <option>女</option>
    <option>不詳</option>
</datalist>
  • <keygen>:生成加密字符串(了解)

  • keygen元素的作用是提供一種驗(yàn)證用戶的可靠方法;

  • keygen元素是密鑰對(duì)生成器(key-pair generator)达罗。當(dāng)提交表單時(shí)坝撑,會(huì)生成兩個(gè)鍵,一個(gè)是私鑰粮揉,一個(gè)公鑰巡李。

  • 私鑰(private key)存儲(chǔ)于客戶端,公鑰(public key)則被發(fā)送到服務(wù)器扶认。公鑰可用于之后驗(yàn)證用戶的客戶端證書(client certificate)侨拦。

  • <output>:不可當(dāng)做數(shù)據(jù)提交,樣式辐宾、作用和label差不多狱从;

  • <meter>:表示度量器,不建議用作進(jìn)度條叠纹;如果不在正常范圍內(nèi)季研,可以顯示黃色警告色;

<meter value="81" min="0" max="100" low="60" high="80"/>
  • 樣式和<progress></progress>差不多誉察,但是擁有警告等顏色与涡;
  • Max-width;
  • Min-width持偏。

表單屬性

  • placeholder:占位符驼卖;
  • autofocus:自動(dòng)獲取焦點(diǎn);
  • name:給表單添加name屬性之后鸿秆,可以顯示歷史輸入的內(nèi)容酌畜;
  • multiple:文件上傳多選或多個(gè)郵箱地址;
  • autocomplete:自動(dòng)完成填充卿叽,用于表單元素桥胞,也可用于表單自身(on/off);
  • form:指定表單項(xiàng)屬于哪個(gè)form附帽,處理復(fù)雜表單時(shí)會(huì)需要埠戳;
  • novalidate:關(guān)閉驗(yàn)證,可用于<form>標(biāo)簽蕉扮;
  • required:必填項(xiàng)整胃,表示此表單不能為空;
  • pattern:正則表達(dá)式喳钟,驗(yàn)證表單屁使、手機(jī)號(hào)在岂,如
<input type="tel" name="tel" required="required" pattern="^(\+86)?1[3,5,8](\d{9})$">
  • 表單重寫沒有提及,自行驗(yàn)證蛮寂,共包含應(yīng)用于提交按鈕上蔽午,如:<input type="submit" formaction="xxx.php">

表單事件

  • oninput:用戶輸入內(nèi)容時(shí)觸發(fā)酬蹋,可用于移動(dòng)端輸入字?jǐn)?shù)統(tǒng)計(jì)及老;
  • oninvalid 驗(yàn)證不通過時(shí)觸發(fā)。
input.oninvalid = function(){
    this.setCustomValidity("你郵箱輸錯(cuò)掉了范抓,現(xiàn)在重新輸入");
};
案例練習(xí)
  • 注冊(cè)表單
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        form{
            width: 200px;
            margin: 40px auto;
        }
    </style>
</head>
<body>
    <form>
        <fieldset>
            <legend>注冊(cè)信息</legend>
            <label>手機(jī)號(hào):<input type="tel" name="b" id="userName" pattern="/^((13[0-9])|(15[^4,\D])|(18[0-9]))\d{8}$/"></label><br>
            <label>密&nbsp&nbsp&nbsp碼:<input type="password" name="c" id="pwd"></label><br>
            <input type="submit" style="width: 200px;">
        </fieldset>
    </form>
    <script>
        var userName = document.getElementById("userName");
        var pwd = document.getElementById("pwd");
        userName.onblur = function () {
            this.oninvalid = function () {
                this.setCustomValidity("您輸入的手機(jī)號(hào)有誤");
            }
        }
    </script>
</body>
</html>

多媒體

  • 并非所有用戶的瀏覽器都安裝了Flash插件骄恶,并且移動(dòng)設(shè)備的瀏覽器并不支持Flash插件。通過HTML5播放音頻/視頻匕垫,以及針對(duì)不同瀏覽器所支持的格式僧鲁,做多瀏覽器兼容處理。

音頻

  • HTML5通過<audio>標(biāo)簽來解決音頻播放的問題象泵。使用非常簡單:
<audio scr="xxx.mp3"></audio>
  • 并且可以通過附加屬性可以更友好控制音頻的播放寞秃,如:

  • autoplay:自動(dòng)播放;

  • controls:是否顯不默認(rèn)播放控件;

  • loop:循環(huán)播放;

  • preload:預(yù)加載俩莽,同時(shí)設(shè)置autoplay時(shí)有些屬性會(huì)失效。

  • 由于版權(quán)等原因堂淡,不同的瀏覽器可支持播放的格式是不一樣的:(目前馋缅,audio元素支持的三種音頻格式如下)

格式 IE9 Firefox3.5 Opera3.5 Chrome3.0 Safari3.0
Ogg Vorbis
MP3
Wav
  • 兼容性寫法
<audio>
    <source src="music.mp3">
    <source src="music.ogg">
    <source src="music.wav">
    抱歉扒腕,您的瀏覽器不支持音頻播放
</audio>
  • 瀏覽器兼容哪一種格式,會(huì)自動(dòng)獲取對(duì)應(yīng)的格式進(jìn)行播放萤悴,不會(huì)顯示最下面的文字瘾腰;如果瀏覽器都不兼容這三種音頻格式(IE678),就會(huì)顯示最下面的文字覆履。

視頻

  • HTML5通過<video>標(biāo)簽來解決視頻播放的問題蹋盆。同音頻標(biāo)簽用法完全一樣,<video>使用也相當(dāng)簡單硝全,如下所示:
<video scr="xxx.mp4" controls="controls"></video>
  • 同樣栖雾,通過附加屬性可以更友好的控制視頻的播放:

  • autoplay:自動(dòng)播放;

  • controls:是否顯示默認(rèn)播放控件伟众;

  • loop:循環(huán)播放析藕;

  • preload:預(yù)加載,同時(shí)設(shè)置了autoplay凳厢,此屬性將失效账胧;

  • width:設(shè)置播放窗口寬度竞慢;

  • height:設(shè)置播放窗口的高度。

  • 由于版權(quán)等原因治泥,不同的瀏覽器可支持播放的格式是不一樣的筹煮,當(dāng)前video元素支持的三種視頻格式如下:

格式 IE Firefox Opera Chrome Safari
Ogg No 3.5+ 10.5+ 5.0+ No
MPEG4 9.0+ No No 5.0+ 3.0+
WebM No 4.0+ 10.6+ 6.0+ No

DOM擴(kuò)展

獲取元素

  • 老版本:document.getElementsByClassName ('class');:通過類名獲取元素,以類數(shù)組形式存在居夹;

  • H5:

  • document.querySelector('div');:通過CSS選擇器獲取符合匹配條件的第一個(gè)元素败潦;

  • document.querySelector(".box");第一個(gè)元素;

  • document.querySelector("#box");第一個(gè)元素准脂;

  • document.querySelectorAll('selector'); 通過CSS選擇器獲取元素变屁,以類數(shù)組形式存在。

  • 在H5中意狠,DOM新增的獲取元素功能類似jQuery中的方法:(jQuery方法獲取到的是數(shù)組)

  • $(".box");粟关;

  • $("#box");

  • $("div.box");环戈。

類名操作

  • 老版:只能直接指定闷板,如box1.className="content hide";
  • jQuery中:addClass()/removeClass()/hasClass()/toggleClass()院塞;
  • H5中遮晚,新增功能和jQuery中方法一樣好用:
  • Node.classList.add('class');:添加class;
  • Node.classList.remove('class');:移除class拦止;
  • Node.classList.toggle('class');: 切換class县遣,有則移除,無則添加汹族;
  • Node.classList.contains('class');: 檢測(cè)是否存在class萧求;
  • Node指一個(gè)有效的DOM節(jié)點(diǎn),是一個(gè)通稱顶瞒。

自定義屬性data-*=""

  • 在HTML5中我們可以自定義屬性必須要以data-開頭夸政,例如data-info="我是自定義屬性";,通過Node.dataset['info'];我們便可以獲取到自定義的屬性值榴徐。
  • Node.dataset是以類對(duì)象形式存在的守问;
  • 當(dāng)我們?nèi)缦赂袷皆O(shè)置時(shí),則需要以駝峰格式才能正確獲瓤幼省:
data-my-name="yijiang";
//獲取
Node.dataset['myName']
案例練習(xí) (tab 切換)
  • 方法一:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tab欄練習(xí)</title>

    <style>
        body{
            background-color: #f0f0f0;
            margin: 0;
            padding: 0;
        }
        .tab{
            margin: 30px auto;
            width: 400px;
            background-color: #fafafa;
        }

        nav{
            height: 40px;
            background-color: #009999;
            display:flex;
            text-align: center;
            line-height:40px;
            overflow: hidden;
        }
        nav a{
            text-decoration: none;
            width: 100px;
            border-right: 1px solid #fff;
        }
        nav a:last-child{
            border-right: none;
        }
        nav a.active{
            background-color: #00dddd;
        }

        .tab ol{
            line-height: 30px;
        }
        .tab .cont{
            overflow: hidden;
            display: none;
        }

    </style>
</head>
<body>
   <div class="tab">
       <nav>
           <a href="javascript:;" data-content="local" class="active">本地新聞</a>
           <a href="javascript:;" data-content="global">國際新聞</a>
           <a href="javascript:;" data-content="sport">體育新聞</a>
           <a href="javascript:;" data-content="funny">娛樂新聞</a>
       </nav>

       <section class="cont" id="local" style="display: block">
           <ol>
               <li>111南方大旱耗帕,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>111南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>111南方大旱袱贮,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>111南方大旱仿便,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>111南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>111南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>111南方大旱探越,農(nóng)作物減產(chǎn)絕收面積上畝</li>
           </ol>
       </section>
       <section class="cont" id="global">
           <ol>
               <li>222南方大旱狡赐,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱钦幔,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱枕屉,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱鲤氢,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱搀擂,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
           </ol>
       </section>
       <section class="cont" id="sport">
           <ol>
               <li>333南方大旱卷玉,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>333南方大旱哨颂,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>333南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>333南方大旱相种,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>333南方大旱威恼,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>333南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>333南方大旱寝并,農(nóng)作物減產(chǎn)絕收面積上畝</li>
           </ol>
       </section>
       <section class="cont" id="funny">
           <ol>
               <li>444南方大旱箫措,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>444南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>444南方大旱衬潦,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>444南方大旱斤蔓,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>444南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>444南方大旱镀岛,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>444南方大旱弦牡,農(nóng)作物減產(chǎn)絕收面積上畝</li>
           </ol>
       </section>
   </div>

    <script>
        var aArr = document.querySelectorAll("nav a");

        for(var i=0; i<aArr.length; i++){
            aArr[i].onclick = function () {
                //獲取到當(dāng)前選中的標(biāo)簽
                var current = document.querySelector(".active");
                //獲取當(dāng)前標(biāo)簽的對(duì)應(yīng)section的id
                console.log(current);
                var currentID = current.dataset["content"];
                //取消當(dāng)前選中狀態(tài)
                current.classList.remove("active");
                //隱藏對(duì)應(yīng)的內(nèi)容部分
                document.querySelector("#"+currentID).style.display = "none";

                //改變當(dāng)前選中標(biāo)簽狀態(tài)
                this.classList.add("active");
                //獲取當(dāng)前選中狀態(tài)對(duì)應(yīng)的section的id
                var thisID = this.dataset["content"];
                //顯示對(duì)應(yīng)的內(nèi)容
                document.querySelector("#"+thisID).style.display = "block";
            }
        }
    </script>
</body>
</html>
  • 方法二:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tab欄練習(xí)</title>

    <style>
        body{
            background-color: #f0f0f0;
            margin: 0;
            padding: 0;
        }
        .tab{
            margin: 30px auto;
            width: 400px;
            background-color: #fafafa;
        }

        nav{
            height: 40px;
            background-color: #009999;
            display:flex;
            text-align: center;
            line-height:40px;
            overflow: hidden;
        }
        nav a{
            text-decoration: none;
            width: 100px;
            border-right: 1px solid #fff;
        }
        nav a:last-child{
            border-right: none;
        }
        nav a.active{
            background-color: #00dddd;
        }

        .tab ol{
            line-height: 30px;
        }
        .tab .cont{
            overflow: hidden;
            display: none;
        }

    </style>
</head>
<body>
   <div class="tab">
       <nav>
           <a href="javascript:;" data-content="local">本地新聞</a>
           <a href="javascript:;" data-content="global">國際新聞</a>
           <a href="javascript:;" data-content="sport">體育新聞</a>
           <a href="javascript:;" data-content="funny">娛樂新聞</a>
       </nav>

       <section class="cont" id="local">
           <ol>
               <li>111南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>111南方大旱漂羊,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>111南方大旱驾锰,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>111南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>111南方大旱拨与,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>111南方大旱稻据,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>111南方大旱艾猜,農(nóng)作物減產(chǎn)絕收面積上畝</li>
           </ol>
       </section>
       <section class="cont" id="global">
           <ol>
               <li>222南方大旱买喧,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱匆赃,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱淤毛,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱算柳,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱低淡,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>222南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
           </ol>
       </section>
       <section class="cont" id="sport">
           <ol>
               <li>333南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>333南方大旱蔗蹋,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>333南方大旱何荚,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>333南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>333南方大旱猪杭,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>333南方大旱餐塘,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>333南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
           </ol>
       </section>
       <section class="cont" id="funny">
           <ol>
               <li>444南方大旱皂吮,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>444南方大旱戒傻,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>444南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>444南方大旱蜂筹,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>444南方大旱需纳,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>444南方大旱,農(nóng)作物減產(chǎn)絕收面積上畝</li>
               <li>444南方大旱艺挪,農(nóng)作物減產(chǎn)絕收面積上畝</li>
           </ol>
       </section>
   </div>

    <script>
        var aArr = document.querySelectorAll("nav a");

        (function (index) {

            for(var i=0; i<aArr.length; i++){
                //選中一個(gè)進(jìn)行初始化
                if (i == index){
                    //給對(duì)應(yīng)的標(biāo)簽綁定選中狀態(tài)
                    aArr[i].classList.add("active");
                    //獲取對(duì)應(yīng)的section的id
                    var myID = aArr[i].dataset["content"];
                    document.querySelector("#"+myID).style.display = "block";
                }
                console.log(aArr[index]);

                //綁定點(diǎn)擊事件
                aArr[i].onclick = function () {
                    //獲取到當(dāng)前選中的標(biāo)簽
                    var current = document.querySelector(".active");
                    //獲取當(dāng)前標(biāo)簽的對(duì)應(yīng)section的id
                    console.log(current);
                    var currentID = current.dataset["content"];
                    //取消當(dāng)前選中狀態(tài)
                    current.classList.remove("active");
                    //隱藏對(duì)應(yīng)的內(nèi)容部分
                    document.querySelector("#"+currentID).style.display = "none";

                    //改變當(dāng)前選中標(biāo)簽狀態(tài)
                    this.classList.add("active");
                    //獲取當(dāng)前選中狀態(tài)對(duì)應(yīng)的section的id
                    var thisID = this.dataset["content"];
                    //顯示對(duì)應(yīng)的內(nèi)容
                    document.querySelector("#"+thisID).style.display = "block";
                }
            }
        })(0);

    </script>
</body>
</html>

H5新增API

多媒體

  • 方法:load() 加載不翩、play() 播放、pause() 暫停麻裳;

  • 屬性:

  • currentTime 視頻播放的當(dāng)前進(jìn)度慌盯;

  • duration:視頻的總時(shí)間;

  • paused:視頻播放的狀態(tài)掂器。

  • 事件:

  • oncanplay:事件在用戶可以開始播放視頻/音頻(audio/video)時(shí)觸發(fā)亚皂;

  • ontimeupdate:通過該事件來報(bào)告當(dāng)前的播放進(jìn)度;

  • onended:播放完時(shí)觸發(fā)国瓮。

  • 全屏切換:video.webkitRequestFullScreen();灭必。

  • 案例:視頻播放器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>視頻播放器</title>

    <link rel="stylesheet" href="../fontawesome/css/font-awesome.min.css">
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        figure{
            width: 720px;
            height: 410px;
            border: 1px solid #000;
            margin: 40px auto;
        }
        figcaption{
            text-align: center;
            line-height: 40px;
            font-family: "Microsoft Yahei";
            font-size: 24px;
        }

        .player{
            width: 720px;
            height: 360px;
            border: 1px solid #000;
            margin: 10px auto;
            background: #000 url(h5-source/loading.gif) center no-repeat;
            background-size: auto 100%;
            position: relative;
            border-radius: 20px;
        }
        .player video{
            display: block;
            height: 100%;
            margin: 0 auto;
        }

        .controls{
            width: 700px;
            height: 40px;
            position: absolute;
            left: 10px;
            bottom: 10px;
            background: rgba(200,120,140,0.8);
        }
        .switch{
            width: 20px;
            height: 20px;
            position: absolute;
            left: 10px;
            top: 10px;
            background-color: #bbb;
            text-align: center;
            line-height: 20px;
            color: white;
        }

        progress{
            width: 450px;
            height: 10px;
            background-color: white;
            /*color: red;*/
            position: absolute;
            left: 40px;
            top: 15px;
        }
        .time{
            position: absolute;
            left: 500px;
            line-height: 40px;
        }
        .extend{
            width: 20px;
            height: 20px;
            position: absolute;
            top: 10px;
            right: 10px;
            color: white;
            text-align: center;
            line-height: 20px;
        }

    </style>
</head>
<body>
    <figure>
        <figcaption>視頻播放器</figcaption>

        <div class="player">
            <video src="h5-source/fun.mp4"></video>
            <div class="controls">
                <a href="#" class="switch icon-play"></a>
                <progress value="20" max="100"></progress>
                <div class="time">
                    <span class="currentTime">--:--:--</span>
                    /
                    <span class="totalTime">--:--:--</span>
                </div>
                <a href="#" class="extend icon-resize-full"></a>
            </div>
        </div>
    </figure>

    <script>
        //獲取視頻
        var video = document.querySelector("video");
        //播放暫停按鈕
        var switchBtn = document.querySelector(".switch");
        //進(jìn)度條
        var progressBar = document.querySelector("progress");
        //當(dāng)前時(shí)間
        var currentTime = document.querySelector(".currentTime");
        //總時(shí)間
        var totalTime = document.querySelector(".totalTime");
        //全半屏
        var extendBtn = document.querySelector(".extend");

        //2.播放暫停按鈕點(diǎn)擊
        switchBtn.onclick = function () {
            //判斷按鈕狀態(tài),如果當(dāng)前暫停乃摹,點(diǎn)擊之后開始播放禁漓,并更改按鈕狀態(tài),反之同理
            if (video.paused){
                this.classList.remove("icon-play");
                this.classList.add("icon-pause");
                video.play();
            }else {
                this.classList.remove("icon-pause");
                this.classList.add("icon-play");
                video.pause();
            }
        };

        var totalT = 0;
        //1.視頻加載完成之后孵睬,進(jìn)入可播放狀態(tài)
        video.oncanplay = function () {
            alert(111);
            //獲取總時(shí)間
            console.log(video.duration);
            totalT = video.duration;
            //時(shí)
            var h = Math.floor(totalT/3600);
            //分
            var m = Math.floor(totalT%3600/60);
            //秒
            var s = Math.floor(totalT%60);

            //把格式化成 00:00:00
            h = h>=10 ? h:"0"+h;
            m = m>=10 ? m:"0"+m;
            s = s>=10 ? s:"0"+m;
            totalTime.innerHTML = h + ":" + m + ":" + s;
            //設(shè)置當(dāng)前播放時(shí)間為 00:00:00
            currentTime.innerHTML = "00:00:00";

        };


        var currentT = 0;
        //3.視頻播放過程中播歼,要不斷更新當(dāng)前時(shí)間和當(dāng)前進(jìn)度條
        video.ontimeupdate = function () {
            currentT = video.currentTime;
            //更新視頻播放進(jìn)度
            progressBar.value = currentT / totalT * 100;

            //時(shí)
            var h = Math.floor(currentT/3600);
            //分
            var m = Math.floor(currentT%3600/60);
            //秒
            var s = Math.floor(currentT%60);
            //化成格式 00:00:00
            h = h>=10 ? h:"0"+h;
            m = m>=10 ? h:"0"+m;
            s = s>=10 ? s:"0"+s;
            currentTime.innerHTML = h + ":" + m + ":" + s;
        };

        //4.全半屏播放
        extendBtn.onclick = function () {
            video.webkitRequestFullScreen();
        }
    </script>
</body>
</html>

拖拽

  • 在HTML5的規(guī)范中,我們可以通過為元素增加屬性draggable="true";來設(shè)置此元素是否可以進(jìn)行拖拽操作掰读,其中圖片秘狞、鏈接默認(rèn)是開啟的。
拖拽元素
  • 頁面中設(shè)置了draggable="true"屬性的元素蹈集。
目標(biāo)元素
  • 頁面中任何一個(gè)元素都可以成為目標(biāo)元素烁试。
事件監(jiān)聽
拖拽元素 說明
ondrag 應(yīng)用于拖拽元素,整個(gè)拖拽過程都會(huì)調(diào)用
ondragstart 應(yīng)用于拖拽元素拢肆,當(dāng)拖拽開始時(shí)調(diào)用
ondragleave 應(yīng)用于拖拽元素减响,當(dāng)鼠標(biāo)離開拖拽元素原位置時(shí)調(diào)用
ondragend 應(yīng)用于拖拽元素靖诗,當(dāng)拖拽結(jié)束時(shí)調(diào)用
目標(biāo)元素 說明
ondragenter 應(yīng)用于目標(biāo)元素,當(dāng)拖拽元素進(jìn)入時(shí)調(diào)用
ondragover 應(yīng)用于目標(biāo)元素支示,當(dāng)拖拽元素在目標(biāo)元素上時(shí)連續(xù)觸發(fā)
ondrop 應(yīng)用于目標(biāo)元素刊橘,當(dāng)在目標(biāo)元素上松開鼠標(biāo)時(shí)調(diào)用
ondragleave 應(yīng)用于目標(biāo)元素,當(dāng)鼠標(biāo)離開目標(biāo)元素時(shí)調(diào)用
  • 說明:

  • ondragover 事件規(guī)定在何處放置被拖動(dòng)的數(shù)據(jù)颂鸿。
    默認(rèn)地伤为,無法將數(shù)據(jù)/元素放置到其他元素中。如果需要設(shè)置允許放置据途,我們必須阻止對(duì)元素的默認(rèn)處理方式绞愚;

  • 這要通過調(diào)用ondragover事件的event.preventDefault()方法。

  • 將一個(gè)盒子中的元素拖拽到另外一個(gè)盒子中颖医。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>拖拽</title>

    <style>
        .box1,.box2{
            width: 300px;
            height: 300px;
            border: 1px solid #000;
            float: left;
            margin: 40px;
        }
        .sBox{
            width: 75px;
            height: 75px;
            background-color: #f00;
            float: left;
            border-radius: 50%;
            text-align: center;
            line-height: 75px;
        }
    </style>
</head>
<body>
<div class="box1">
    <div class="sBox" draggable="true">1</div>
    <div class="sBox" draggable="true">2</div>
    <div class="sBox" draggable="true">3</div>
    <div class="sBox" draggable="true">4</div>
    <div class="sBox" draggable="true">5</div>
    <div class="sBox" draggable="true">6</div>
    <div class="sBox" draggable="true">7</div>
    <div class="sBox" draggable="true">8</div>
</div>
    <div class="box2"></div>

    <script>
        //獲取事件源
        var sBoxs = document.querySelectorAll(".sBox");
        var box1 = document.querySelector(".box1");
        var box2 = document.querySelector(".box2");

        var temp = null;
        //給各個(gè)小盒子綁定事件
        for(var i=0; i<sBoxs.length; i++){
            sBoxs[i].ondragstart = function () {
                temp = this;
            };
        }

        //給目標(biāo)元素綁定事件
        box2.ondragover = function (event) {
            event.preventDefault();
        };
        box2.ondrop = function () {
            this.appendChild(temp);
        };

        box1.ondragover = function (event) {
            event.preventDefault();
        };
        box1.ondrop = function () {
            this.appendChild(temp);
        }
    </script>
</body>
</html>

全屏

  • HTML5規(guī)范允許用戶自定義網(wǎng)頁上任一元素全屏顯示位衩;

  • requestFullscreen() 開啟全屏顯示;

  • cancleFullscreen() 關(guān)閉全屏顯示熔萧;

  • 不同瀏覽器需要添加前綴如:

  • webkitRequestFullScreen糖驴、

  • mozRequestFullScreen

  • webkitCancleFullScreen、

  • mozCancleFullScreen

  • 兼容性寫法:

var docElm = document.documentElement;
    if (docElm.requestFullscreen) {
       docElm.requestFullscreen();
    }
    else if (docElm.mozRequestFullScreen) {
       docElm.mozRequestFullScreen();
    }
    else if (docElm.webkitRequestFullScreen) {
       docElm.webkitRequestFullScreen();
    }
  • 通過document.fullScreen檢測(cè)當(dāng)前是否處于全屏佛致。

  • 不同瀏覽器需要添加前綴

  • document.webkitIsFullScreen贮缕、

  • document.mozFullScreen

  • 全屏偽類:(了解)

  • :full-screen .box {}、

  • :-webkit-full-screen {}俺榆、

  • :moz-full-screen {}

Web存儲(chǔ)

  • 隨著互聯(lián)網(wǎng)的快速發(fā)展感昼,基于網(wǎng)頁的應(yīng)用越來越普遍,同時(shí)也變的越來越復(fù)雜罐脊,為了滿足各種各樣的需求定嗓,會(huì)經(jīng)常性在本地存儲(chǔ)大量的數(shù)據(jù),傳統(tǒng)方式我們以document.cookie來進(jìn)行存儲(chǔ)的萍桌,但是由于其存儲(chǔ)大小只有4k左右宵溅,并且解析也相當(dāng)?shù)膹?fù)雜,給開發(fā)帶來諸多不便上炎,HTML5規(guī)范則提出解決方案恃逻。

  • Storage 存儲(chǔ)

  • window.sessionStorage:會(huì)話存儲(chǔ);

  • window.localStorage(向本地保存數(shù)據(jù),有可能在瀏覽器內(nèi)存里面藕施,有可能在硬盤上面)寇损。

一、特性
  • 設(shè)置铅碍、讀取方便润绵;
  • 容量較大,sessionStorage約5M胞谈、localStorage約20M;
  • 只能存儲(chǔ)字符串,可以將對(duì)象JSON.stringify() 編碼后存儲(chǔ)烦绳。
二卿捎、window.sessionStorage
  • 生命周期為關(guān)閉瀏覽器窗口;
  • 在同一個(gè)窗口下數(shù)據(jù)可以共享。
三径密、window.localStorage
  • 永久生效午阵,除非手動(dòng)刪除;
  • 可以多窗口共享享扔。
四底桂、方法詳解
  • setItem(key, value):設(shè)置存儲(chǔ)內(nèi)容;
  • getItem(key):讀取存儲(chǔ)內(nèi)容惧眠;
  • removeItem(key):刪除鍵值為key的存儲(chǔ)內(nèi)容籽懦;
  • clear():清空所有存儲(chǔ)內(nèi)容;
  • key(n):以索引值來獲取存儲(chǔ)內(nèi)容(了解)氛魁。
  • 案例:記住用戶名
五暮顺、其它(了解)
  • WebSQL、IndexDB秀存,瀏覽器中的本地?cái)?shù)據(jù)庫捶码;
  • 已經(jīng)被w3c 放棄了..
  • 生命周期差異,存儲(chǔ)空間差異或链。

網(wǎng)絡(luò)狀態(tài)

  • 我們可以通過window.onLine來檢測(cè)惫恼,用戶當(dāng)前的網(wǎng)絡(luò)狀況,返回一個(gè)布爾值;
  • window.online用戶網(wǎng)絡(luò)連接時(shí)被調(diào)用澳盐;
  • window.offline用戶網(wǎng)絡(luò)斷開時(shí)被調(diào)用尤筐。
<script>
    window.online = function () {
        alert("聯(lián)網(wǎng)");
    };
    window.addEventListener("offline",function () {
        alert("已斷網(wǎng)");
    });
</script>

應(yīng)用緩存

  • HTML5中我們可以輕松的構(gòu)建一個(gè)離線(無網(wǎng)絡(luò)狀態(tài))應(yīng)用,只需要?jiǎng)?chuàng)建一個(gè)cache manifest文件洞就。
一盆繁、優(yōu)勢(shì)
  1. 可配置需要緩存的資源;
  • 網(wǎng)絡(luò)無連接應(yīng)用仍可用旬蟋;
  • 本地讀取緩存資源油昂,提升訪問速度,增強(qiáng)用戶體驗(yàn)倾贰;
  • 減少請(qǐng)求冕碟,緩解服務(wù)器負(fù)擔(dān)。
二匆浙、緩存清單
  • 一個(gè)普通文本文件安寺,其中列出了瀏覽器應(yīng)緩存以供離線訪問的資源,推薦使用.appcache為后綴名首尼,添加MIME類型:
  • AddType text/cache-manifest .appcache
  • 在.appcache文件中的內(nèi)容格式如下:
CACHE MANIFEST
#下面是要緩存的文件
CACHE:
        http://xxx.jpg
  • 例如我們創(chuàng)建了一個(gè)名為demo.appcache的文件挑庶,然后在需要應(yīng)用緩存在頁面的根元素(html)添加屬性manifest="demo.appcache"言秸,路徑要保證正確。
三迎捺、manifest文件格式
  1. 頂行寫CACHE MANIFEST举畸;
  2. 注釋使用#開頭;
  3. CACHE:換行凳枝,指定我們需要緩存的靜態(tài)資源抄沮,如.css、image岖瑰、js等叛买;
  • NETWORK:換行,指定需要在線訪問(聯(lián)網(wǎng)才能訪問)的資源蹋订,可使用通配符率挣;
  • FALLBACK:當(dāng)前頁面無法訪問時(shí)退回的頁面(回退;后退),寫法如下:
  • 換行辅辩,當(dāng)被緩存的文件找不到時(shí)的備用資源:
FALLBACK:
        4O4.html
四难礼、其它
  1. CACHE:可以省略,這種情況下將需要緩存的資源寫在CACHE MANIFEST玫锋;
  2. 可以指定多個(gè)CACHE: NETWORK: FALLBACK:蛾茉,無順序限制;
  • CACHE:需要緩存那些資源;
  • NETWORK:不需要緩存那些資源撩鹿,指定必須在聯(lián)網(wǎng)狀態(tài)下才能訪問的資源谦炬;
  • FALLBACK:當(dāng)訪問不到某個(gè)資源時(shí),自動(dòng)由另外一個(gè)資源替換节沦。
CACHE MANIFEST
CACHE:(以下部分是需要緩存的資源)
    1.jpg
    js/jquery.min.js
NETWORK:
    js/demo.js
    # 可以使用 * 號(hào)替代
FALLBACK:
    one.css two.css
    //會(huì)緩存two.css 當(dāng)找不到one.css 會(huì)去找two.css 文件.
  • #表示注釋键思,只有當(dāng)demo.appcache文件內(nèi)容發(fā)生改變時(shí)或者手動(dòng)清除緩存后,才會(huì)重新緩存甫贯。
  • chrome 可以通過chrome://appcache-internals/工具和離線(offline)模式來調(diào)試管理應(yīng)用緩存吼鳞。

地理定位

  • 在HTML規(guī)范中,增加了獲取用戶地理信息的API叫搁,這樣使得我們可以基于用戶位置開發(fā)互聯(lián)網(wǎng)應(yīng)用赔桌,即基于位置服務(wù) (Location Base Service)。
一渴逻、獲取地理信息方式
  1. IP地址疾党;
  • 三維坐標(biāo):

  • GPS(Global Positioning System,全球定位系統(tǒng)):
    目前世界上在用或在建的第2代全球衛(wèi)星導(dǎo)航系統(tǒng)(GNSS)有:1.美國 Global Positioning System (全球定位系統(tǒng)) 簡稱GPS惨奕;.2.蘇聯(lián)/俄羅斯 GLOBAL NAVIGATION SATELLITE SYSTEM (全球衛(wèi)星導(dǎo)航系統(tǒng))簡稱GLONASS(格洛納斯)雪位;3.歐盟(歐洲是不準(zhǔn)確的說法,包括中國在內(nèi)的諸多國家也參與其中)Galileo satellite navigation system(伽利略衛(wèi)星導(dǎo)航系統(tǒng)) 簡稱GALILEO(伽利略)梨撞;4.中國 BeiDou(COMPASS) Navigation Satellite System(北斗衛(wèi)星導(dǎo)航系統(tǒng))簡稱 BDS 雹洗;5.日本 Quasi-Zenith Satellite System (準(zhǔn)天頂衛(wèi)星系統(tǒng)) 簡稱QZSS 香罐;6.印度 India Regional Navigation Satellite System(印度區(qū)域衛(wèi)星導(dǎo)航系統(tǒng))簡稱IRNSS;以上6個(gè)系統(tǒng)中國都能使用队伟。

  • Wi-Fi穴吹;

  • 手機(jī)信號(hào)幽勒。

  • 用戶自定義數(shù)據(jù):

  • 如下對(duì)不同獲取方式的優(yōu)缺點(diǎn)進(jìn)行了比較嗜侮,瀏覽器會(huì)自動(dòng)以最優(yōu)方式去獲取用戶地理信息。

  • 位置信息獲取方式對(duì)比:

數(shù)據(jù)源 優(yōu)點(diǎn) 缺點(diǎn)
IP地址 任何地方都可用啥容;在服務(wù)器端處理 不精確(經(jīng)常出錯(cuò)锈颗,一般精確到市級(jí));運(yùn)算代價(jià)大
GPS 很精確 定位時(shí)間長咪惠,耗電量大击吱;室內(nèi)效果差;需要額外硬件設(shè)備支持
WiFi 精確遥昧;可在室內(nèi)使用覆醇;簡單、快捷 在鄉(xiāng)村這些WiFi接入點(diǎn)少的地區(qū)無法使用
手機(jī)信號(hào) 相當(dāng)精確炭臭;可在室內(nèi)使用永脓;簡單、快捷 需要能夠訪問手機(jī)或其modem設(shè)備
用戶自定義 可獲得比程序定位服務(wù)更準(zhǔn)確的位置數(shù)據(jù)鞋仍;用戶自行輸入可能比自動(dòng)檢測(cè)更快 可能很不準(zhǔn)確常摧,特別是當(dāng)用戶位置變更后
二、隱私
  • HTML5 Geolocation(地理位置定位) 規(guī)范提供了一套保護(hù)用戶隱私的機(jī)制威创。必須先得到用戶明確許可落午,才能獲取用戶的位置信息。
三肚豺、API詳解
  • navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options) 獲取當(dāng)前地理信息溃斋;

  • navigator.geolocation.watchPosition(successCallback, errorCallback, options) 重復(fù)獲取當(dāng)前地理信息;

  • 當(dāng)成功獲取地理信息后吸申,會(huì)調(diào)用succssCallback(position)梗劫,并返回一個(gè)包含位置信息的對(duì)象position。

  • 獲取坐標(biāo)Coords(坐標(biāo)):position.coords.latitude緯度呛谜、
    position.coords.longitude經(jīng)度在跳;

  • 當(dāng)獲取地理信息失敗后,會(huì)調(diào)用errorCallback(error)隐岛,并返回錯(cuò)誤信息error猫妙;

  • 可選參數(shù)options對(duì)象可以調(diào)整位置信息數(shù)據(jù)收集方式。

  • 根據(jù)興趣可以玩玩全景地圖和VR(vr用Pano2VR工具可以制作聚凹,可百度查看全景地圖制作)割坠。

  • 兼容:

<script>
    if (navigator.geolocation){
        navigator.geolocation.getCurrentPosition(successCallBack,errorCallBack);
    }else {
        alert("對(duì)不起齐帚,您的瀏覽器不能獲取到位置...");
    }
    //成功獲取位置時(shí)回調(diào)
    function successCallBack(position) {
        console.log(position.coords.latitude);
        console.log(position.coords.longitude);
    }
    //獲取位置失敗時(shí)回調(diào)
    function errorCallBack(error) {
        console.log(error);
    }
</script>
  • 案例:
  • 百度地圖案:
    • 使用百度地圖API,然后選擇jsAPI彼哼,然后根據(jù)需要選擇對(duì)應(yīng)的地圖樣式对妄,賦值對(duì)應(yīng)的代碼到項(xiàng)目中;
    • 在API控制臺(tái)生成秘鑰敢朱,并將秘鑰放到代碼對(duì)應(yīng)的位置剪菱;
    • 傳入對(duì)應(yīng)的經(jīng)緯度。

歷史

  • 提供window.history拴签,對(duì)象我們可以管理歷史記錄孝常,可用于單頁面應(yīng)用,Single Page Application蚓哩,可以無刷新改變網(wǎng)頁內(nèi)容构灸。
  • 舊版本瀏覽器..
  • history.back() 回退;
  • history.forward() 前進(jìn)岸梨。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末喜颁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子曹阔,更是在濱河造成了極大的恐慌半开,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件次兆,死亡現(xiàn)場(chǎng)離奇詭異稿茉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)芥炭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門漓库,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人园蝠,你說我怎么就攤上這事渺蒿。” “怎么了彪薛?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵茂装,是天一觀的道長。 經(jīng)常有香客問我善延,道長少态,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任易遣,我火速辦了婚禮彼妻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己侨歉,他們只是感情好屋摇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幽邓,像睡著了一般炮温。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牵舵,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天柒啤,我揣著相機(jī)與錄音,去河邊找鬼棋枕。 笑死白修,一個(gè)胖子當(dāng)著我的面吹牛妒峦,可吹牛的內(nèi)容都是我干的重斑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼肯骇,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼窥浪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起笛丙,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤漾脂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后胚鸯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骨稿,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年姜钳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坦冠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哥桥,死狀恐怖辙浑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拟糕,我是刑警寧澤判呕,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站送滞,受9級(jí)特大地震影響侠草,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜犁嗅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一边涕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧愧哟,春花似錦奥吩、人聲如沸哼蛆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腮介。三九已至,卻和暖如春端衰,著一層夾襖步出監(jiān)牢的瞬間叠洗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工旅东, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灭抑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓抵代,卻偏偏與公主長得像腾节,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荤牍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案案腺? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,748評(píng)論 1 92
  • 接上 關(guān)于HTML/HTML5(一)http://www.reibang.com/p/33fc7840c079 學(xué)...
    Amyyy_閱讀 789評(píng)論 0 4
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,070評(píng)論 25 707
  • 畢業(yè)兩年后的相見,朋友康吵,別來無恙劈榨。 這幾天過的也是神奇,在會(huì)議中心迷路又曲折的見面晦嵌,夜里一起在網(wǎng)吧下資料同辣,緊接著凌...
    茵小青閱讀 404評(píng)論 0 0
  • 有一個(gè)學(xué)僧向夾山善會(huì)禪師請(qǐng)示道:“從古至今,歷代祖師都立下言教訓(xùn)示后人惭载,為什么禪師沒有言教呢旱函?”夾山說:“三年不吃...
    禹音閱讀 823評(píng)論 0 0