国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

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

虛擬鍵盤 API 的妙用

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

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

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

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

1、虛擬鍵盤 API Summer IS HERE

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

Summer:基本概念

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

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

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

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

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

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

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

Summer:使用方式

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

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

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

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

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

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

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

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

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

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

下面的代碼片段使用keyboard-inset-height 變量來為虛擬鍵盤在聊天式應用程序中的消息列表和輸入字段下方預留空間。當虛擬鍵盤隱藏時,env()函數返回0px,keyboard網格區域被隱藏。消息和輸入元素可以占據整個視口的高度。當虛擬鍵盤出現時,keyboard網格區域的高度與虛擬鍵盤的高度相同。ROG28資訊網——每日最新資訊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 屬性的元素在點擊或觸摸時也會觸發虛擬鍵盤。 在某些情況下,可能需要防止這種行為,并在不同的事件之后顯示虛擬鍵盤。ROG28資訊網——每日最新資訊28at.com

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

下面的代碼展示了如何使用 virtualkeyboardpolicy 屬性和 navigator.virtualKeyboard.show() 方法,在雙擊事件上顯示虛擬鍵盤:ROG28資訊網——每日最新資訊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 是一個實驗性功能,其支持性不是很好:ROG28資訊網——每日最新資訊28at.com

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

2、問題探討 Summer IS HERE

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Summer:啟用虛擬鍵盤 API

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

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

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

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

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

html {  virtual-keyboard: overlays-content;}

Summer:虛擬鍵盤 API 的用例

底部固定操作

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

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

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

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

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

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

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

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

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

無法滾動到頁面的最后

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

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

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

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

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

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

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

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

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

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

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

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

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

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

浮動操作按鈕

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

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

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

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

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

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

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

對桌面使用不同的值

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

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

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

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

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

Summer:聊天布局

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

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

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

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

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

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

LinkedIn 帖子表單和導航

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

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

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

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

注意,垂直空間太小。該怎么辦呢?通過使用比較函數和虛擬鍵盤 API,可以在顯示鍵盤時隱藏導航。ROG28資訊網——每日最新資訊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() 函數的第二部分處于非激活狀態。ROG28資訊網——每日最新資訊28at.com

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

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

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

導航

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

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

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

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

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

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

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

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

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

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

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

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

標簽:
  • 熱門焦點
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
欧美优质美女网站| 久久精品国产免费看久久精品| 欧美日本国产精品| 石原莉奈在线亚洲三区| 欧美性高清videossexo| 97精品国产97久久久久久久久久久久| 国产精品五月天| 91久久精品网| 亚洲乱亚洲高清| 欧美日本高清| 国产日韩精品一区观看| fc2成人免费人成在线观看播放| 亚洲男女毛片无遮挡| 欧美精品18+| 亚洲一区激情| 亚洲第一毛片| 欧美一区不卡| 丁香激情综合国产| 国内国产精品久久| 日韩电影在线看| 午夜日韩在线电影| 亚洲成人黄色小说| 亚洲一区二区黄色| 亚洲国产一区二区三区青草影视 | 99热这里只有成人精品国产| 欧美激情aⅴ一区二区三区| 97aⅴ精品视频一二三区| 欧美日韩在线播放一区二区| av一本久道久久综合久久鬼色| 成人小视频免费观看| 99久久er热在这里只有精品66| 北岛玲一区二区三区四区| 99久久伊人网影院| 精品国产乱码久久久久久牛牛| 欧美性欧美巨大黑白大战| 在线欧美小视频| 欧美最猛黑人xxxxx猛交| 91精品国产aⅴ一区二区| 国产日韩欧美电影| 亚洲h动漫在线| 成人av第一页| 亚洲一区日韩在线| 91精品国产全国免费观看 | 奇米影视一区二区三区小说| 国产成人av电影免费在线观看| 欧美日韩一区二区视频在线 | 久久久国产精品不卡| 性欧美疯狂xxxxbbbb| 波多野结衣亚洲| 西西人体一区二区| 久久人人爽人人爽| 奇米综合一区二区三区精品视频| 丁香六月久久综合狠狠色| 亚洲一区在线直播| 国产精品久久久久毛片软件| 久久99这里只有精品| 一区二区日本视频| 久久久久九九视频| 国产真实精品久久二三区| 亚洲影视综合| 亚洲宅男天堂在线观看无病毒| 欧美成人有码| 欧美国产综合一区二区| 狠狠入ady亚洲精品| 国产午夜三级一区二区三| 影音先锋久久资源网| 精品视频色一区| 亚洲人成网站精品片在线观看 | 五月婷婷激情综合网| 国产一区视频在线观看免费| 一本色道久久加勒比精品| 国产精品美女一区二区| 欧美有码视频| 国产欧美精品在线观看| 欧美 日韩 国产 一区| 国产色产综合色产在线视频 | 成人国产亚洲欧美成人综合网 | 欧美色图天堂网| 成人av网站免费| 亚洲黄色录像片| 在线播放欧美女士性生活| 亚洲免费观看高清在线观看| 亚洲久色影视| 中文字幕精品三区| 国产伦精品一区二区三区免费| 午夜国产一区| 亚洲黄色av一区| 91 com成人网| 国产精品入口66mio| 99天天综合性| 国产欧美日韩视频一区二区| 国产在线播精品第三| 狠狠爱成人网| 精品国偷自产国产一区| 亚洲电影中文字幕在线观看| 麻豆成人在线播放| 一区二区三区免费看视频| 欧美久久一级| 国产一区二区三区在线观看精品| 91精品国产综合久久蜜臀| 九色综合国产一区二区三区| 亚洲精品一区在线观看| 一本色道久久综合| 国产不卡视频一区| 五月天精品一区二区三区| 欧美日韩精品久久| 欧美—级在线免费片| 欧美99在线视频观看| 国产三级精品视频| 亚洲黄页一区| 亚洲地区一二三色| 91国模大尺度私拍在线视频 | 亚洲一区二区三区国产| fc2成人免费人成在线观看播放 | 欧美狂野另类xxxxoooo| 午夜久久黄色| 亚洲欧洲综合另类| 亚洲欧美电影在线观看| 日韩高清国产一区在线| 欧美专区在线观看一区| 国产精品一区二区三区99| 精品精品国产高清一毛片一天堂| 欧美福利网址| 亚洲精品成人少妇| 欧美自拍偷拍午夜视频| 成人av动漫在线| 一区在线中文字幕| 香蕉免费一区二区三区在线观看| 日韩成人av影视| 日韩一级片网址| 欧美另类女人| 午夜国产不卡在线观看视频| 欧美挠脚心视频网站| 欧美bbbxxxxx| 五月天亚洲精品| 91精品国产免费久久综合| 欧美成人在线免费观看| 日韩综合一区二区| 亚洲精品一区二区三区蜜桃下载 | 亚洲精品一级| 国内偷窥港台综合视频在线播放| 久久影音资源网| 免费久久久一本精品久久区| 国内外成人在线| 亚洲蜜臀av乱码久久精品| 欧美性大战久久久久久久蜜臀| 99re免费视频精品全部| 亚洲r级在线视频| 欧美成人vps| 男女精品网站| 欧美色123| 99爱精品视频| 国产精品福利av | 国产精品国产三级国产aⅴ原创 | 日韩一区二区三区观看| 99国产精品99久久久久久粉嫩| 另类小说色综合网站| 中文字幕 久热精品 视频在线 | 日韩欧美不卡在线观看视频| 国产精品美女黄网| youjizz国产精品| 日韩—二三区免费观看av| 国产精品久久久久久久久晋中 | 国产日韩欧美不卡| 欧美色国产精品| 国产日韩专区| 欧美激情1区2区| 国产在线国偷精品免费看| 亚洲女女做受ⅹxx高潮| 久久这里只有精品6| 欧美色图一区二区三区| 亚洲一区二区网站| 欧美日韩国产高清| 国v精品久久久网| 免费成人性网站| 亚洲香蕉伊在人在线观| 国产精品丝袜一区| 欧美电影免费提供在线观看| 老**午夜毛片一区二区三区 | 国产精品丝袜黑色高跟| 欧美精品一区二区久久婷婷| 欧美日韩国产精选| 色综合久久88色综合天天免费| 伊人久久成人| 欧美国产另类| 97精品国产97久久久久久久久久久久| 免费三级欧美电影| 亚洲福利国产精品| 亚洲综合小说图片| 亚洲欧美日韩小说| 亚洲欧洲性图库| 琪琪一区二区三区| 亚洲影院免费观看| 亚洲黄色小说网站| 亚洲人成在线观看一区二区| 国产精品色哟哟| 国产精品短视频| 亚洲欧美成人一区二区三区| ●精品国产综合乱码久久久久 | 欧美理论在线|