日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

虛擬鍵盤 API 的妙用

來源: 責編: 時間:2023-08-05 11:46:01 4951觀看
導讀你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生以及如何使用虛擬鍵盤 API 來解決這個問題。

tVp28資訊網——每日最新資訊28at.com

你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?tVp28資訊網——每日最新資訊28at.com

多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生以及如何使用虛擬鍵盤 API 來解決這個問題。tVp28資訊網——每日最新資訊28at.com

1、虛擬鍵盤 API Summer IS HERE

在探討這個問題之前,我們先來看看什么是虛擬鍵盤 API。tVp28資訊網——每日最新資訊28at.com

Summer:基本概念

當屏幕虛擬鍵盤在平板電腦、手機或其他可能沒有硬件鍵盤的設備上出現和隱藏時,虛擬鍵盤 API 使開發人員能夠控制應用的布局。Web 瀏覽器通常通過調整視口高度并在聚焦時滾動到輸入字段來自行處理虛擬鍵盤。tVp28資訊網——每日最新資訊28at.com

下圖說明了當設備隱藏和顯示屏幕虛擬鍵盤時,網頁上視口高度和滾動位置的差異。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

更復雜的應用或特定設備(例如多屏手機)在虛擬鍵盤出現時可能需要對布局進行更多控制。tVp28資訊網——每日最新資訊28at.com

下圖顯示了當虛擬鍵盤僅出現在兩個屏幕之一上時,雙屏設備上發生的情況。兩個屏幕上的視口都會變小以容納虛擬鍵盤,從而在屏幕上留下不顯示虛擬鍵盤的浪費空間。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

虛擬鍵盤 API 可以用于選擇退出瀏覽器自動處理虛擬鍵盤的方式,并完全控制它。使用虛擬鍵盤 API,當表單控件獲得焦點時,鍵盤仍然會根據需要出現和消失,但視口不會更改,并且可以使用 JavaScript 和 CSS 來調整布局。tVp28資訊網——每日最新資訊28at.com

Summer:使用方式

虛擬鍵盤 API 包括三個部分:tVp28資訊網——每日最新資訊28at.com

  • 虛擬鍵盤 API 接口,通過 navigator.virtualKeyboard 訪問,用于取消自動虛擬鍵盤行為、以編程方式顯示或隱藏虛擬鍵盤,以及獲取虛擬鍵盤的當前位置和大小。
  • CSS 環境變量 keyboard-inset-* 提供了有關虛擬鍵盤位置和大小的信息。
  • virtualkeyboardpolicy 屬性指定虛擬鍵盤是否應出現在可編輯元素上。

取消瀏覽器的自動虛擬鍵盤行為

要取消瀏覽器的自動虛擬鍵盤行為,可以使用 navigator.virtualKeyboard.overlaysContent = true。這樣,瀏覽器就不會自動調整視口大小以為虛擬鍵盤騰出空間,而是將虛擬鍵盤覆蓋在內容上。tVp28資訊網——每日最新資訊28at.com

使用 JavaScript 檢測虛擬鍵盤的幾何屬性

一旦取消了默認的瀏覽器行為,可以使用 navigator.virtualKeyboard.boundingRect 獲取當前虛擬鍵盤的幾何屬性,并使用 CSS 和 JavaScript 進行相應的布局調整。此外,還可以通過使用 geometrychange 事件監聽幾何屬性的變化,例如鍵盤的顯示或隱藏。tVp28資訊網——每日最新資訊28at.com

這對于將重要的用戶界面元素定位在虛擬鍵盤不覆蓋的區域非常有用。tVp28資訊網——每日最新資訊28at.com

下面的代碼片段使用 geometrychange 事件來檢測虛擬鍵盤幾何屬性的變化;然后通過訪問 boundingRect 屬性來查詢虛擬鍵盤的大小和位置:tVp28資訊網——每日最新資訊28at.com

if ("virtualKeyboard" in navigator) {  navigator.virtualKeyboard.overlaysContent = true;  navigator.virtualKeyboard.addEventListener("geometrychange", (event) => {    const { x, y, width, height } = event.target.boundingRect;  });}

使用CSS環境變量檢測虛擬鍵盤的幾何屬性

虛擬鍵盤 API 還提供了以下 CSS 環境變量:tVp28資訊網——每日最新資訊28at.com

  • keyboard-inset-top
  • keyboard-inset-right
  • keyboard-inset-bottom
  • keyboard-inset-left
  • keyboard-inset-width
  • keyboard-inset-height

keyboard-inset-* 環境變量可用于使用CSS調整布局以適應虛擬鍵盤的顯示。它們通過距離視口邊緣的上、右、下和左插圖定義一個矩形。如果需要,也可以使用寬度和高度變量。tVp28資訊網——每日最新資訊28at.com

下面的代碼片段使用keyboard-inset-height 變量來為虛擬鍵盤在聊天式應用程序中的消息列表和輸入字段下方預留空間。當虛擬鍵盤隱藏時,env()函數返回0px,keyboard網格區域被隱藏。消息和輸入元素可以占據整個視口的高度。當虛擬鍵盤出現時,keyboard網格區域的高度與虛擬鍵盤的高度相同。tVp28資訊網——每日最新資訊28at.com

<style>  body {    display: grid;    margin: 0;    height: 100vh;    grid-template:      "messages" 1fr      "input" auto      "keyboard" env(keyboard-inset-height, 0px);  }</style><ul id="messages"></ul><input type="text" /><script>  if ("virtualKeyboard" in navigator) {    navigator.virtualKeyboard.overlaysContent = true;  }</script>

控制可內容編輯元素上的虛擬鍵盤

默認情況下,使用 contenteditable 屬性的元素在點擊或觸摸時也會觸發虛擬鍵盤。 在某些情況下,可能需要防止這種行為,并在不同的事件之后顯示虛擬鍵盤。tVp28資訊網——每日最新資訊28at.com

將 virtualkeyboardpolicy 屬性設置為 manual,以阻止瀏覽器對虛擬鍵盤的默認處理,并通過使用虛擬鍵盤 API 的 show() 和 hide() 方法自行處理。tVp28資訊網——每日最新資訊28at.com

下面的代碼展示了如何使用 virtualkeyboardpolicy 屬性和 navigator.virtualKeyboard.show() 方法,在雙擊事件上顯示虛擬鍵盤:tVp28資訊網——每日最新資訊28at.com

<contenteditable virtualkeyboardpolicy="manual" id="editor"></div><script>  if ("virtualKeyboard" in navigator) {    navigator.virtualKeyboard.overlaysContent = true;    const editor = document.getElementById("editor");    editor.addEventListener("dblclick", () => {      navigator.virtualKeyboard.show();    });  }</script>

Summer:瀏覽器支持

注意,虛擬鍵盤 API 是一個實驗性功能,其支持性不是很好:tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

2、問題探討 Summer IS HERE

上面介紹了虛擬鍵盤 API 的基本使用,聽起來可能比較抽象,下面就來看一個實際的例子,通過這個例子來深入討論問題的細節。tVp28資訊網——每日最新資訊28at.com

這是一個具有以下內容的 UI:tVp28資訊網——每日最新資訊28at.com

  • 粘性標題
  • 粘性浮動操作按鈕

tVp28資訊網——每日最新資訊28at.com

當用戶專注于輸入時,虛擬鍵盤就會顯示。這時,瀏覽器將向上滾動以使輸入位于鍵盤上方,因此粘性標題和浮動按鈕將消失。看起來像是這樣的:tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

一般來說,這是移動瀏覽器中的默認行為。從用戶體驗的角度來看,隱藏部分 UI 可能會很困惑,尤其是那些與鍵盤處于激活狀態時正在執行的當前操作相關的部分。tVp28資訊網——每日最新資訊28at.com

在幕后,發生的事情類似于下圖這樣:tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

用技術術語來說,可見部分稱為視覺視口,隱藏部分+頁面上所有元素的其余部分稱為布局視口。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

這時問題就出現了:當虛擬鍵盤處于激活狀態時,視覺視口的尺寸會縮小。tVp28資訊網——每日最新資訊28at.com

下面來使用虛擬鍵盤 API 修復隱藏在鍵盤下的內容。借助虛擬鍵盤 API,可以定義視覺視口和布局視口是一樣的。這樣就可以使用以下 CSS 環境變量來檢測鍵盤位置和尺寸:tVp28資訊網——每日最新資訊28at.com

  • keyboard-inset-top
  • keyboard-inset-right
  • keyboard-inset-bottom
  • keyboard-inset-left
  • keyboard-inset-width
  • keyboard-inset-height

tVp28資訊網——每日最新資訊28at.com

通過使用上述變量,可以在虛擬鍵盤處于激活狀態時更改布局。tVp28資訊網——每日最新資訊28at.com

Summer:啟用虛擬鍵盤 API

默認情況下,虛擬鍵盤 API 是不可用的,需要使用 Javascript 來啟用它。tVp28資訊網——每日最新資訊28at.com

if ("virtualKeyboard" in navigator) {  navigator.virtualKeyboard.overlaysContent = true}

這有點奇怪,還需使用 Javascript 來啟用。當然,我們也可以使用這樣的 meta 標簽來啟用:tVp28資訊網——每日最新資訊28at.com

<meta  name="viewport"  content="width=device-width, initial-scale=1.0, virtual-keyboard=overlays-content"/>

或者使用 CSS 屬性:tVp28資訊網——每日最新資訊28at.com

html {  virtual-keyboard: overlays-content;}

Summer:虛擬鍵盤 API 的用例

底部固定操作

在較小的視口上,我們可能需要將按鈕或頁腳固定在 UI 底部:tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

當輸入框處于激活狀態時,checkout 按鈕將位于虛擬鍵盤下方,因此它被隱藏了。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

可以使用虛擬鍵盤 API 輕松解決這個問題:tVp28資訊網——每日最新資訊28at.com

input {  font-size: 16px;}.cta {  bottom: env(keyboard-inset-height, 0);}

在移動設備上,bottom 值將等于鍵盤高度,從而用該值偏移 checkout 按鈕。 如果瀏覽器不支持該 API,則默認為零。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

可以看到,由于頭部和固定底部的存在空間減少了。如果垂直空間足夠,就可以使用垂直媒體查詢來顯示頭部。tVp28資訊網——每日最新資訊28at.com

無法滾動到頁面的最后

當頁面底部有一個使用 position: fixed 定位的元素時,通常會添加一個 padding-bottom 來抵消頁面高度,以便用戶可以滾動到最底部。tVp28資訊網——每日最新資訊28at.com

例如,假設有一個位于頁面底部的固定定位元素,就可以通過為內容區域添加一個與該元素(cta)高度相等的 padding-bottom 來實現滾動到頁面最底部:tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

body {  --cta-height: 60px;  padding-bottom: var(--cta-height);}.cta {  bottom: env(keyboard-inset-height, 0);}

padding-bottom應該是一個等于或大于固定元素高度的值。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

那么當使用虛擬鍵盤時會發生什么呢?考慮以下示意圖:tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

當虛擬鍵盤處于激活狀態時,使用固定元素的高度作為padding-bottom的值是不夠的。我們需要將鍵盤高度也考慮在內。如下所示:tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

為了解決這個問題,就需要檢測輸入框是否處于焦點狀態,并根據焦點狀態來改變padding-bottom的值。tVp28資訊網——每日最新資訊28at.com

body:has(input:focus) {  padding-bottom: calc(    var(--cta-height) + env(keyboard-inset-height, 0)  );}

那在桌面瀏覽器上會發生什么呢?這種情況下,env() 函數將回退到 0,并且將得到 var(--cta-height) 的值。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

浮動操作按鈕

在頁面右下角有一個浮動操作按鈕。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

當虛擬鍵盤激活時,懸浮按鈕應該移動到虛擬鍵盤上方。但是,就像最初的例子中一樣,浮動按鈕會被鍵盤遮擋。tVp28資訊網——每日最新資訊28at.com

為了解決這個問題,可以使用 env(keyboard-inset-height) 值。tVp28資訊網——每日最新資訊28at.com

.fab {  bottom: calc(1rem + env(keyboard-inset-height, 0rem));}

這里使用了 1rem 加上鍵盤的高度,以避免懸浮按鈕直接位于鍵盤頂部邊緣。在使用 CSS 比較函數時,需要注意的是,在 env() 函數中使用無單位的數值作為回退值會導致 Safari 上的整個布局出現問題,所以必須添加 rem 單位。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

對桌面使用不同的值

假設想在桌面瀏覽器上稍微偏移懸浮按鈕,該怎么做呢? 可以使用 max() 比較函數,它是有效的。tVp28資訊網——每日最新資訊28at.com

.fab {  bottom: max(2rem, 1rem + env(keyboard-inset-height, 0rem));}

它的工作原理如下:tVp28資訊網——每日最新資訊28at.com

  • 比較函數將在兩個值之間進行比較。由于在桌面上,env(keyboard-inset-height) 的計算結果為零,所以最大值是 2rem。
  • 在移動設備上,最大值是第二個值。

tVp28資訊網——每日最新資訊28at.com

Summer:聊天布局

先來看下面的圖:tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

當虛擬鍵盤激活時,標題和消息輸入框都會被隱藏起來。可以使用 env(keyboard-inset-height) 作為 grid-row 屬性的值。tVp28資訊網——每日最新資訊28at.com

.layout {  display: grid;  grid-template-rows: auto minmax(0, 1fr) auto env(keyboard-inset-height, 0);  height: 100dvh;}

以下是經過上述修復后的效果:tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

LinkedIn 帖子表單和導航

虛擬鍵盤 API 一個很適用的例子就是 Linkedin 帖子的表單和導航的顯示方式。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

帖子表單和導航固定在底部。當用戶激活輸入框時,它看起來像這樣:tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

注意,垂直空間太小。該怎么辦呢?通過使用比較函數和虛擬鍵盤 API,可以在顯示鍵盤時隱藏導航。tVp28資訊網——每日最新資訊28at.com

.post-form,.nav {  position: fixed;  left: 0;  right: 0;}.post-form {  bottom: max(48px, env(keyboard-inset-height, 0px));}.nav {  bottom: max(0px, env(keyboard-inset-height, 0) - 100px);}
帖子表單

默認狀態下,表單距離底部偏移 48px。 在此狀態下,max() 函數的第二部分處于非激活狀態。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

當虛擬鍵盤激活時,max() 函數的第二個部分將生效,bottom 值將變為鍵盤的高度。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

導航

導航欄的位置是 bottom: 0。現在激活的是 max() 函數的第一部分。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

當虛擬鍵盤激活時,我們將把導航欄移動到鍵盤下方。這里的 100px 是一個隨機數,重點是添加一個大于導航欄高度的值。tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

效果如下:tVp28資訊網——每日最新資訊28at.com

tVp28資訊網——每日最新資訊28at.com

Summer:參考資料tVp28資訊網——每日最新資訊28at.com

  • https://developer.mozilla.org/en-US/docs/Web/API/VirtualKeyboard_API。
  • https://ishadeed.com/article/virtual-keyboard-api/。

本文鏈接:http://www.www897cc.com/showinfo-26-141-0.html虛擬鍵盤 API 的妙用

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: .NET 程序的 GDI 句柄泄露的再反思

下一篇: 一文掌握 Golang 模糊測試(Fuzz Testing)

標簽:
  • 熱門焦點
  • 消息稱迪士尼要拍真人版《魔發奇緣》:女主可能也找黑人演員

    8月5日消息,迪士尼確實有點忙,忙著將不少動畫改成真人版,繼《美人魚》后,真人版《白雪公主》、《魔發奇緣》也在路上了。據外媒消息稱,迪士尼將打造真人版
  • 0糖0卡0脂 旭日森林仙草烏龍茶優惠:15瓶到手29元

    旭日森林無糖仙草烏龍茶510ml*15瓶平時要賣為79.9元,今日下單領取50元優惠券,到手價為29.9元。產品規格:0糖0卡0脂,添加草本仙草汁,清涼爽口,富含茶多酚,保留
  • 摸魚心法第一章——和配置文件說拜拜

    為了能摸魚我們團隊做了容器化,但是帶來的問題是服務配置文件很麻煩,然后大家在群里進行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨立配置中心和k8s作為配
  • 之家push系統迭代之路

    前言在這個信息爆炸的互聯網時代,能夠及時準確獲取信息是當今社會要解決的關鍵問題之一。隨著之家用戶體量和內容規模的不斷增大,傳統的靠"主動拉"獲取信息的方式已不能滿足用
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優雅、泛用的函數。本文將首先介紹柯里化和反柯里化的概念、實現原理和應用
  • 一個注解實現接口冪等,這樣才優雅!

    場景碼猿慢病云管理系統中其實高并發的場景不是很多,沒有必要每個接口都去考慮并發高的場景,比如添加住院患者的這個接口,具體的業務代碼就不貼了,業務偽代碼如下:圖片上述代碼有
  • 重估百度丨“晚熟”的百度云,能等到春天嗎?

    &copy;自象限原創作者|程心排版|王喻可2016年7月13日,百度云計算戰略發布會在北京舉行,宣告著百度智能云的正式啟程。彼時的會場座無虛席,甚至排隊排到了門外,在場的所有人幾乎都
  • 共享單車的故事講到哪了?

    來源丨海克財經與共享充電寶相差不多,共享單車已很久沒有被國內熱點新聞關照到了。除了一再漲價和用戶直呼用不起了。近日多家媒體再發報道稱,成都、天津、鄭州等地多個共享單
  • iQOO Neo8 Pro評測:旗艦雙芯加持 最強性能游戲旗艦

    【Techweb評測】去年10月,iQOO推出了一款Neo7手機,該機搭載了聯發科天璣9000+,配備獨顯芯片Pro+,帶來了同價位段最佳的游戲體驗,一經上市便受到了諸多用
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
午夜精品久久久久久久男人的天堂| 亚洲电影免费观看高清完整版在线 | 国产精品久久国产精品99gif| 国产精品啊v在线| 国产精品一区一区三区| 樱桃国产成人精品视频| 亚洲人成人77777线观看| 亚洲午夜激情免费视频| 欧美在线免费视频| 欧美国产一区二区在线观看 | 狠狠综合久久| 日韩亚洲欧美在线观看| 性欧美1819性猛交| 欧美大片91| 国产情人节一区| 亚洲精品三级| 久久国产精品久久w女人spa| 欧美韩日一区二区三区| 国产日产高清欧美一区二区三区| 亚洲激情成人在线| 性色av一区二区三区红粉影视| 欧美成人黄色小视频| 国产女人18毛片水18精品| 亚洲日本黄色| 久久久精品国产一区二区三区| 欧美日韩亚洲激情| 亚洲电影激情视频网站| 午夜久久影院| 欧美日韩国产成人在线| 一区在线播放视频| 销魂美女一区二区三区视频在线| 欧美激情在线有限公司| 精品91久久久久| 亚洲欧美中日韩| 欧美日韩亚洲精品内裤| 亚洲成人在线视频网站| 欧美一区二区私人影院日本| 欧美日韩亚洲免费| 亚洲高清在线观看| 欧美在线www| 国产精品久久婷婷六月丁香| 亚洲精品视频啊美女在线直播| 久久久久成人网| 国产精品综合色区在线观看| 一本色道婷婷久久欧美| 欧美国产精品专区| 亚洲欧美日韩另类| 欧美日韩国产一区二区| 最新成人在线| 麻豆91精品| 一区二区亚洲精品| 香蕉成人伊视频在线观看| 欧美午夜精品久久久久久超碰| 亚洲日韩视频| 欧美成人自拍| 在线成人黄色| 久久免费视频网站| 国产一区二区精品丝袜| 亚洲欧美日韩国产一区二区三区 | 欧美激情精品久久久六区热门 | 1024亚洲| 老司机午夜精品视频| 一区二区三区在线高清| 久久国内精品视频| 国产亚洲va综合人人澡精品| 国产视频亚洲| 亚洲欧美视频在线| 国产精品一区二区久久国产| 亚洲天堂av电影| 国产精品99免费看| 在线午夜精品自拍| 欧美视频专区一二在线观看| 亚洲美女免费精品视频在线观看| 欧美成人亚洲成人| 亚洲精品视频啊美女在线直播| 欧美aa在线视频| 亚洲欧洲一区二区在线播放 | 亚洲成在人线av| 欧美成人一区二区三区片免费| 亚洲国产精品ⅴa在线观看| 免费日韩av| 亚洲精品一区中文| 欧美日韩一区二区三区免费看| 一区二区激情视频| 国产精品久久久久9999高清 | 欧美日韩在线一区二区| 亚洲一区二区三区四区五区午夜| 国产精品爱久久久久久久| 亚洲欧美精品suv| 国产日韩欧美一区二区三区四区| 久久成人免费视频| 在线精品亚洲一区二区| 欧美成人一区二区三区在线观看 | 在线看视频不卡| 欧美激情片在线观看| 一区二区三区高清在线观看| 国产精品激情| 久久精品亚洲国产奇米99| 亚洲丰满在线| 欧美日韩网址| 午夜日韩在线观看| 伊人一区二区三区久久精品| 欧美激情第9页| 亚洲无人区一区| 国产亚洲成年网址在线观看| 美女脱光内衣内裤视频久久影院 | 激情一区二区三区| 欧美精品免费播放| 亚洲你懂的在线视频| 国产在线播放一区二区三区| 欧美99久久| 亚洲午夜精品国产| 狠狠久久婷婷| 欧美日韩ab| 欧美一区中文字幕| 91久久精品一区二区别| 国产精品成人一区二区艾草| 久久精品成人欧美大片古装| 亚洲国产精品一区| 国产精品久久国产精品99gif | 国产精品xnxxcom| 久久久久久久久久码影片| 亚洲精品免费在线播放| 国产毛片精品视频| 欧美fxxxxxx另类| 亚洲欧美综合| 亚洲精品日本| 国产日韩欧美一区二区三区在线观看 | 亚洲成人原创 | 国产精品av一区二区| 欧美中在线观看| 亚洲蜜桃精久久久久久久| 国产喷白浆一区二区三区 | 黄色精品一二区| 欧美日本不卡高清| 久久精品国产v日韩v亚洲 | 久久精品国产96久久久香蕉| 亚洲免费av观看| 黄色成人在线网站| 欧美午夜一区二区| 另类亚洲自拍| 性欧美18~19sex高清播放| 亚洲片区在线| 国内精品嫩模av私拍在线观看 | 亚洲日韩欧美视频一区| 国产一级精品aaaaa看| 欧美日韩午夜在线视频| 久久在线播放| 欧美一级网站| 一区二区三区欧美日韩| 在线观看视频一区二区| 国产麻豆成人精品| 欧美日韩一区国产| 欧美大胆成人| 久久夜色精品国产| 欧美一区日韩一区| 亚洲午夜国产一区99re久久| 最近中文字幕日韩精品| 国产在线欧美日韩| 国产精品日韩二区| 欧美日韩在线另类| 欧美极品欧美精品欧美视频| 久久久久久久久综合| 午夜在线观看欧美| 亚洲一区二区三区高清不卡| 亚洲精品欧美专区| 亚洲国产一区二区三区在线播 | 欧美精品二区三区四区免费看视频| 久久久精品五月天| 欧美一区国产二区| 亚洲在线国产日韩欧美| 洋洋av久久久久久久一区| 亚洲片国产一区一级在线观看| 1024国产精品| 在线电影国产精品| 国产自产女人91一区在线观看| 国产精品亚洲不卡a| 国产精品sm| 国产精品成人一区二区三区吃奶| 欧美日本不卡高清| 欧美精品一区二区三区很污很色的| 麻豆国产精品一区二区三区| 久久久精品国产免大香伊 | 午夜精品久久久久久久99水蜜桃| 一本久道久久综合狠狠爱| 亚洲人成毛片在线播放| 亚洲国产色一区| 亚洲高清视频一区二区| 一色屋精品视频免费看| 狠狠色狠狠色综合日日小说| 国产一区二区主播在线| 国产三级精品三级| 国产亚洲精品bv在线观看| 国产欧美三级| 国产亚洲欧美激情| 国产一区二区高清| 国产一区二区三区免费不卡 | 亚洲区国产区| 亚洲美女黄网| 夜夜爽av福利精品导航| 一区二区三区久久精品| 中文欧美在线视频| 亚洲线精品一区二区三区八戒| 亚洲影视九九影院在线观看|