国产成人无码一区二区三区在线_亚洲一区二区三区精品在线_国严精品久久久久久亚洲影视 _国产精品福利在线播放_中文字幕av导航_玉米视频成人免费看_国产v亚洲v天堂无码久久久_一区二区三区资源_免费成人深夜夜行视频_国产在线观看成人_一区二区三区产品免费精品久久75_国产国语videosex另类

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

本篇文章給大家?guī)砹岁P(guān)于Vue3的相關(guān)知識,其中主要介紹了Vue3是怎么實現(xiàn)一個全局搜索框,我會分享一下自己完整實現(xiàn)的思路,下面一起來看一下吧,希望對需要的朋友有所幫助。

Vue3 如何實現(xiàn)一個全局搜索框

前言:自從學(xué)習(xí) vue 以來,就對 vue 官網(wǎng)全局的 command + K 調(diào)出全局關(guān)鍵詞搜索這個功能心心念念。恰好最近項目也是需要實現(xiàn)一個全局搜索的功能,也正好可以正大光明的帶薪學(xué)習(xí)這個功能的思路。網(wǎng)上的教程水平參差不齊,而恰好之前的項目中我有做過一個類似于全局彈出面包屑的功能,于是舉一反三寫出了一個我們項目需要的全局搜索框,特來分享一下自己的思路。

圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

注意:本文不會馬上教你如何編寫代碼,而是作為一個引路人,一步一步引導(dǎo)你去理解這個組件的設(shè)計思路。會以 “假如我是一個初學(xué)者,如果我在學(xué)習(xí)這個知識的時候,別人能這樣告訴我,那么我也可以很快的去理解” 的角度去講解 ,授人以魚不如授人以漁。希望你在閱讀本文的時候可以拓展思路,舉一反三。

一. 文件準備

前期你需要準備三個文件,來完成這個全局搜索框

  • SearchBar.ts 文件

  • SearchBar.vue 文件

  • useSearch.ts 文件

圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

二. 搜索框的樣式

樣式問題不是本文的重點,你可以花費五分鐘在 SearchBar.vue 文件內(nèi)速寫一個非常簡易的正方形 div 包裹著一個 input 標簽即可快速進行下面的學(xué)習(xí)。

但是首先我們需要理清思路,這個組件是會出現(xiàn)在我們頁面的最頂部的,所以它組件內(nèi)部需要用到絕對布局。我們?nèi)?SearchBar.vue 去設(shè)置一個樣式給最外層的 div,這里其它樣式的寫法使用的是 Uno CSS,沒用過的小伙伴也不需要擔(dān)心,它只是單純的樣式,和本文中心內(nèi)容不牽扯。(CSS寫成計算屬性在這個場景也毫無特殊意義,只是單純設(shè)計時考慮多了)圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

三. 渲染函數(shù) hrender 函數(shù)(重點)

  • 打開之前準備的 SearchBar.ts 文件,從 vue 里引入這兩個函數(shù),并且把在上一步寫好的簡陋版搜索框(SearchBar.vue)引入到這個文件內(nèi)。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 看過我之前文章 Vue3實現(xiàn)一個 Toast 的讀者可能會比較熟悉一點點,但是在那一篇文章內(nèi)由于我也是初次接觸這兩個函數(shù),所以當(dāng)時總結(jié)的也不是特別精確,所以重新捋清思路,這里再講解一下。

  • 首先我們從官網(wǎng)的介紹,先看一下這個函數(shù)的定義。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)
    可以看出,這個函數(shù)第一個參數(shù)是必填的,可以是一個 stringComponent,這篇文章重點討論參數(shù)為 Component 的情況。重點是這個函數(shù)的返回值,是一個 VNode,這個你一定不陌生,Virtual Node ,看本篇文章的讀者可能對虛擬 dom 的原理可能不是那么清楚,但是我相信你們一定知道它的基本機制。Vue 其實是先渲染 虛擬 dom –>然后 轉(zhuǎn)換成真實 dom

  • 先別急著寫代碼,我想你可能更清楚這樣的寫法,比如我們前面在 SearchBar.vue 文件內(nèi)寫的簡單的彈出框。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)整個組件的樣式都是在 Vue 提供的 <template> 組件內(nèi)寫的,但是你要知道,Vue 在底層還是通過調(diào)用 h() 來完成虛擬 dom 的構(gòu)建。而 <template> 僅僅只是 Vue 為了讓你用熟悉的原生 html 開發(fā)而為你提供的語法糖?而已。(嗯,你可以這樣理解)

  • 那么我們可以根據(jù)上面 h() 函數(shù)的介紹,它接收的第一參數(shù)可以是 Component ,那我們這個 SearchBar.vue 不就是組件嗎?那如果我不想使用 <template> 去展示這個組件的話,我是否可以這樣寫呢?h(SearchBar.vue)。沒錯,是的,你就是可以這樣寫。別忘了 h 的返回值就是我們想拿到的 Vnode ,所以按照正確的寫法是這樣的。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

三. 編寫 SearchBarMaker 構(gòu)造函數(shù)和 present 方法

  • 讓我們回到 SearchBar.ts 文件。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 首先思考,這個搜索框一定有一個出現(xiàn)的函數(shù),和一個消失的函數(shù)?,ok,起名字,一個 present,一個 dismiss
    圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 接下來我需要創(chuàng)建出一個 VNode ,然后想辦法處理成真實 dom。經(jīng)過上面的學(xué)習(xí),第一步馬上就可以想到下面的寫法。
    圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 下面這位更是重量級,render() 函數(shù)。虛擬 dom 有了,真實dom 該如何拿到呢? Vue 為我們提供了這樣一個函數(shù),這里我們需要重點去看這個函數(shù)的類型是值,是一個 RootRenderFunction 類型的。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 這里我們轉(zhuǎn)變一下思路,我們看一下 render 函數(shù)的第二個參數(shù)是 一個 container:HostElement ,然后讓我們打開我們 main.ts 文件,我們跳進 mount的定義部分,圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)發(fā)現(xiàn)神奇的地方了嗎,我們雖然不知道 HostElement 的類型是什么,但是你知道你 mount 函數(shù)內(nèi)填的參數(shù)是什么了嗎?(忘掉的轉(zhuǎn)頭自覺復(fù)習(xí)官網(wǎng)哈。)
    沒錯,就是全局唯一的一個真實 dom,一個樸實無華的id叫 appdiv 元素。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)由于篇幅限制,在這里你可以先暫時簡單的理解,render 函數(shù)會將你的虛擬 dom 包裝成一個真實 dom 元素,但是你需要給它一個真實的 外殼dom 來告訴它將虛擬 dom 渲染到哪個位置。

  • ok,拿到一個包裝后的虛擬 dom ,接下來就是告訴瀏覽器在哪里渲染這個元素。這里我們需要思考?,既然是全局都可以彈出的,并且需要在所有組件之上彈出。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)那么最簡單的方法就是讓它出現(xiàn)在 body的第一個元素,那么它一定會和我們網(wǎng)頁所有的組件同級別(tips:通常我們所有的頁面構(gòu)成都會寫在 body內(nèi) 的一個 div 內(nèi)。什么?你問我為什么?請打開你的 index.html 看一下,你是否忘記了我們的 App.vue 是掛在這個真實的,id為 app 的元素內(nèi)的)圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)那其實我們的操作的思路就是非常簡單的,當(dāng)我按下全局搜索按鈕,那么你就在 <div id="app"> 的元素之前插入我的組件即可。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • ok,到這里我們已經(jīng)可以看到基本效果了,我們來測試一下。讓我們在 App.vue 組件內(nèi)隨便寫一個按鈕,然后調(diào)用 SearchBarCreator 實例身上的 present 方法。(maker 感覺不是那么合理,之后我們將 SearchBarMaker 變更為 SeachBarCreator 的叫法,僅僅是名字變了而已,邏輯什么的根本沒變哦。?)圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)效果如下:
    圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 到這里 searchBar 已經(jīng)可以呈現(xiàn)在頁面上了,但是我們還不知道怎樣讓它消失,其實也非常簡單,我們只需要在合適的時機移除這個 dom 元素即可。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)在這里我們需要知道一點,我們需要將 searchBar 提升到當(dāng)前文件的全局,不能僅只在 open中去 new 了。
    圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)ok,我們測試一下
    圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

四. 優(yōu)化 SearchBarCreator 構(gòu)造函數(shù)的代碼邏輯

寫到這里的時候,你可能發(fā)現(xiàn)了一個小問題,當(dāng)我一直去按搜索按鈕的時候,它會出現(xiàn)多個搜索框,但是我們希望的是它在全局只能出現(xiàn)一個搜索框。換個角度思考,也就是同一時間,這個被我們 new 出來的 SeachBar 實例只能出現(xiàn)一個。思考一下?,我加一個變量,isShowing 是否正在被展示 ,如果正在被展示的話,那么用戶再次調(diào)用 present 的時候,我就去調(diào)用實例自身的 dismiss 方法讓它消失,是否可行呢?
圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)測試一下:
圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)
OK,看來完美解決當(dāng)前的問題了。

五. 編寫全局唯一的調(diào)用實例

  • 在上面的這種情況下,我們已經(jīng)可以在 App.vue 文件內(nèi)去 new 一個實例來調(diào)用這個搜索框了。但是我們加入現(xiàn)在需要在 XXX.vue 文件內(nèi)調(diào)用這個搜索框呢?我難道還需要重新去引入,然后重新 new 嗎?nonono,某位大佬說過,程序員都是很懶的,不可能寫這種低級的重復(fù)代碼的。那么該如何實現(xiàn)呢

  • 打開我們之前準備的 useSearch.ts 文件,我們把之前在 App.vue 的全局生成的這個 SearchBar 實例轉(zhuǎn)換思路,使它在全局的一個 ts 文件內(nèi)生成一個,然后把這個實例自身的一些方法封裝成函數(shù),暴露給外部。那么我就可以在全局任意一個地方去調(diào)用這個實例身上的這兩個方法。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 讓我們在 App.vue 去試一下。
    這是我們之前的 App.vue 文件的調(diào)用方法。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)我們改造一下它。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)我們再次測試一下功能有沒有什么問題圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)
    如此一來就方便很多了,我們可以在任意位置去調(diào)用這個“唯一的搜索框”

六. 添加全局的快捷鍵 Command + K

  • 再此之前,我們需要理解一個概念,注意我們的 main.ts 文件,我們是把誰掛在了全局的那一個 id='app' 的真實 dom 下的?圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)
    沒錯,就是前面我們提到的 App.vue 組件。

  • 那么假如我在這個 App.vue 組件掛載的時候,給全局 window 對象身上添加一個鍵盤事件,是不是就可以了呢?怎么添加呢?其實非常非常簡單,要用到見組合按鍵,我們就需要使用到 “keydown”,具體為什么不是 “keypress” ,讀者可以自行查閱這兩者的區(qū)別,不屬于本文的主要探討內(nèi)容。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 這時候,我們先來按一下 command 看看打印的內(nèi)容是什么。這里重點的內(nèi)容是該鍵盤事件身上的metaKey 屬性。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)在這里我們還可以推算出按下 “ctrl” 的事件為圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • keydown 事件支持多個按鍵同時按下。當(dāng)我們同時按下 “command” 和 “K” 鍵,會發(fā)生什么呢?圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)但是我們發(fā)現(xiàn)好像并沒有 K:true 這個屬性呀,那我們怎么去判斷呢?別著急接著往下看。

  • 我們可以看到鍵盤事件 event 身上有個 key 屬性,它的值恰好是字符串類型的 “k”圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

這里我直接公布寫法,js 允許我們這樣判斷是否同時按下兩個按鍵。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 我們測試一下,我們?nèi)グ?App.vue 文件內(nèi)的這兩個按鈕給去掉圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)然后再打印一下我們按下 commandk 的時候。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)測試一下:圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

七. 添加出現(xiàn)的動畫

  • 在上面我們可以看到,這樣突然的出現(xiàn)好像有一絲絲的突兀。我希望這個搜索框在出現(xiàn)的時候,可以有那么一絲絲的平移效果,(類似于下面的效果)該如何做呢??圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 我這里介紹一種較為簡單的思路,我們在 App.vue 文件的 style 內(nèi)預(yù)設(shè)一個 Css 動畫,并起好名字。叫做 "searchInput"圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 然后回到我們 searBar.vue 的組件去,給我們這個組件最外層的起一個好聽的名字,我這里就叫做 searchBarWrapper圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 然后回到我們的 SearchBar.ts 文件內(nèi),也就是放我們 SeachBarCreator 構(gòu)造函數(shù)的那個文件內(nèi)。(tips:不是 useSearch.ts 哦) 我這里解釋一下思路,在調(diào)用 render 函數(shù)后,這個組件其實已經(jīng)渲染成為一個真實的 dom 元素,只不過我們還沒給它指定渲染的位置。既然是真實的 dom ,那么我們就可以通過 document.getElementById這個方法(querySelector同理,一個意思)拿到這個SearchBar.vue組件 ,接下來我只需要在調(diào)用 document.body.insertBefore 方法前,給它添加上剛剛我們在 App.vue 里預(yù)設(shè)好的類名,searchInput ,就完美達成我們想要的效果了。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 注意:style ,這個點僅僅是類名選擇器,不要忘記了基礎(chǔ)知識。圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

  • 測試一下效果:圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

八. 自動聚焦

在彈出框的 input 框?qū)崿F(xiàn)自動聚焦相比于之前講的就非常簡單了,我在這里一筆帶過了。只需要在 nextTick 中調(diào)用 input 本身的 focus 方法即可。
圖文詳解Vue3實現(xiàn)全局搜索框步驟(附代碼)

總結(jié):

之所以不喜歡使用真代碼去寫文章而大量使用截圖的原因是:我自己在搜索到自己想要的文章后,也會喜歡直接看有沒有最后的成品代碼,然后直接復(fù)制就拿過去用了,而往往忽略了自己動手去實現(xiàn)一遍才是真正理解了的過程。

所以我寫代碼的時候,盡量不寫特別復(fù)雜的邏輯,而寫一些很簡單的幾行代碼去實現(xiàn)某一個功能。是因為我希望你們真正帶入自己的思考,和一步步體會這個實現(xiàn)過程,從而舉一反三。

如果你認真看了該文章,你也許會明白現(xiàn)在很多組件庫的底層實現(xiàn)原理其實就是這樣的,比如全局彈出的dialogmodal 框等等。我們要去理解組件庫組件實現(xiàn)的思路,而不是一味的復(fù)制粘貼。

這個搜索框有很多可以更加優(yōu)化的地方,你們可以帶入自己的思考去想一想。比如

1.如何保存搜索歷史?
2.如何實現(xiàn)實時的給出搜索聯(lián)想

與君共勉才是我的初衷…

源碼

這里貼出核心代碼 SearchBar.ts 文件的源碼,希望讀者可以僅作為參考使用,希望不要直接復(fù)制粘貼。

import { h, render } from "vue"  import SearchBar from "./SearchBar.vue" class SearchBarCreator {   container: HTMLElement   appElement: HTMLElement | null   showing: boolean   _dismiss: () => void   constructor() {     this.container = document.createElement("div")     this.showing = false     this.appElement = document.body.querySelector("#app")     this.present.bind(this)     this.dismiss.bind(this)     this._dismiss = this.dismiss.bind(this)   }    present() {     if (this.showing) {       this.dismiss()     } else {       const SearchBar = h(h(SearchBar))       render(SearchBar, this.container)       const searchBarWrapperDOM =         this.container.querySelector("#searchBarWrapper")       searchBarWrapperDOM?.classList.add("animate-searchInputAnimation")       document.body.insertBefore(this.container, document.body.firstChild)       this.showing = true       this.appElement?.addEventListener("click", this._dismiss)     }   }    dismiss() {     if (this.showing && this.container) {       render(null, this.container)       document.body.removeChild(this.container)       this.showing = false       this.appElement?.removeEventListener("click", this._dismiss)     } else {       console.log("不需要關(guān)閉")     }   } }
登錄后復(fù)制

推薦學(xué)習(xí):《vue.js視頻教程》

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
日韩午夜三级在线| 在线亚洲人成电影网站色www| 黄色av片三级三级三级免费看| 亚洲国内在线| 国产精品99免视看9| 欧美福利视频一区| 亚洲国产高清在线| 欧美激情亚洲综合| 91浏览器在线观看| 日韩在线a电影| 丁香网亚洲国际| 国产又粗又猛又黄| 久久久久久国产免费a片| 波多野结衣 在线| 永久免费网站视频在线观看| 999国产在线| 日韩视频中午一区| 国产精品资源在线| 一级淫片免费看| 最近中文字幕免费| 老汉色影院首页| 日本精品在线视频| 国产视频精品免费播放| 欧美日韩中文字幕在线| 一起草在线视频| 欧美国产视频在线观看| 欧美孕妇与黑人孕交| 在线观看91精品国产麻豆| 蜜臀a∨国产成人精品| 男人天堂2024| wwwwwxxxx日本| 久久精彩视频| 色噜噜狠狠狠综合曰曰曰88av| 中文字幕一区二区三区视频| 麻豆精品蜜桃视频网站| 性生交大片免费全黄| 中文字幕精品—区二区日日骚| 欧美性高潮床叫视频| 亚洲蜜桃精久久久久久久| 亚洲视频免费在线| 亚洲欧美激情小说另类| 久久精品日韩一区二区三区| 国产suv精品一区二区883| 日韩国产欧美三级| 久久国产免费看| 老司机精品视频一区二区三区| 精品人妻aV中文字幕乱码色欲| 亚洲香蕉在线视频| 国产精品热久久| 成人av免费网站| 国产xxx精品视频大全| 性无码专区无码| 精品国产视频一区二区三区| av五月天在线| 国产黄色激情视频| 国产精品乱码| 特黄aaaaaaaaa真人毛片| 澳门黄色一级片| 久久精品无码专区| 日本中文字幕观看| 伊人精品久久久久7777| 亚洲午夜精品一区二区| 97成人在线免费视频| www.久久91| 国产免费无遮挡吸奶头视频| 免费在线黄色网| 中文字幕第2页| 丝袜美腿亚洲综合| 国产成人aaa| 亚洲欧洲美洲综合色网| 欧美日韩国产色| 国产一区二区精品丝袜| 日韩一区二区久久久| 亚洲国产精品va在看黑人| 欧美日韩你懂得| 亚洲色图在线视频| 国产黄色精品视频| 国产视频第一页| 亚洲精品毛片一区二区三区| 中文字幕亚洲乱码熟女1区2区| 日本午夜在线观看| 国产精品久久免费| 久久精品国产99国产精品澳门| 色视频欧美一区二区三区| 亚洲人成亚洲人成在线观看图片| 粉嫩高潮美女一区二区三区| 成人深夜在线观看| 麻豆久久一区二区| 国产乱码一区二区三区| 国产精品伊人色| 琪琪一区二区三区| 狠狠综合久久av一区二区| 久久精品国产久精国产爱| 国产精品三级电影| 亚洲国产精品久久久男人的天堂| 欧美色视频一区| 视频在线一区二区| 91社区国产高清| 狠狠干视频网站| 色综合久久久无码中文字幕波多| 欧美男女交配视频| 久久久国产精华液| 日韩av一级电影| 亚洲视频综合在线| 亚洲成人激情在线| 成人写真视频福利网| av日韩一区二区三区| 69久久精品无码一区二区 | 久久99精品国产麻豆婷婷| 日韩国产欧美三级| 亚洲日本欧美天堂| 亚洲女同性videos| 精品免费视频123区| 国产精欧美一区二区三区白种人| 久久99国产综合精品免费| 成人美女在线观看| 日韩午夜三级在线| 91日本视频在线| www日韩视频| 好吊日在线视频| 久久精品国产一区二区三区免费看| 国产女人18水真多18精品一级做 | 久久精品电影| 久久久久久黄色| 欧美精品在线观看播放| 日本久久久久亚洲中字幕| 国产av第一区| 国产熟妇搡bbbb搡bbbb| 人妻与黑人一区二区三区| 五月天丁香久久| 亚洲色图综合网| 久久色在线播放| 色呦呦网站入口| 成人午夜精品无码区| 欧美黑人猛猛猛| 视频一区二区国产| 亚洲午夜精品在线| 日韩一区二区在线看| 中文字幕av一区中文字幕天堂 | www.99re7| 国产精品久久久久久69| 亚洲欧美一区二区不卡| 欧美成人中文字幕在线| 日本在线观看一区二区三区| 人妻av无码一区二区三区| 奇米四色…亚洲| 精品国免费一区二区三区| 国产精选在线观看91| 国产成人在线网址| 成人黄页毛片网站| 亚洲福利小视频| 色综合666| 日韩欧美大片在线观看| 一区二区三区精密机械公司| 日本久久久久久| 北岛玲一区二区| 91在线云播放| 亚洲第一男人av| 久久久久亚洲av无码专区喷水| 亚洲男人第一av| 精品日本高清在线播放| 91视频免费进入| 久久精品第一页| 亚洲高清在线视频| 粉嫩av四季av绯色av第一区| 91香蕉一区二区三区在线观看| 成人一道本在线| 欧美国产极速在线| 欧美激情 亚洲| 久久99国产精品尤物| wwwwww日本| 国产成人愉拍精品久久| 午夜成人免费视频| 亚洲精品日产aⅴ| 成人精品在线观看视频| 91亚洲永久精品| 欧美最近摘花xxxx摘花| 97人妻精品一区二区三区免| 91免费观看国产| 日本老师69xxx| v天堂中文在线| 国产精品欧美一区二区三区| 成人欧美一区二区三区黑人孕妇 | 亚洲偷熟乱区亚洲香蕉av| 2019中文字幕免费视频| 丁香啪啪综合成人亚洲| 亚洲精品无码专区| 欧美日韩精品综合在线| 国产成人aa精品一区在线播放| 一区二区三区在线视频免费| 久久美女高清视频| 神马久久桃色视频| 欧美激情国产精品| 欧美日韩三区四区| 日本成人一级片| 亚洲精品第一页| 无码人妻精品一区二区三区66| 国产一区二区三区免费在线观看| 日韩在线视频线视频免费网站| 师生出轨h灌满了1v1| 国产精品白丝av| 欧美中文在线免费| 娇妻被老王脔到高潮失禁视频| 国产亚洲精品bt天堂精选| 亚洲伊人久久综合| 99热精品免费| 亚洲成人高清在线| 国产 国语对白 露脸| 蜜桃视频一区二区三区| 久久精品国亚洲| 一二三四在线观看视频| 欧美群妇大交群中文字幕| 日本久久精品一区二区| 国产精品卡一卡二| 亚洲欧洲日本国产| 久久99精品国产麻豆婷婷 | 在线观看亚洲天堂| 亚洲大胆人体在线| 人妻无码一区二区三区| 在线影视一区二区三区| 污污的网站18| 一区二区三区在线视频播放| 久久久综合亚洲91久久98| 国产99对白在线播放| 九九热这里只有精品6| 精品人妻在线播放| 亚洲女同精品视频| 国产免费嫩草影院| 亚洲色在线视频| 国产xxxxx在线观看| 国产精品剧情在线亚洲| 国产欧美日韩网站| 亚洲激情图片qvod| 美女在线视频一区二区| 日韩欧美一区二区三区| 性猛交╳xxx乱大交| 日韩一区二区三区免费看| av电影网站在线观看| 欧美伦理视频网站| 黄色裸体一级片| 久久偷看各类女兵18女厕嘘嘘| 中文字幕人妻一区二区三区视频| 日本中文字幕不卡免费| 丰满肥臀噗嗤啊x99av| 欧美有码在线视频| 久久一日本道色综合久久| 久久久久久a亚洲欧洲aⅴ| 精品一区二区久久久| 91制片厂免费观看| 亚洲综合免费观看高清完整版在线| 天堂8在线天堂资源bt| 一区二区久久久| 美女扒开腿免费视频| 欧美天天综合网| 情侣偷拍对白清晰饥渴难耐| 日韩电影网在线| 夜夜躁狠狠躁日日躁av| 国产精品免费视频一区二区 | 亚洲精品国产一区二区三区四区在线 | 亚洲成色777777女色窝| 国产福利拍拍拍| 97视频在线观看免费高清完整版在线观看| 午夜老司机福利| 国产手机视频在线观看| 中文字幕亚洲成人| 亚洲精品一区二区18漫画| 日韩成人av网址| 国产又粗又黄视频| 免费看污久久久| 久久久久九九视频| 99免费视频观看| 亚洲电影第1页| 国产精品毛片一区二区在线看舒淇 | 伊人网综合视频| 色综合视频网站| 国产九色精品成人porny | 日韩欧美精品中文字幕| 亚洲色婷婷一区二区三区| 78色国产精品| 国产资源在线一区| 色综合av综合无码综合网站| 9191久久久久久久久久久| 中文字幕日韩国产| 自拍偷拍亚洲色图欧美| 日韩欧美在线网站| 国产又粗又长又黄| 日本一区二区在线视频观看| 日韩欧美亚洲成人| 中文字幕av第一页| 国产亚洲精品自在久久| 在线观看不卡一区| 亚洲中文字幕在线一区| 国产精品一区在线播放| 久久精品一区蜜桃臀影院| 久久99爱视频| 高清欧美性猛交xxxx黑人猛交| 99国产欧美另类久久久精品| 亚洲欧美日韩偷拍| 国内外成人免费激情在线视频| 91欧美一区二区| 久久丫精品忘忧草西安产品| 国产精自产拍久久久久久| 亚洲国产视频一区二区| 美女又爽又黄免费视频| 天堂av免费看| 亚洲第五色综合网| 美女视频黄久久| 日韩视频在线免费看| 亚洲国产高清福利视频| 美国一区二区三区在线播放 | 久久久久久免费网| 亚洲AV成人无码精电影在线| 秋霞毛片久久久久久久久| 精品少妇一区二区三区| 久久精品国产免费| 久久中文字幕人妻| www.成人av.com| 欧美精品一区二区久久久| 色欲久久久天天天综合网| 色男人天堂av| 91久久中文字幕| 日韩视频免费观看高清在线视频| 天天射天天色天天干| 成人在线观看高清| 97超碰人人看人人| 欧美性xxxxx| 久久精品国产亚洲av无码娇色| 成人网在线观看| 亚洲精品久久久蜜桃| 精品国产免费观看| 精品久久久久久一区| 一区二区欧美视频| 国模大尺度视频| 精品少妇一区二区三区视频免付费 | 亚洲国产欧美一区二区三区久久| 久久99精品久久只有精品| av黄色在线免费观看| 色播五月综合| 欧美精品精品精品精品免费| 亚洲三级久久久| 亚洲第一网站在线观看| 能在线观看的av网站| 国产精品视频在线播放| 精品国产制服丝袜高跟| 国产精品午夜久久| 丰满人妻一区二区| 日韩女同一区二区三区| 国产男女免费视频| 亚洲综合最新在线| 日韩视频一区在线观看| 欧美—级在线免费片| 亚洲精品成av人片天堂无码| 人妻精品久久久久中文| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 国产精品一香蕉国产线看观看| 欧美mv日韩mv国产网站| 国产精品久久久久久户外露出| 日韩一级片免费| 青青草激情视频| 伊人五月天婷婷| 日韩一区免费观看| 国产成人亚洲精品| 国产亚洲一区二区在线| 欧美日韩国产页| 99久久精品一区二区| 一二三区免费视频| 黑人巨大精品欧美| 91色国产在线| 日韩精品无码一区二区三区| 欧美成人精品在线观看| 在线电影院国产精品| 亚洲欧洲成人自拍| 国产成人自拍高清视频在线免费播放| 岳乳丰满一区二区三区| 黄色国产在线播放| 91在线第一页| 国产中文字幕乱人伦在线观看| 国产亚洲情侣一区二区无| 性色av一区二区三区免费| 精品一区二区三区电影| 欧美亚洲综合在线| 亚洲色图20p| 久久久国产精品麻豆| 日韩av在线发布| 一级特黄aaaaaa大片| 老女人性淫交视频| 麻豆传媒在线看| 国产美女网站在线观看| 日韩精品欧美在线| 精品久久中出| 成人黄色中文字幕| 欧美在线亚洲在线| 高清欧美电影在线| 久久理论片午夜琪琪电影网| 最近2019好看的中文字幕免费| 亚洲成人性视频| 日韩一区二区三区视频在线 | 成人性生交xxxxx网站| 国产成一区二区| **欧美日韩vr在线| 久久乐国产精品| 中文字幕不卡av| 亚洲免费人成在线视频观看| 91官网在线观看| 18成人在线观看| 国产欧美视频一区二区三区| 久久超级碰视频| 天堂在线观看av| 性猛交xxxx| 日本麻豆一区二区三区视频|