Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 欧美视频亚洲,麻豆国产在线观看一区二区,国产成人高清视频免费播放

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          為你的 PPT 插入彈幕效果

          為你的 PPT 插入彈幕效果



          大的活動(dòng)現(xiàn)場(chǎng)一般離不開 PPT 演示,可是如何有效和現(xiàn)場(chǎng)互動(dòng)呢?這時(shí)候彈幕必不可少,靜態(tài)的 PPT 就略顯乏力。有沒(méi)有一種好的方案可以二者兼得呢?

          如何才能使 PPT 具有交互性,這是一個(gè)值得思考的問(wèn)題!

          可能很多童鞋想到了,如果使用「網(wǎng)頁(yè) PPT」 ,豈不是完美解決了這個(gè)問(wèn)題。本節(jié)我們就來(lái)提供一種思路,用「PPT + 發(fā)射器 + Socket」 實(shí)現(xiàn)「極簡(jiǎn)彈幕方案」



          關(guān)于「網(wǎng)頁(yè) PPT」,可以查看我之前的文章「酷炫的 HTML5 網(wǎng)頁(yè) PPT」一探究竟。


          一、效果演示

          我們先通過(guò)一個(gè)簡(jiǎn)單的視頻展示一下效果:


          <script src="https://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>


          二、方案概括

          看完上面的演示,是不是迫不及待想知道答案,下面我們來(lái)逐步拆分。



          先來(lái)看看代碼結(jié)構(gòu)


          .
          ├── README.md
          ├── mobile
          │   ├── README.md
          │   ├── node_modules
          │   ├── package.json
          │   ├── public
          │   ├── src
          │   └── yarn.lock
          ├── package.json
          ├── ppt
          │   ├── css
          │   ├── extras
          │   ├── images
          │   ├── index.html
          │   ├── js
          │   └── temp
          ├── server
          │   ├── app.js
          │   ├── data
          │   ├── node_modules
          │   ├── package-lock.json
          │   └── package.json
          └── yarn.lock


          我們主要關(guān)注以下三個(gè)目錄:

          1.ppt使用 impressjs 構(gòu)建的項(xiàng)目,PPT 演講「主屏」,主要演示內(nèi)容區(qū)域,同時(shí)接收「服務(wù)端」推送彈幕信息。

          2.mobile移動(dòng)端,下文稱作「發(fā)射器」,主要用作現(xiàn)場(chǎng)用戶互動(dòng)向主屏發(fā)送彈幕消息。通過(guò) Create React App 生成,技術(shù)棧是:React + Antd。

          3.server服務(wù)端,主要接受用戶彈幕,同時(shí)廣報(bào)到主屏,使用 Socket 實(shí)現(xiàn)。

          啟動(dòng)方式:

          1.進(jìn)入 server 目錄,啟動(dòng)服務(wù):

          node app.js


          此時(shí)會(huì)啟動(dòng)一個(gè)本機(jī) IP 地址的服務(wù)。

          2.進(jìn)入 ppt 目錄,使用 http-server 啟動(dòng)站點(diǎn):

          http-server


          注意:接口地址需要替換成本機(jī) IP 地址。

          3.進(jìn)入 mobile 目錄,啟動(dòng)發(fā)射器:

          yarn start


          注意:請(qǐng)求接口需要使用本機(jī) IP 地址。

          Demo 比較簡(jiǎn)單,主要展示主流程,如果細(xì)節(jié)過(guò)程有問(wèn)題,歡迎一起探討。

          三、主屏細(xì)節(jié)(核心代碼)



          主屏是主要演示版面,我們需要像下面這樣作出 PPT,這里我們做了三個(gè)頁(yè)面:


          <div id="impress" class="jartto" data-transition-duration="1000">
          
              <div id="cover" class="step slide title" data-x="1000" data-y="1000">
                  <img src="temp/img/qrcode.png" />
              </div>
          
              <div id="award" class="step slide" data-x="2000" data-y="3000">
                  <h1>請(qǐng)開始你的表演~</h1>
              </div>
          
              <div id="change" class="step slide" data-x="2000" data-y="3000" data-scale="5">
                  <h1>切換 PPT</h1>
              </div>
          
              <div id="thank" class="step slide"  data-rel-x="0" data-rel-y="3000" data-rotate="90" data-scale="2">
                  <img src="images/thanks.png" />
              </div>
          
          </div>


          每個(gè) div 就是一頁(yè) ppt,里面可以隨意排版,data-x 控制位置,data-scale 控制縮放,data-rotate 控制旋轉(zhuǎn)。

          更多 API 文檔,請(qǐng)參考如下文檔:

          1.酷炫的 HTML5 網(wǎng)頁(yè) PPT

          2.文檔地址

          四、實(shí)現(xiàn)彈幕

          為了更好的理解彈幕,我們來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)版:

          1.定義彈幕結(jié)構(gòu)


          <div class="jartto_demo">我是彈幕</div>


          2.定義移動(dòng)動(dòng)畫


          @keyframes barrager{
             from{
               left:100%;
               transform:translateX(0);
               transform:translate3d(0, 0, 0);
             }
             to{
               left:0;
               transform:translate3d(-100%, 0, 0);
             }
          }


          注意,使用 translate3d 可以開啟 GPU 硬件加速,會(huì)比 translateX 更流暢一些。

          關(guān)于硬件加速,可以關(guān)注我之前寫的一篇文章:詳談層合成(composite)

          3.使用動(dòng)畫

          1
          2
          3
          let window_height=$(window).height() - 150;
          bottom=Math.floor(Math.random() * window_height + 40);
          code=code.replace("   bottom:{bottom}, //距離底部高度,單位px,默認(rèn)隨機(jī) \n", '');


          OK,我們通過(guò)三步實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的彈幕動(dòng)畫。那么問(wèn)題來(lái)了,彈幕都是隨機(jī)位置,隨機(jī)速度,隨機(jī)顏色出現(xiàn)在屏幕上的,這個(gè)該如何實(shí)現(xiàn)呢?

          4.隨機(jī)彈幕出現(xiàn)位置

          1
          2
          let color=`#${Math.floor(Math.random() * (2 << 23)).toString(16)}`; 
          console.log(color); // #6e8360


          5.隨機(jī)彈幕顏色


          let color=`#${Math.floor(Math.random() * (2 << 23)).toString(16)}`; 
          console.log(color); // #6e8360


          好了,大功告成,我們順手加上 Socket 事件監(jiān)聽。

          6.事件監(jiān)聽為了拿到用戶發(fā)送過(guò)來(lái)的彈幕,我們需要做一個(gè)事件監(jiān)聽(接收服務(wù)端數(shù)據(jù)):

          首先,引入 socket.io.js 文件:


          <script type="text/javascript" src="http://{jartto.ip}/socket.io/socket.io.js"></script>


          js 中添加如下代碼:

          <div className="app-box">
              <div className="form-box">
                  <Form.Item {...formItemLayout} label="">
                  {getFieldDecorator('msg', {
                      rules: [
                      {
                          required: true,
                          message: '請(qǐng)輸入內(nèi)容',
                      },
                      ],
                  })(<Input size="large" placeholder="發(fā)送消息,嗨起來(lái)~" />)}
                  </Form.Item>
                  <Form.Item {...formTailLayout} >
                  <Button className="btns"  shape="round" icon="close" size="large" onClick={this.cancle}>取消</Button>
                  <Button   type="primary" shape="round" icon="check" size="large" onClick={this.check}>發(fā)送</Button>
                  </Form.Item>
              </div>
          </div>

          當(dāng)我們監(jiān)聽到 server-push 事件的時(shí)候,run 函數(shù)就會(huì)初始化彈幕方法,隨機(jī)生成一條彈幕,在屏幕滑過(guò)。

          五、發(fā)射器細(xì)節(jié)(核心代碼)



          發(fā)射器就非常簡(jiǎn)單了,我們使用 Create React App 初始化項(xiàng)目,在 src/app.js 中寫入一個(gè)表單(這里以 React 為例,Vue 也是大同小異):


          <div className="app-box">
              <div className="form-box">
                  <Form.Item {...formItemLayout} label="">
                  {getFieldDecorator('msg', {
                      rules: [
                      {
                          required: true,
                          message: '請(qǐng)輸入內(nèi)容',
                      },
                      ],
                  })(<Input size="large" placeholder="發(fā)送消息,嗨起來(lái)~" />)}
                  </Form.Item>
                  <Form.Item {...formTailLayout} >
                  <Button className="btns"  shape="round" icon="close" size="large" onClick={this.cancle}>取消</Button>
                  <Button   type="primary" shape="round" icon="check" size="large" onClick={this.check}>發(fā)送</Button>
                  </Form.Item>
              </div>
          </div>


          用戶在輸入框輸入消息,向我們的服務(wù)器發(fā)送請(qǐng)求,很簡(jiǎn)單,就不贅述了。效果圖可以參考下面:


          請(qǐng)注意,此處為了演示效果,我將三端同框了。


          六、服務(wù)端細(xì)節(jié)(核心代碼)



          服務(wù)端比較簡(jiǎn)單,使用 Express 初始化一個(gè) Node 項(xiàng)目,向 app.js 寫入如下內(nèi)容:1.啟動(dòng) Socket 服務(wù):


          const express=require('express'),
            bodyParser=require('body-parser'),
            socket=require('socket.io'),
            fs=require('fs'); 
          
          const app=express();
          const PORT=4000;
          const io=socket(app.listen(PORT, ()=> console.log(`start on port ${PORT}`)));


          2.監(jiān)聽 Socket 連接,接收用戶發(fā)送數(shù)據(jù),將數(shù)據(jù)寫入本地 JSON 文件,并廣播到 server-push 事件:


          io.on('connection', sockets=> {
            console.log('連接成功!');
            app.post('/api/send', (req, res, next)=> {
              // console.log(req.body);
              let info=JSON.stringify(req.body.msg);
          
              fs.writeFile('./data/jartto.json', `${info},\n`,
              {flag:'a',encoding:'utf-8',mode:'0666'},function(err){
                if(err) {
                  console.log('文件寫入失敗');
                  res.status(500).send('Error');
                } else {
                  sockets.broadcast.emit('server-push', { message: req.body.msg });
                  res.status(200).send('Done');
                }  
               }) 
          
            })
            
            sockets.on('disconnect', ()=> {
              console.log('User Disconnected');
            })
          });


          3.當(dāng)然,我們也可以存入數(shù)據(jù)庫(kù)做持久化,以下演示存入 MySQL 核心代碼:


          io.on('connection', sockets=> {
            console.log('連接成功!');
            app.post('/api/send', (req, res, next)=> {
              let {ua, msg}=req.body.msg;
              req.getConnection(function(err, cnt) {
          
                let query=cnt.add('INSERT INTO (ua, msg)', {ua, msg}, function(err, rows) {
                  if (err) {
                    console.log("Error inserting : %s ",err );
                    return next(err);
                  }
          
                  sockets.broadcast.emit('server-push', { message: req.body.msg });
                  res.status(200).send('Done');
                })
              })
          
            })
          
            sockets.on('disconnect', ()=> {
              console.log('User Disconnected');
            })
          });


          4.啟動(dòng)服務(wù)

          node app.js


          我們的服務(wù)端就啟動(dòng)起來(lái)了,訪問(wèn)地址是你的主機(jī) IP 和 4000 端口。

          七、總結(jié)



          本文我們從零到一搭建了一個(gè)完整的彈幕方案,涉及到三部分:主屏,發(fā)射器和服務(wù)端,旨在為小伙伴們提供一套極簡(jiǎn)的設(shè)計(jì)思路。通過(guò) Demo 我們可以簡(jiǎn)單的串聯(lián)一個(gè)全棧項(xiàng)目,做更多有趣的事情。


          八、熱門原創(chuàng)推薦

          酷炫的 HTML5 網(wǎng)頁(yè) PPT

          成為優(yōu)秀技術(shù)型領(lǐng)導(dǎo)的 16 條黃金法則

          四款酷炫「數(shù)字滾動(dòng)」插件


          這是時(shí)代的魅力,既創(chuàng)造奇跡,也毀滅奇跡!

          多經(jīng)常用到PPT幻燈片的朋友時(shí)常都希望能夠?qū)⒕W(wǎng)絡(luò)上的一些視頻可以插入到自己的PPT模版中,但是都不知道該如何實(shí)現(xiàn)。上次詳細(xì)講解了在PPT中加入視頻的方法,本次我們?cè)賮?lái)講解在PowerPoint2010中實(shí)現(xiàn)加入網(wǎng)絡(luò)視頻的方法。

          Powerpoint2010插入土豆網(wǎng)在線視頻方法:

          ①打開Powerpoint2010,選擇“插入”選項(xiàng)卡中“媒體”選項(xiàng)組中的“視頻”-->“來(lái)自網(wǎng)站的視頻”;

          ②在彈出的“從網(wǎng)站插入視頻”對(duì)話框中輸入網(wǎng)絡(luò)視頻的地址,然后單擊“插入”按鈕;

          ③在幻燈版編輯頁(yè)面上出現(xiàn)一個(gè)黑色視頻框,通過(guò)8個(gè)控點(diǎn)用鼠標(biāo)來(lái)調(diào)整視頻合適的大小;

          ④選擇“視頻工具”-->“播放”-->“播放”進(jìn)行測(cè)試,看看能否鏈接到網(wǎng)站視頻;

          好了,到這里我們就已經(jīng)將土豆網(wǎng)的在線視頻的插入到PPT中啦!

          注:如何找到網(wǎng)絡(luò)視頻的地址?

          大部分視頻網(wǎng)站都提供了視頻的地址。我們可以找到一個(gè)視頻,在其下有一個(gè)“貼到博客或 BBS”的按鈕。單擊此按鈕,在展開的窗口中選擇“HTML 代碼”復(fù)制,即可插入到PowerPoint中了。

          于實(shí)現(xiàn)文檔在線預(yù)覽的做法,之前文章提到了的兩種實(shí)現(xiàn)方式:

          1、通過(guò)將文檔轉(zhuǎn)成圖片:詳見(jiàn)《文檔在線預(yù)覽(一)通過(guò)將txt、word、pdf轉(zhuǎn)成圖片實(shí)現(xiàn)在線預(yù)覽功能》;

          2、將文檔轉(zhuǎn)成html:詳見(jiàn)《文檔在線預(yù)覽(二)word、pdf文件轉(zhuǎn)html以實(shí)現(xiàn)文檔在線預(yù)覽》;

          其實(shí)除了這兩種實(shí)現(xiàn)方式之外之外,還有一種常見(jiàn)的做法就是在前端在通過(guò)相關(guān)的在線預(yù)覽組件來(lái)實(shí)現(xiàn)預(yù)覽

          實(shí)現(xiàn)方案

          在網(wǎng)上的找了一圈實(shí)現(xiàn)方案,發(fā)現(xiàn)還挺多開源組件可以實(shí)現(xiàn),整理了一下這些開源組件放在了下面的表格里,里面有一些是可以直接通過(guò)npm在vue中引入使用。


          文檔格式

          相關(guān)的開源組件

          word(docx)

          docx-preview、mammoth

          pdf

          pdf.js、pdfobject.js、vue-pdf

          excel

          sheetjs js-xlsx、canvas-datagrid、handsontable、DataTables

          powerpoint(pptx)

          pptxjs


          一、docx文件實(shí)現(xiàn)前端預(yù)覽

          1、docx-preview

          是一個(gè) 純前端的JavaScript庫(kù),它的優(yōu)點(diǎn)是可以后端就實(shí)現(xiàn)對(duì) .docx 的文件進(jìn)行在線預(yù)覽,但是缺點(diǎn)是 不支持.doc(劃重點(diǎn))。

          github地址:https://github.com/VolodymyrBaydalka/docxjs

          demo示例

          安裝:

          npm install docx-preview -S
          

          使用效果:

          2、Mammoth

          ??Mammoth 原理是將 .docx 文檔并將其轉(zhuǎn)換為 HTML。 注意Mammoth 轉(zhuǎn)換過(guò)程中復(fù)雜樣式被忽,居中、首行縮進(jìn)等,此外同樣也只能轉(zhuǎn)換.docx文檔。

          github地址:https://github.com/mwilliamson/mammoth.js

          安裝:

          npm install mammoth
          

          二、PDF文件實(shí)現(xiàn)前端預(yù)覽

          1、pdf.js

          pdf.js是一款非常優(yōu)秀的pdf解析工具,其實(shí)火狐瀏覽器內(nèi)核自帶pdf預(yù)覽解析器就是pdf.js這個(gè)解析器,我們用火狐瀏覽器打開pdf文件并按F12打開控制臺(tái)可以看到源碼內(nèi)容。

          官網(wǎng)地址:http://mozilla.github.io/pdf.js

          github地址:https://github.com/mozilla/pdf.js

          demo示例

          使用效果:

          2、pdfobject.js

          PDFObject.js - 將PDF嵌入到一個(gè)div內(nèi),而不是占據(jù)整個(gè)頁(yè)面,要求瀏覽器支持顯示PDF(主流瀏覽器都支持),如果瀏覽器不支持,也可通過(guò)配置PDF.js來(lái)實(shí)現(xiàn)

          官網(wǎng)地址: https://pdfobject.com/

          github地址:https://github.com/pipwerks/PDFObject

          實(shí)現(xiàn)效果:

          3、vue-pdf

          Vue-pdf是通過(guò)Vue下基礎(chǔ)基于 pdf.js 組件實(shí)現(xiàn)PDF文件的展示,操作和生成的組件。

          github地址:https://github.com/FranckFreiburger/vue-pdf

          demo示例

          安裝:

          npm install --save vue-pdf
          

          實(shí)現(xiàn)效果:

          4、iframe / object/ embed

          iframe / object / embed 使用方法和效果都同理,即將 pdf 作為插件內(nèi)嵌在這三個(gè)HTML標(biāo)簽內(nèi),以下用 iframe 為例,效果就如同直接用鏈接打開 pdf 文件是一樣的,相當(dāng)于一個(gè)新的頁(yè)面內(nèi)嵌在當(dāng)前頁(yè)面中。

          <iframe style="width: 100%; height: 100%;" src="/static/xxx.pdf"></iframe>
          

          實(shí)現(xiàn)效果:

          三、Excel文件實(shí)現(xiàn)前端預(yù)覽

          1、sheetjs js-xlsx

          js-xlsx是sheetJS出品的讀取和導(dǎo)出各種ecxel的工具庫(kù),功能十分強(qiáng)大。

          xlsx官方文檔:https://www.npmjs.com/package/xlsx

          github倉(cāng)庫(kù): https://github.com/SheetJS/sheetjs

          安裝:

          npm install xlsx
          

          js-xlsx可以用二進(jìn)制流方式讀取得到整份excel表格對(duì)象

          let workbook=XLSX.read(data, { type: "array" });   //表格對(duì)象
          let sheetNames=workbook.SheetNames;  //獲取到所有表格
          let worksheet=workbook.Sheets[sheetNames[0]];  //取第一張表
          

          獲取表格數(shù)據(jù)后再調(diào)用js-xlsx提供的方法,直接將表格數(shù)據(jù)轉(zhuǎn)換為html代碼,再將html代碼渲染到指定容器就完成了

          let html=XLSX.utils.sheet_to_html(worksheet);
          

          實(shí)現(xiàn)效果:

          2、canvas-datagrid

          ? 基于 canvas 來(lái)渲染表格,支持表格過(guò)濾、數(shù)據(jù)編輯、自定義操作菜單、大數(shù)據(jù)場(chǎng)景優(yōu)化、主題樣式修改

          github地址:https://github.com/TonyGermaneri/canvas-datagrid

          demo示例

          安裝:

          npm install canvas-datagrid
          

          3、 handsontable

          handsontable基于 DOM 元素來(lái)渲染表格,功能強(qiáng)大,canvas-datagrid` 支持的功能它都支持,并且主題樣式擴(kuò)展更方便

          官網(wǎng)地址:https://handsontable.com/docs/7.1.0/tutorial-custom-build.html

          github地址:https://github.com/handsontable/handsontable

          文檔地址:https://handsontable.com/docs/javascript-data-grid

          安裝:

          npm install handsontable @handsontable/vue
          

          Demo示例

          實(shí)現(xiàn)效果:

          4、DataTables

          基于Jquery 表格插件DataTables的一個(gè)表格插件,還在用Jquery 可以以考慮這個(gè)

          官網(wǎng)地址:https://www.datatables.net

          安裝:

          官網(wǎng)下載地址,在你的項(xiàng)目中使用 DataTables,只需要引入三個(gè)個(gè)文件即可,jQuery庫(kù),一個(gè)DataTables的核心js文件和一個(gè)DataTables的css文件。有的時(shí)候還需要DataTables樣式的一些資源。

          <link href="DataTables/datatables.min.css" rel="stylesheet"/>
          <script src="DataTables/datatables.min.js"></script>
          

          使用方式:

          $('#example').DataTable( {
              data: data
          } );
          

          四、pptx文件實(shí)現(xiàn)前端預(yù)覽

          ### 1、PPTXJS PPTXJS是jquery的一個(gè)插件,她的主要功能是實(shí)現(xiàn)pptx轉(zhuǎn)html,用于在線進(jìn)行展示

          官網(wǎng)地址:https://pptx.js.org/index.html

          github地址:https://github.com/meshesha/PPTXjs

          PPTXjs | Demos

          使用示例:

          <div id="slide-resolte-contaniner" ></div> 
          <script> 
            $("#slide-resolte-contaniner").pptxToHtml({ 
              pptxFileUrl: "Sample_demo1.pptx", 
              slidesScale: "50%", 
              slideMode: false, 
              keyBoardShortCut: false 
            }); 
          </script>
          

          實(shí)現(xiàn)效果:

          總結(jié)

          本文主要介紹了word、excel、pdf、ppt等文件純前端實(shí)現(xiàn)在線預(yù)覽的方式,具體實(shí)現(xiàn)可以是:

          ### 1、前端根據(jù)不同文件類型使用對(duì)應(yīng)的在線預(yù)覽組件進(jìn)行在線預(yù)覽。 前端通過(guò)判斷不同文件類型的使用對(duì)應(yīng)的在線預(yù)覽組件進(jìn)行在線預(yù)覽。 因?yàn)椴煌愋偷脑诰€預(yù)覽組件不一樣在使用時(shí)預(yù)覽界面會(huì)存在差異,如果需要做的完善一點(diǎn) 最好是把所有用到的組件都統(tǒng)一封裝的一個(gè)在線預(yù)覽的UI界面中。

          2、后端配合將不同格式的文件轉(zhuǎn)換成pdf,轉(zhuǎn)成統(tǒng)一的文件格式,再由前端實(shí)現(xiàn)預(yù)覽效果

          從本文的測(cè)試情況來(lái)看前端實(shí)現(xiàn)預(yù)覽最好的效果還是PDF,不會(huì)出現(xiàn)一些文字錯(cuò)亂和亂碼的問(wèn)題,這樣能保留文件的一些樣式的效果,同時(shí)前端也只用支持一種文件格式的預(yù)覽,工作量也能大大降低。

          以上就是使用js前端實(shí)現(xiàn)word、excel、pdf、ppt等文件在線預(yù)覽的方式的全部?jī)?nèi)容,感謝大家的閱讀!


          主站蜘蛛池模板: www亚洲精品少妇裸乳一区二区| 日韩视频一区二区在线观看 | 少妇无码AV无码一区| 国产精品一区二区三区99| 亚洲天堂一区在线| 高清国产精品人妻一区二区| 加勒比精品久久一区二区三区| 亚洲av乱码中文一区二区三区| 老熟妇仑乱一区二区视頻| 在线观看免费视频一区| 男人的天堂亚洲一区二区三区| 国产aⅴ一区二区| 免费看无码自慰一区二区| 日韩国产精品无码一区二区三区| 精品少妇ay一区二区三区| 亚洲综合无码精品一区二区三区| 日本一区二区不卡在线| 在线精品国产一区二区三区| 午夜视频久久久久一区 | 无码囯产精品一区二区免费 | 国产av夜夜欢一区二区三区| 国产福利日本一区二区三区| 日韩国产精品无码一区二区三区| 精品国产鲁一鲁一区二区| 亚洲一区爱区精品无码| 日韩精品人妻一区二区中文八零 | 亚洲av日韩综合一区二区三区| 久久精品无码一区二区三区免费| 99偷拍视频精品一区二区| 四虎在线观看一区二区 | 人妻夜夜爽天天爽爽一区| 国产精品一区三区| 色噜噜AV亚洲色一区二区| 99国产精品一区二区| 国产免费无码一区二区| 无码人妻一区二区三区在线| 国产乱码一区二区三区四| 亚洲av乱码中文一区二区三区 | 国产一区二区精品久久凹凸| 国产乱码精品一区二区三区中文 | 国产成人无码一区二区在线播放|