精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Vue3 Teleport 組件的實(shí)踐及原理

開(kāi)發(fā) 前端
Vue3 的組合式 API 以及基于 Proxy 響應(yīng)式原理已經(jīng)有很多文章介紹過(guò)了,除了這些比較亮眼的更新,Vue3 還新增了一個(gè)內(nèi)置組件:Teleport。這個(gè)組件的作用主要用來(lái)將模板內(nèi)的 DOM 元素移動(dòng)到其他位置。

[[354904]]

Vue3 的組合式 API 以及基于 Proxy 響應(yīng)式原理已經(jīng)有很多文章介紹過(guò)了,除了這些比較亮眼的更新,Vue3 還新增了一個(gè)內(nèi)置組件:Teleport。這個(gè)組件的作用主要用來(lái)將模板內(nèi)的 DOM 元素移動(dòng)到其他位置。

使用場(chǎng)景

業(yè)務(wù)開(kāi)發(fā)的過(guò)程中,我們經(jīng)常會(huì)封裝一些常用的組件,例如 Modal 組件。相信大家在使用 Modal 組件的過(guò)程中,經(jīng)常會(huì)遇到一個(gè)問(wèn)題,那就是 Modal 的定位問(wèn)題。

話不多說(shuō),我們先寫(xiě)一個(gè)簡(jiǎn)單的 Modal 組件。

  1. <!-- Modal.vue --> 
  2. <style lang="scss"
  3. .modal { 
  4.   &__mask { 
  5.     position: fixed; 
  6.     top: 0; 
  7.     left: 0; 
  8.     width: 100vw; 
  9.     height: 100vh; 
  10.     background: rgba(0, 0, 0, 0.5); 
  11.   } 
  12.   &__main { 
  13.     margin: 0 auto; 
  14.     margin-bottom: 5%; 
  15.     margin-top: 20%; 
  16.     width: 500px; 
  17.     background: #fff; 
  18.     border-radius: 8px; 
  19.   } 
  20.   /* 省略部分樣式 */ 
  21. </style> 
  22. <template> 
  23.   <div class="modal__mask"
  24.     <div class="modal__main"
  25.       <div class="modal__header"
  26.         <h3 class="modal__title">彈窗標(biāo)題</h3> 
  27.         <span class="modal__close">x</span> 
  28.       </div> 
  29.       <div class="modal__content"
  30.         彈窗文本內(nèi)容 
  31.       </div> 
  32.       <div class="modal__footer"
  33.         <button>取消</button> 
  34.         <button>確認(rèn)</button> 
  35.       </div> 
  36.     </div> 
  37.   </div> 
  38. </template> 
  39.  
  40. <script> 
  41. export default { 
  42.   setup() { 
  43.     return {}; 
  44.   }, 
  45. }; 
  46. </script> 

然后我們?cè)陧?yè)面中引入 Modal 組件。

  1. <!-- App.vue --> 
  2. <style lang="scss"
  3. .container { 
  4.   height: 80vh; 
  5.   margin: 50px; 
  6.   overflow: hidden; 
  7. </style> 
  8. <template> 
  9.   <div class="container"
  10.     <Modal /> 
  11.   </div> 
  12. </template> 
  13.  
  14. <script> 
  15. export default { 
  16.   components: { 
  17.     Modal, 
  18.   }, 
  19.   setup() { 
  20.     return {}; 
  21.   } 
  22. }; 
  23. </script> 

Modal

如上圖所示, div.container 下彈窗組件正常展示。使用 fixed 進(jìn)行布局的元素,在一般情況下會(huì)相對(duì)于屏幕視窗來(lái)進(jìn)行定位,但是如果父元素的 transform, perspective 或 filter 屬性不為 none 時(shí),fixed 元素就會(huì)相對(duì)于父元素來(lái)進(jìn)行定位。

我們只需要把 .container 類的 transform 稍作修改,彈窗組件的定位就會(huì)錯(cuò)亂。

  1. <style lang="scss"
  2. .container { 
  3.   height: 80vh; 
  4.   margin: 50px; 
  5.   overflow: hidden; 
  6.   transform: translateZ(0); 
  7. </style> 

Modal

這個(gè)時(shí)候,使用 Teleport 組件就能解決這個(gè)問(wèn)題了。

“Teleport 提供了一種干凈的方法,允許我們控制在 DOM 中哪個(gè)父節(jié)點(diǎn)下呈現(xiàn) HTML,而不必求助于全局狀態(tài)或?qū)⑵洳鸱譃閮蓚€(gè)組件。-- Vue 官方文檔

我們只需要將彈窗內(nèi)容放入 Teleport 內(nèi),并設(shè)置 to 屬性為 body,表示彈窗組件每次渲染都會(huì)做為 body 的子級(jí),這樣之前的問(wèn)題就能得到解決。

  1. <template> 
  2.   <teleport to="body"
  3.     <div class="modal__mask"
  4.       <div class="modal__main"
  5.         ... 
  6.       </div> 
  7.     </div> 
  8.   </teleport> 
  9. </template> 

可以在 https://codesandbox.io/embed/vue-modal-h5g8y 查看代碼。

使用 Teleport 的 Modal

源碼解析

我們可以先寫(xiě)一個(gè)簡(jiǎn)單的模板,然后看看 Teleport 組件經(jīng)過(guò)模板編譯后,生成的代碼。

  1. Vue.createApp({ 
  2.   template: ` 
  3.     <Teleport to="body"
  4.       <div> teleport to body </div>   
  5.     </Teleport> 
  6.   ` 
  7. }) 

模板編譯后的代碼

簡(jiǎn)化后代碼:

  1. function render(_ctx, _cache) { 
  2.   with (_ctx) { 
  3.     const { createVNode, openBlock, createBlock, Teleport } = Vue 
  4.     return (openBlock(), createBlock(Teleport, { to"body" }, [ 
  5.       createVNode("div"null" teleport to body ", -1 /* HOISTED */) 
  6.     ])) 
  7.   } 

可以看到 Teleport 組件通過(guò) createBlock 進(jìn)行創(chuàng)建。

  1. // packages/runtime-core/src/renderer.ts 
  2. export function createBlock( 
  3.  type, props, children, patchFlag 
  4. ) { 
  5.   const vnode = createVNode( 
  6.     type, 
  7.     props, 
  8.     children, 
  9.     patchFlag 
  10.   ) 
  11.   // ... 省略部分邏輯 
  12.   return vnode 
  13.  
  14. export function createVNode( 
  15.   type, props, children, patchFlag 
  16. ) { 
  17.   // class & style normalization. 
  18.   if (props) { 
  19.     // ... 
  20.   } 
  21.  
  22.   // encode the vnode type information into a bitmap 
  23.   const shapeFlag = isString(type) 
  24.     ? ShapeFlags.ELEMENT 
  25.     : __FEATURE_SUSPENSE__ && isSuspense(type) 
  26.       ? ShapeFlags.SUSPENSE 
  27.       : isTeleport(type) 
  28.         ? ShapeFlags.TELEPORT 
  29.         : isObject(type) 
  30.           ? ShapeFlags.STATEFUL_COMPONENT 
  31.           : isFunction(type) 
  32.             ? ShapeFlags.FUNCTIONAL_COMPONENT 
  33.             : 0 
  34.  
  35.   const vnode: VNode = { 
  36.     type, 
  37.     props, 
  38.     shapeFlag, 
  39.     patchFlag, 
  40.     key: props && normalizeKey(props), 
  41.     ref: props && normalizeRef(props), 
  42.   } 
  43.  
  44.   return vnode 
  45.  
  46. // packages/runtime-core/src/components/Teleport.ts 
  47. export const isTeleport = type => type.__isTeleport 
  48. export const Teleport = { 
  49.   __isTeleport: true
  50.   process() {} 

傳入 createBlock 的第一個(gè)參數(shù)為 Teleport,最后得到的 vnode 中會(huì)有一個(gè) shapeFlag 屬性,該屬性用來(lái)表示 vnode 的類型。isTeleport(type) 得到的結(jié)果為 true,所以 shapeFlag 屬性最后的值為 ShapeFlags.TELEPORT(1 << 6)。

  1. // packages/shared/src/shapeFlags.ts 
  2. export const enum ShapeFlags { 
  3.   ELEMENT = 1, 
  4.   FUNCTIONAL_COMPONENT = 1 << 1, 
  5.   STATEFUL_COMPONENT = 1 << 2, 
  6.   TEXT_CHILDREN = 1 << 3, 
  7.   ARRAY_CHILDREN = 1 << 4, 
  8.   SLOTS_CHILDREN = 1 << 5, 
  9.   TELEPORT = 1 << 6, 
  10.   SUSPENSE = 1 << 7, 
  11.   COMPONENT_SHOULD_KEEP_ALIVE = 1 << 8, 
  12.   COMPONENT_KEPT_ALIVE = 1 << 9 

在組件的 render 節(jié)點(diǎn),會(huì)依據(jù) type 和 shapeFlag 走不同的邏輯。

  1. // packages/runtime-core/src/renderer.ts 
  2. const render = (vnode, container) => { 
  3.   if (vnode == null) { 
  4.     // 當(dāng)前組件為空,則將組件銷(xiāo)毀 
  5.     if (container._vnode) { 
  6.       unmount(container._vnode, nullnulltrue
  7.     } 
  8.   } else { 
  9.     // 新建或者更新組件 
  10.     // container._vnode 是之前已創(chuàng)建組件的緩存 
  11.     patch(container._vnode || null, vnode, container) 
  12.   } 
  13.   container._vnode = vnode 
  14.  
  15. // patch 是表示補(bǔ)丁,用于 vnode 的創(chuàng)建、更新、銷(xiāo)毀 
  16. const patch = (n1, n2, container) => { 
  17.   // 如果新舊節(jié)點(diǎn)的類型不一致,則將舊節(jié)點(diǎn)銷(xiāo)毀 
  18.   if (n1 && !isSameVNodeType(n1, n2)) { 
  19.     unmount(n1) 
  20.   } 
  21.   const { type, ref, shapeFlag } = n2 
  22.   switch (type) { 
  23.     case Text: 
  24.       // 處理文本 
  25.       break 
  26.     case Comment: 
  27.       // 處理注釋 
  28.       break 
  29.     // case ... 
  30.     default
  31.       if (shapeFlag & ShapeFlags.ELEMENT) { 
  32.         // 處理 DOM 元素 
  33.       } else if (shapeFlag & ShapeFlags.COMPONENT) { 
  34.         // 處理自定義組件 
  35.       } else if (shapeFlag & ShapeFlags.TELEPORT) { 
  36.         // 處理 Teleport 組件 
  37.         // 調(diào)用 Teleport.process 方法 
  38.         type.process(n1, n2, container...); 
  39.       } // else if ... 
  40.   } 

可以看到,在處理 Teleport 時(shí),最后會(huì)調(diào)用 Teleport.process 方法,Vue3 中很多地方都是通過(guò) process 的方式來(lái)處理 vnode 相關(guān)邏輯的,下面我們重點(diǎn)看看 Teleport.process 方法做了些什么。

  1. // packages/runtime-core/src/components/Teleport.ts 
  2. const isTeleportDisabled = props => props.disabled 
  3. export const Teleport = { 
  4.   __isTeleport: true
  5.   process(n1, n2, container) { 
  6.     const disabled = isTeleportDisabled(n2.props) 
  7.     const { shapeFlag, children } = n2 
  8.     if (n1 == null) { 
  9.       const target = (n2.target = querySelector(n2.prop.to))       
  10.       const mount = (container) => { 
  11.         // compiler and vnode children normalization. 
  12.         if (shapeFlag & ShapeFlags.ARRAY_CHILDREN) { 
  13.           mountChildren(children, container) 
  14.         } 
  15.       } 
  16.       if (disabled) { 
  17.         // 開(kāi)關(guān)關(guān)閉,掛載到原來(lái)的位置 
  18.         mount(container) 
  19.       } else if (target) { 
  20.         // 將子節(jié)點(diǎn),掛載到屬性 `to` 對(duì)應(yīng)的節(jié)點(diǎn)上 
  21.         mount(target) 
  22.       } 
  23.     } 
  24.     else { 
  25.       // n1不存在,更新節(jié)點(diǎn)即可 
  26.     } 
  27.   } 

其實(shí)原理很簡(jiǎn)單,就是將 Teleport 的 children 掛載到屬性 to 對(duì)應(yīng)的 DOM 元素中。為了方便理解,這里只是展示了源碼的九牛一毛,省略了很多其他的操作。

總結(jié)

希望在閱讀文章的過(guò)程中,大家能夠掌握 Teleport 組件的用法,并使用到業(yè)務(wù)場(chǎng)景中。盡管原理十分簡(jiǎn)單,但是我們有了 Teleport 組件,就能輕松解決彈窗元素定位不準(zhǔn)確的問(wèn)題。

本文轉(zhuǎn)載自微信公眾號(hào)「更了不起的前端」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系更了不起的前端公眾號(hào)。

 

 

 

責(zé)任編輯:武曉燕 來(lái)源: 更了不起的前端
相關(guān)推薦

2021-05-12 10:25:29

開(kāi)發(fā)技能代碼

2021-10-29 07:47:35

Vue 3teleport傳送門(mén)組件

2021-03-31 08:01:50

Vue3 Vue2 Vue3 Telepo

2023-11-28 09:03:59

Vue.jsJavaScript

2024-10-24 09:18:45

2021-05-18 07:51:37

Suspense組件Vue3

2023-11-29 09:05:59

Vue 3場(chǎng)景

2023-04-02 10:06:24

組件vue3sign2.

2022-07-29 11:03:47

VueUni-app

2023-04-27 11:07:24

Setup語(yǔ)法糖Vue3

2024-04-08 07:28:27

PiniaVue3狀態(tài)管理庫(kù)

2021-12-01 08:11:44

Vue3 插件Vue應(yīng)用

2022-09-20 11:00:14

Vue3滾動(dòng)組件

2024-08-13 09:26:07

2022-07-27 08:40:06

父子組件VUE3

2021-10-21 06:52:17

Vue3組件 API

2024-04-16 07:46:15

Vue3STOMP協(xié)議WebSocket

2021-11-30 08:19:43

Vue3 插件Vue應(yīng)用

2021-11-19 09:29:25

項(xiàng)目技術(shù)開(kāi)發(fā)

2020-06-09 11:35:30

Vue 3響應(yīng)式前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲免费观看在线观看| 精品一区二区三区在线播放| 亚洲老板91色精品久久| 国产真人无码作爱视频免费| 欧美激情黑人| 99精品偷自拍| 国产一区红桃视频| 国产精品18p| 精品日本12videosex| 日韩欧美在线一区二区三区| 99久久激情视频| 18在线观看的| 国产欧美一区二区在线| 波多野结衣久草一区| 久久永久免费视频| 国内激情久久| 久久精品国产亚洲一区二区| 欧美肥老妇视频| 性农村xxxxx小树林| 另类中文字幕国产精品| 亚洲午夜在线电影| 在线码字幕一区| 牛牛热在线视频| 国产福利一区在线观看| 国产精品久久精品| 午夜精品久久久久久久久久久久久蜜桃 | 国产高清av在线播放| 五月天av影院| 波多野结衣办公室双飞| avtt久久| 欧美少妇性性性| 37pao成人国产永久免费视频| 好看的中文字幕在线播放| 成人欧美一区二区三区| 欧美日韩三区四区| 亚洲AV成人无码一二三区在线| 国产成人精品影视| 亚洲wwwav| 国产一区二区三区中文字幕 | 亚洲欧美日韩中文播放 | 香蕉久久网站| 综合久久五月天| 舐め犯し波多野结衣在线观看| 台湾色综合娱乐中文网| 亚洲电影在线看| 无码国产精品一区二区免费式直播| 亚洲精品无播放器在线播放| 精品视频一区三区九区| 天美星空大象mv在线观看视频| av综合电影网站| 日韩欧美国产网站| 1024av视频| 亚洲国产成人二区| 欧美性生活大片免费观看网址 | 欧美aaaaa成人免费观看视频| 欧美亚洲另类在线| 亚洲图片在线视频| 日韩成人精品在线| 国产在线精品成人一区二区三区| 一本色道久久综合无码人妻| 麻豆精品新av中文字幕| 国产在线播放91| h狠狠躁死你h高h| 国产成人亚洲精品青草天美| 国产伦精品一区二区三区视频孕妇| 欧美天堂在线视频| fc2成人免费人成在线观看播放| 国产一区二区三区色淫影院 | 在线观看久久av| 美国精品一区二区| 亚洲乱码精品| 久久人人97超碰精品888 | 欧美日韩久久不卡| 在线观看免费看片| 精品久久ai| 亚洲视频999| a资源在线观看| 亚洲精品小说| 97婷婷大伊香蕉精品视频| 无码视频一区二区三区| 久久99热国产| 国产欧美韩日| 搞黄视频免费在线观看| 亚洲欧美日韩久久| 日韩中字在线观看| 日韩毛片一区| 亚洲成人黄色在线| 极品人妻videosss人妻| 亚洲精品久久久| 欧美一级免费视频| 91成品人影院| 国产91综合网| 日本高清不卡一区二区三| 巨大荫蒂视频欧美另类大| 亚洲mv在线观看| 三级在线视频观看| 澳门成人av| 一个色综合导航| 久久这里只有精品国产| 日韩精品亚洲一区| 91视频网页| 亚洲 另类 春色 国产| 国产精品成人一区二区三区夜夜夜 | 亚洲线精品一区二区三区| 人妻无码视频一区二区三区| 日韩精品一区国产| 国产一区二区三区在线| 日本三级免费看| 久久爱www久久做| 国外成人免费视频| a视频在线免费看| 色综合久久88色综合天天免费| 91精产国品一二三产区别沈先生| 人人网欧美视频| 操日韩av在线电影| 天天干天天干天天操| 国产不卡视频一区二区三区| 亚洲精品不卡| 欧美办公室脚交xxxx| 欧美另类高清zo欧美| 美女爆乳18禁www久久久久久| 国产高清欧美| 国产精品99久久99久久久二8| 理论片中文字幕| 亚洲色图丝袜美腿| 91看片在线免费观看| 亚洲精品无吗| 97婷婷涩涩精品一区| www.色呦呦| 亚洲欧洲99久久| chinese少妇国语对白| 欧美变态挠脚心| 久久久久久成人| www.国产免费| 亚洲精品午夜久久久| 99视频在线观看视频| 91久久电影| 成人精品在线观看| 巨大荫蒂视频欧美另类大| 欧美剧情片在线观看| 潮喷失禁大喷水aⅴ无码| 青青青伊人色综合久久| 视频一区不卡| www.成人在线视频| 尤物tv国产一区| 中文无码av一区二区三区| 国产亚洲精品bt天堂精选| 欧美xxxxx在线视频| 色综合综合网| 国产精品福利在线观看| eeuss影院在线观看| 欧美性大战久久久| 强制高潮抽搐sm调教高h| 久久精品av麻豆的观看方式| 国产大尺度在线观看| 国产精品一区二区三区www| 久久在线观看视频| www.黄色av| 亚洲成人免费影院| 国产在线观看无码免费视频| 久久福利影视| 视频一区免费观看| 99久热在线精品视频观看| xxx欧美精品| 不卡av中文字幕| 五月天中文字幕一区二区| 好吊一区二区三区视频| 亚洲综合国产激情另类一区| 日韩中文字幕一区二区| 巨大黑人极品videos精品| 免费99精品国产自在在线| 日本韩国在线观看| 91激情在线视频| 男人晚上看的视频| www.欧美.com| 青青草av网站| 欧美成人久久| 欧美日韩视频在线一区二区观看视频| 精品成人免费一区二区在线播放| 久久亚洲综合国产精品99麻豆精品福利| av网站在线观看免费| 亚洲成人tv网| 天堂网中文在线观看| 国产91丝袜在线播放0| 日韩久久一级片| 91精品亚洲| 免费av一区二区三区| 亚洲午夜国产成人| 国a精品视频大全| 成人高清免费在线播放| 日韩欧美www| 7799精品视频天天看| 亚洲乱码一区二区三区在线观看| 日本三级日本三级日本三级极| 青青草视频一区| 欧美视频免费看欧美视频| 日韩伦理视频| 国内精品视频免费| 国产精区一区二区| 日韩美女av在线免费观看| 亚洲区欧洲区| 中文字幕综合在线| 台湾av在线二三区观看| 91精品国产丝袜白色高跟鞋| 日韩在线 中文字幕| 亚洲最新在线观看| 制服丨自拍丨欧美丨动漫丨| 91麻豆文化传媒在线观看| 亚洲一二三av| 日本视频免费一区| 国产人妻777人伦精品hd| 亚洲h色精品| 日本不卡二区| 日韩高清一级| av蓝导航精品导航| 亚洲二区av| 国产精品久久久久久久久久免费 | 国产成人综合亚洲| 麻豆mv在线看| 色综合久综合久久综合久鬼88| 国产福利第一视频在线播放| 日韩av一卡二卡| 内射后入在线观看一区| 欧美一级xxx| 91麻豆国产在线| 欧美日韩一区二区在线观看视频| 国产精品第5页| 婷婷国产在线综合| 日本特黄特色aaa大片免费| 亚洲激情图片qvod| 久久爱一区二区| 国产精品成人一区二区三区夜夜夜| 9.1成人看片免费版| 91伊人久久大香线蕉| 国产综合内射日韩久| 国产.精品.日韩.另类.中文.在线.播放| 色乱码一区二区三区在线| 日韩高清国产一区在线| 欧洲av无码放荡人妇网站| 一区二区三区国产盗摄| 黄色一级在线视频| 制服诱惑一区二区| 精品无码一区二区三区在线| 亚洲人成人一区二区三区| 欧美高清中文字幕| 欧美网站在线| 91精品国产91久久久久麻豆 主演| 国产综合精品一区| 亚洲色成人www永久在线观看 | 久久久久久久成人| 人交獸av完整版在线观看| 欧美大片免费观看| 女囚岛在线观看| 久久乐国产精品| 久久久男人天堂| 国产成人中文字幕| 日韩午夜视频在线| 91久久国产自产拍夜夜嗨| 久久九九精品视频| 国产精品一区二区三区在线观| 激情小说一区| 欧洲一区二区在线观看| 91综合视频| 神马午夜伦理影院| 亚洲三级电影在线观看| 欧美私人情侣网站| 久久精品国产77777蜜臀| 欧美69精品久久久久久不卡 | 亚洲一二三四五六区| 亚洲男人的天堂av| 日韩欧美亚洲国产| 色综合久久综合| 在线黄色av网站| 欧美mv日韩mv国产| 男人天堂综合| 少妇高潮 亚洲精品| 国产亚av手机在线观看| 日本高清视频一区| 国产美女精品视频免费播放软件| 精品久久久久久一区| 日韩黄色大片| 少妇人妻无码专区视频| 日韩av一区二区三区四区| 善良的小姨在线| 久久久蜜桃精品| 亚洲二区在线播放| 都市激情亚洲色图| 中文字幕av资源| 精品久久久久一区二区国产| 久久精品a一级国产免视看成人| 久久久成人av| 2022成人影院| 97伦理在线四区| 妖精一区二区三区精品视频 | 国产美女网站视频| 午夜精品福利一区二区蜜股av| 又色又爽又黄无遮挡的免费视频| 欧美tickling网站挠脚心| eeuss影院www在线观看| 午夜美女久久久久爽久久| 不卡一区视频| 欧美一区二区三区四区夜夜大片 | 欧美精品无码一区二区三区| 国产乱码一区二区三区| 国产黄色大片免费看| 亚洲mv大片欧洲mv大片精品| 国产男女猛烈无遮挡| 一区二区欧美在线| 日本不卡网站| 成人国产一区二区| 99精品综合| 青青青国产在线视频| 91美女在线观看| 欧美激情精品久久| 91精品在线麻豆| 成人精品福利| 国产精品电影一区| 日韩电影在线观看完整免费观看| 日韩欧亚中文在线| 日本一级淫片色费放| 欧美日韩一区精品| 国模吧精品人体gogo| 97成人精品视频在线观看| 欧一区二区三区| 在线精品日韩| 另类人妖一区二区av| 欧洲美熟女乱又伦| 日本韩国欧美在线| 人人九九精品| 久久久久久久一区二区三区| 欧美经典影片视频网站| 一本—道久久a久久精品蜜桃| 免费成人美女在线观看.| 亚洲天堂视频一区| 日韩欧美成人网| 精品久久久久一区二区三区 | 制服.丝袜.亚洲.中文.综合懂色| 欧美成人一区二区| 成人av免费| 亚洲综合第一页| 欧美搞黄网站| 黄色av电影网站| 亚洲一区二区在线免费看| jlzzjlzzjlzz亚洲人| 久久国产精品偷| 亚洲综合网站| 亚洲色成人www永久在线观看| 国产91精品在线观看| 久久久综合久久久| 亚洲国产99精品国自产| 厕沟全景美女厕沟精品| 欧洲精品久久| 蜜桃视频在线观看一区| 黄色录像一级片| 日韩欧美www| 亚洲天堂手机| 日韩国产高清一区| 久久国产精品露脸对白| 丝袜美腿小色网| 精品三级av在线| 免费观看亚洲| 四虎一区二区| 精品影院一区二区久久久| 欧美成人黄色网| 亚洲黄色av女优在线观看| 欧美色999| 自拍偷拍亚洲色图欧美| 国产高清视频一区| 国产成人精品一区二三区| 在线视频免费一区二区| 国产精品日本一区二区三区在线 | 日韩精品一二三四区| 国精产品一区二区三区有限公司| 亚洲欧美久久234| 国产成人啪免费观看软件| 日韩精品手机在线| 最好看的2019年中文视频| 天堂va欧美ⅴa亚洲va一国产| 俄罗斯av网站| 国产精品久久久一本精品| www.麻豆av| 国产精品久久久久久久久久久久 | 好吊一区二区三区视频| 欧美性受极品xxxx喷水| 亚洲小说区图片| 日本亚洲欧洲精品| 丁香一区二区三区| 最近中文字幕av| 国语对白做受69| 国产精品久久久久久| 国产黄色三级网站| 欧美日本韩国一区二区三区视频 | 亚洲国产老妈| 蜜桃精品成人影片| 日韩视频在线你懂得| 亚洲播播91| 九色自拍视频在线观看| 中文字幕一区日韩精品欧美| 日中文字幕在线| 99久久精品免费看国产四区|