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

折疊面板組件的設計與實現

移動開發 移動應用
本文主要介紹了 NutUI 中折疊面板組件的設計思路與實現原理,并分享了一些開發中遇到的問題,希望能在開發中幫到大家。

?前言

NutUI,大家應該不陌生吧,前端開發的同學肯定是有些了解的。NutUI 是一個京東風格的移動端組件庫,使用 Vue 語言來編寫可以在 H5,小程序平臺上的應用。

目前 NutUI 擁有 70+ 組件,支持按需引用,支持 TypeScript,支持定制主題等功能,當然也支持最新的 Vue3 語法,在開發上能有效幫助研發人員提升效率,改善開發體驗。

言歸正傳,今天我們一起了解 NutUI 中折疊面板 Collapse 的實現與設計,以及在開發過程中學習到的新知識點。

折疊面板設計

其實折疊面板組件無論是在 PC 還是 M ,都是比較常見的組件,顧名思義就是可以折疊/展開的內容區域。使用場景也比較廣泛,例如導航、文字類詳情、篩選分類等;

在組件開發階段,我們通常都會進行對比分析,取長補短。所以我們簡單通過功能上的對比來入組件的開發。

圖片

組件的本質就是提升開發效率的,我們通過對業務場景的解構和組合配置方式實現業務需求。好比組件庫是一個工具箱,每個組件就是箱子里的扳手、鉗子等工具,為業務場景提供各種工具,如何去打造一個合適趁手的工具干活,就需要我們對平時的業務開發有所了解和思考。

讓我們一起來探索吧~

實現展開收起

組件的基本交互已經明了,那我們的標題和內容的布局方式就比較簡單了。現在我們需要去完成交互的開發,也就是展開折疊的功能。

圖片

實現展開折疊的功能其實很簡單,就是通過一個變量控制內容的展示隱藏就可以了,不用考慮其他因素的情況下,這種方法的確是最高效的方式。

<template>
<div>
<div @click="handle">
標題
</div>
<div v-show="show">
測試內容測試內容測試內容測試內容測試內容測試內容
</div>
</div>
</template>
<script setup>
import { ref } from 'vue';
const show = ref(false);
const handle = () => {
show.value = !show.value;
}
</script>

但是采用這種方式可能對我們后期的功能擴展和交互效果不太友好。所以我的方案是通過改變折疊內容的 height 的方式實現的,當然實現這個方法也比較好理解。

我們主要處理 content 的內容,對于這塊樣式我們對它的 height 默認是 0,也就是內容是折起的狀態。因為每個折疊內容是無法確定的,所以我們需要動態計算內容填充后的高度,這種方式也算是一種適配方案。

我動態計算的目的是為了實現后面動畫效果,提升用戶體驗感。我利用的是 height + transform 的方式實現的,同時使用 css 的屬性 will-change 對動畫效果進行優化。

will-change 為 web 開發者提供了一種告知瀏覽器該元素會有哪些變化的方法,這樣瀏覽器可以在元素屬性真正發生變化之前提前做好對應的優化準備工作。這種優化可以將一部分復雜的計算工作提前準備好,使頁面的反應更為快速靈敏。

// 組件部分核心代碼
const wrapperRefEle: any = wrapperRef.value;
const contentRefEle: any = contentRef.value;
if (!wrapperRefEle || !contentRefEle) {
return;
}
const offsetHeight = contentRefEle.offsetHeight || 'auto';
if (offsetHeight) {
const contentHeight = `${offsetHeight}px`;
wrapperRefEle.style.willChange = 'height';
wrapperRefEle.style.height = !proxyData.openExpanded ? 0 : contentHeight;
}

以上代碼就是通過獲取元素的 DOM 來計算出內容的高度 offsetHeight 并賦值,通過高度的變化結合 transform 實現收起展開的動畫效果。

圖片

靈活的標題欄

其次就是標題欄功能的完善,增加圖標及自定義位置和相關動畫功能。我們先來看下基本用法的右側圖標,它和內容的收起展開是相呼應的,交互上展開時是上箭頭收起時是下箭頭。那么我們根據是否展開的狀態為變量,使用一個箭頭圖標就可以輕松搞定。實現的方案就是利用 css3 的 rotate 屬性,反轉 180° 就可以了。

if (parent.props.icon && !proxyData.openExpanded) {
proxyData.iconStyle['transform'] = 'rotate(0deg)';
} else {
proxyData.iconStyle['transform'] = 'rotate(' + parent.props.rotate + 'deg)';
}

為了用戶的自定義性更高,更好的擴展組件能力,對外暴露了關于圖標配置的 API,比如自定義圖標、圖標的旋轉角度等。這些配置參考不同場景,比如某些新聞報道的內容折疊旋轉 90° 。

圖片

當然,標題欄文字也可以配置相關圖標,包括圖標的位置、顏色、大小等。這種功能增加了用戶的個性化配置,他可以用來展示某些重要消息、新消息提醒,未查看信息等場景使用。

圖片

某些組件庫的開發者可能沒有此配置,首先個人感覺和組件是無關的。組件的設計是需要與業務之間進行銜接,抽象出一些功能,這樣能更好的完善組件的功能,包括后期組件的擴展等,都是在業務發展中成長的。

配置項升級

在后期的使用過程中,我們根據某些場景對組件功能進行了優化升級。

首先增加了副標題的配置,通過 sub-title 就可以輕松設置(PS: 上圖??可看到示例)。

商城類移動端中的搜索分類功能,比如下圖的這種場景。它會有默認的內容展示在外面,在折疊后其余內容進行折疊或展開,所以新增了 slot:extraRender API,讓這部分內容以插槽的形式存在,方便開發者定義不同的展示形式,便于樣式的調整等。

圖片

以上功能的實現也比較簡單,就是在代碼的中增加一個 slot 標簽接收傳入的內容即可。

<view v-if="$slots.extraRender">
<div>
<slot name="extraRender"></slot>
</div>
</view>

在這里既然提到了 slot,我就多?嗦一下[憨笑]。關于上述提到的標題及內容的展示,設計的時候考慮能讓開發者省時省力,有更多的可操作性,基本上都是以 slot 的形式來接收入參(僅限于本組件,內容展示相關),這樣的話即使后端或者前端處理數據攜帶 HTMl 標簽也可以輕松識別,無需多余處理。

圖片

面板既然都可以展開收起操作,那么反之也有禁止操作的。我提供了一個簡單的屬性設置 disabled 來確定是否可操作,實現方式就是通過設置 style 樣式實現的。

.nut-collapse-item-disabled {
color: #c8c9cc;
cursor: not-allowed;
pointer-events: none;
}

開發設計番外

01Scss 中使用變量

這個功能大家想必也不陌生,說白了就是可以通過 JS 控制 CSS 的樣式,目前 Vue3 支持我們使用在 CSS 中使用變量,直接上代碼。

<template>
<span>NutUI</sapn>
</template>


<script>
export default {
data () {
return {
color: 'red'
}
}
}
</script>


<style vars="{ color }" scoped>
span {
color: var(--color);
}
</style>

是不是很簡單,其實類似的寫法,在之前就有類似的插件支持的。

  • emotion
  • jss
  • styled-components
  • aphrodite
  • radium
  • glamor

這些插件大家感興趣的可以嘗試一下,小編用過 styled-components,還是很容易上手的,在上手前建議大家了解下 CSS-in-JS 的概念。

02組件開發適配

想成為 NutUI 的 contributor 嗎?如果也想為 NutUI 貢獻自己的組件,下面可是適配小程序的一些要點喲~

在 H5 開發時獲取 DOM 元素是比較容易的,通過 document 或者 ref 都可以。但是我們在適配小程序的時候這種方式是獲取不到的,需要根據 Taro 提供的方法去獲取。

import Taro, { eventCenter, getCurrentInstance as getCurrentInstanceTaro } from '@tarojs/taro';
eventCenter.once((getCurrentInstanceTaro() as any).router.onReady, () => {
const query = Taro.createSelectorQuery();
query.selectAll('.collapse-content').boundingClientRect();
query.exec((res) => {
console.log(res);
});
});

通過以上方法可以獲取到節點的信息,包括 width、height、x、y 等,大家可以體驗試一下查看獲取的信息。還有一點需要注意,就是在給元素設置 style 樣式時,最好是在組件中使用 style 變量接收,不要直接賦值。

// 類似這種方式改變 style
const style = reactive({
color: 'red',
height: '100px',
});


const change = () => {
style.color = 'blue';
}

03vue3 組件通信

在組件開發時,因為 nut-collapse nut-collapse-item 父子組件需要進行通信,我使用的是 provide/inject 的方式,所以對此通信方式進行了簡單的的學習了解。

關于組件通信的方式,props、emit、attrs 等等方式,大家必然已了然于胸,我就不獻丑了。現在我簡單和大家分享一下 provide/inject 的傳參形式,這個 API 在 vue2 的時候已經存在。

//a.vue 組件
//創建一個 provide
import { defineComponent, provide } from 'vue';
export default defineComponent({
setup () {
const msg: string = 'Hello NutUI';
// provide 出去
provide('msg', msg);
}
})
//b.vue 組件
//接收數據
import { defineComponent, inject } from 'vue'
export default defineComponent({
setup () {
const msg: string = inject('msg') || '';
}
})

通過以上 2 個示例,操作是不是非常簡單,但需要注意一點,provide 不是響應式的,如果你要使其具備響應性,你需要傳入也應該是響應式數據。

provide 提供的數據不考慮組件層次結構,也就是發起 provide 的組件都可以作為其所有下級組件的依賴提供者。

provide 和 inject 的實現原理主要是利用了原型和原型鏈來實現。

在 Vue3 中 provide 函數就是給當前組件實例上的 provides 對象屬性,添加鍵值對 key/value。還有一個地方就是如果當前組件和父級組件的 provides 相同時,在當前組件實例中的 provides 對象和父級,則建立鏈接,即原型 prototype。

function provide(key, value) {
if (!currentInstance) {
if ((process.env.NODE_ENV !== 'production')) {
warn(`provide() can only be used inside setup().`);
}
}
else {
// 獲取當前組件實例的 provides 屬性
let provides = currentInstance.provides;
// 獲取當前父級組件的 provides 屬性
const parentProvides = currentInstance.parent && currentInstance.parent.provides;
if (parentProvides === provides) {
// Object.create() es6創建對象的一種方式,可以理解為繼承一個對象,添加的屬性是在原型下。
provides = currentInstance.provides = Object.create(parentProvides);
}
provides[key] = value;
}
}

關于 inject 的實現我就不多贅述了,大家有興趣的可以去根據源碼做更深入的了解。

從下面代碼可以大致了解,inject 先獲取當前組件的實例對象,然后判斷是否根組件,如果是根組件則返回到 appContext 的 provides,否則就返回父組件的 provides。如果當前的 key 在 provides 上有值,就返回該值,反之則判斷是否存在默認內容,默認內容如果是個函數,就執行并且通過 call 方法把組件實例的代理對象綁定到該函數的 this 上,否則就直接返回默認內容。

function inject(key, defaultValue, treatDefaultAsFactory = false) {
// 如果是被一個函數式組件調用則取 currentRenderingInstance
const instance = currentInstance || currentRenderingInstance;
if (instance) {
// 如果intance位于根目錄下,則返回到appContext的provides,否則就返回父組件的provides
const provides = instance.parent == null
? instance.vnode.appContext && instance.vnode.appContext.provides
: instance.parent.provides;
if (provides && key in provides) {
return provides[key];
}
// 如果參數大于1個 第二個則是默認值 ,第三個參數是 true,并且第二個值是函數則執行函數。
else if (arguments.length > 1) {
return treatDefaultAsFactory && isFunction(defaultValue)
? defaultValue.call(instance.proxy)
: defaultValue;
}
}
}

大致可以這么理解 provide API 調用的時候,設置父級的 provides 為當前 provides 對象原型對象上的屬性,在 inject 獲取 provides 對象中的屬性值時,優先獲取 provides 對象自身的屬性,如果自身查找不到,則沿著原型鏈向上一個對象中去查找。

總結

本文主要介紹了 NutUI 中折疊面板組件的設計思路與實現原理,并分享了一些開發中遇到的問題,希望能在開發中幫到大家。

如果在開發中遇到問題,可隨時提 issue,NutUI 團隊的同學都會認真對待并解決問題。如您有好的組件,業務類、通用類的都可,都可向 NutUI 組件庫提交 PR,非常歡迎大家參與共建。

責任編輯:未麗燕 來源: 京東零售技術
相關推薦

2022-03-23 08:18:38

Vue3Collapse組件CSS

2022-05-25 11:24:25

CalendarNutUI移動端

2022-04-25 07:36:21

組件數據函數

2022-04-26 05:55:06

Vue.js異步組件

2012-03-27 11:08:23

Java

2021-11-19 08:15:14

Grafana 圖形運維

2024-06-11 00:00:06

.NETC#版本

2022-03-21 15:42:36

智能家居物聯網MQTT

2011-02-28 10:27:41

Visual Stud

2013-04-07 14:37:59

iOS開發可折疊tableVie

2020-10-19 10:01:12

Nodejs線程池設計

2022-12-28 08:31:38

平臺設計應用

2015-06-30 11:05:11

flexibleWebAPP設計

2015-11-03 09:28:52

Hybrid技術設計實現

2023-05-26 08:24:17

短信渠道模型

2020-10-23 08:31:15

Nodejs-Ipc設計實現

2022-09-14 09:37:22

數據系統

2022-09-12 07:17:20

redis命令redissynce

2012-05-17 12:38:43

iOS

2013-07-05 10:26:40

Android
點贊
收藏

51CTO技術棧公眾號

精品亚洲porn| 日韩美女在线| 91亚洲精品乱码久久久久久蜜桃| 欧美日韩成人在线观看| 中文字幕在线观看视频www| 污视频网站在线免费| 精品亚洲成av人在线观看| 一区二区三区高清国产| 欧美黑人又粗又大又爽免费| 成年人在线观看| 日韩中文字幕1| www.国产一区| 欧美极品jizzhd欧美仙踪林| 中文字幕av一区二区三区佐山爱| 国产精品久久久一本精品 | 日本在线观看大片免费视频| 成人午夜免费视频| 国产精品福利在线观看网址| 极品盗摄国产盗摄合集| 成人性生交大片免费看96| 色国产综合视频| 一本一道久久a久久综合精品| 亚洲成人第一区| 久热re这里精品视频在线6| 日韩亚洲欧美中文在线| 好吊操视频这里只有精品| 粉嫩一区二区| 亚洲影视在线播放| 亚洲国产精品视频一区| 亚洲第一天堂影院| 免费人成网站在线观看欧美高清| 欧美乱人伦中文字幕在线| 中文字幕一区三区久久女搜查官| 日本国产欧美| 一个色综合网站| 亚洲高清视频在线观看| 性感美女视频一二三| 精品一区二区三区久久| 国产91|九色| 国产亚洲成人av| 色婷婷热久久| 亚洲免费一在线| 中文字幕18页| 亚洲国产91视频| 日韩欧美亚洲综合| 国产精品入口芒果| 免费黄色网页在线观看| www激情久久| 国产九色精品| 中文在线免费看视频| 亚洲欧美日本日韩| 久久久久久久久91| 久久国产波多野结衣| 欧美三级美国一级| 日韩精品在线第一页| 农村末发育av片一区二区| 欧美亚洲人成在线| 欧美日韩精品一区二区三区蜜桃| 日韩avxxx| av中文字幕在线看| 一区二区三区四区亚洲| 欧美日韩视频免费在线观看| av在线二区| 久久精品人人爽人人爽| 精品无人乱码一区二区三区的优势 | 最近2019中文字幕在线高清| 爱爱免费小视频| 一区二区美女| 国产手机视频精品| 久久一区二区电影| 亚洲69av| 亚洲天堂网站在线观看视频| 欧美另类z0zx974| 国产精选一区| 亚洲人成电影在线| 国产精品国产三级国产专业不| 亚洲三级精品| 亚洲精品狠狠操| 99精品视频免费版的特色功能| 欧美成人高清视频在线观看| 3d动漫精品啪啪一区二区竹菊| 蜜臀久久99精品久久久酒店新书| av片哪里在线观看| 亚洲国产人成综合网站| 国产伦精品一区二区三区四区视频_| 超免费在线视频| 欧美日韩国产中文精品字幕自在自线| 国产va亚洲va在线va| 蜜桃视频网站在线| 亚洲日本va在线观看| 日本一道在线观看| 丰满诱人av在线播放| 五月天欧美精品| 免费高清在线观看免费| 免费视频观看成人| 日韩一区二区电影网| 美女又黄又免费的视频| 红杏视频成人| 亚洲人成在线观看网站高清| 俄罗斯毛片基地| 亚洲xxx拳头交| 国内成人精品视频| 亚洲第一在线播放| 亚洲黄色一区| 国产精品视频导航| 一二三四区在线| 激情综合色综合久久综合| 97欧洲一区二区精品免费| 日本人妻熟妇久久久久久| 久久久五月婷婷| 亚洲午夜精品一区二区| 九色91在线| 欧美在线一区二区| 中文字幕一区二区三区人妻在线视频| 女人抽搐喷水高潮国产精品| 一区二区三区视频免费在线观看| 男女做暖暖视频| 香蕉久久a毛片| 成人两性免费视频| 亚州视频一区二区三区| 中文字幕一区在线| 男人用嘴添女人下身免费视频| 成人午夜精品| 日韩免费看网站| 成人网站免费观看| 亚洲精品国产偷自在线观看| 97久久精品国产| 亚洲在线精品视频| xf在线a精品一区二区视频网站| 香蕉久久夜色| 国产拍在线视频| 555夜色666亚洲国产免| www.色天使| 国产精品88久久久久久| 国产91精品久久久久久| 国产ts人妖调教重口男| 中文字幕av一区 二区| 性欧美大战久久久久久久| 亚洲老司机网| 亚洲国产天堂久久综合网| 爱爱视频免费在线观看| 免播放器亚洲一区| 日韩av高清| 校园春色亚洲| 日韩女优电影在线观看| 波多野结衣久久久久| 日韩精品一级二级| 久久精品国产理论片免费| 日本高清在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲激情av| 日韩美女主播视频| 丰满少妇高潮在线观看| 国产婷婷一区二区| 成人黄色片视频| 欧美巨大xxxx| 欧美激情在线观看| a在线观看免费| 国产校园另类小说区| 国产亚洲综合视频| 精品五月天堂| 午夜免费在线观看精品视频| 丰满人妻一区二区| 亚洲一区二区三区四区中文字幕| 日本成人在线免费| 欧美在线黄色| 91视频-88av| 日本在线免费| 欧美福利视频一区| 黄色免费看视频| 亚洲片区在线| yellow视频在线观看一区二区| 成人午夜在线影视| 欧美一区二区三区播放老司机 | 中文一区二区在线观看| 人人爽人人av| 日韩成人综合| 91在线中文字幕| 日本乱理伦在线| 日韩视频不卡中文| 久久久久亚洲av无码专区| 成人国产亚洲欧美成人综合网| 青青草国产免费| 少妇久久久久| 国产成人高潮免费观看精品| 国产在线黄色| 56国语精品自产拍在线观看| 麻豆成人在线视频| 91网上在线视频| 亚洲不卡视频在线| 日韩丝袜视频| 国产精品一二三视频| 成人影院在线观看| 亚洲成人黄色在线| 一级片在线观看免费| 中文字幕国产精品一区二区| 亚洲美女性囗交| 亚洲一级淫片| 久久99精品久久久水蜜桃| 欧美xxx网站| 久久精品视频在线观看| 国产自产一区二区| 91精品1区2区| 欧美日韩人妻精品一区二区三区| 99久久婷婷国产综合精品电影 | 国产免费的av| 午夜视频一区二区| 91无套直看片红桃在线观看| 国产成人a级片| 国模杨依粉嫩蝴蝶150p| 成人看的羞羞网站| 国产99在线播放| 国产超碰精品| 久久在线免费观看视频| 日本中文字幕电影在线观看| 欧美精品久久久久久久多人混战| 日本三级中文字幕| 国产精品久久久久久久岛一牛影视| 中文av字幕在线观看| 亚洲香蕉网站| 欧美日本国产精品| 精品国产美女a久久9999| 欧美激情亚洲国产| √天堂资源地址在线官网| 亚洲国产精品热久久| 97人妻精品一区二区三区| 亚洲激情校园春色| 亚洲成人日韩在线| 国产不卡免费视频| 午夜免费看毛片| 亚洲一区黄色| 免费看日b视频| 日韩成人精品一区二区| 蜜桃日韩视频| 国产精品nxnn| 91视频免费在线| 亚洲国产尤物| 欧美一级大片视频| 蜜臀av国内免费精品久久久夜夜| 中文字幕精品一区二区精品| 中文字幕 视频一区| 日本韩国一区二区三区| 国产无人区码熟妇毛片多| 夜夜亚洲天天久久| 91免费公开视频| 久久综合成人精品亚洲另类欧美| 中文字幕av一区二区三区人妻少妇| 久久蜜桃资源一区二区老牛| 国产精品12345| 欧美激情五月| 潘金莲一级淫片aaaaaa播放1| 色综合蜜月久久综合网| 日韩国产高清一区| 国产免费av一区二区三区| 国产精品美女黄网| 大陆精大陆国产国语精品| 99久久精品免费看国产四区 | 欧美性猛交视频| 日韩污视频在线观看| 亚洲一卡二卡三卡四卡无卡久久| 美女网站视频色| 亚洲国产精品国自产拍av| 在线免费观看成年人视频| 91亚洲精品久久久蜜桃| 中文字幕日韩三级片| 国产v日产∨综合v精品视频| 伊人免费视频二| 国产一区二区三区视频在线播放| 亚洲另类第一页| 麻豆91精品| 国产肥臀一区二区福利视频| 香蕉亚洲视频| 成人黄色一区二区| 毛片基地黄久久久久久天堂| 奇米影视四色在线| 久久精品国产免费| 搡的我好爽在线观看免费视频| 国产综合久久久久久鬼色| 亚洲成人手机在线观看| 国产成人8x视频一区二区| 亚洲欧洲国产视频| 91视频免费观看| 人妻体内射精一区二区| 久久久久国色av免费看影院| 性猛交ⅹxxx富婆video | 色综合天天综合网中文字幕| 日韩少妇中文字幕| 欧美成人精品一区二区三区在线看| 在线成人性视频| 国内精品亚洲| 日本三级免费观看| 精品一二线国产| 九九热精品国产| 成人午夜视频在线观看| 国产精品一区二区人妻喷水| 2014亚洲片线观看视频免费| 欧美激情久久久久久久| 亚洲男人的天堂网| 国产精品xxxx喷水欧美| 欧美在线小视频| 成 人 免费 黄 色| 亚洲男人av在线| 国产秀色在线www免费观看| 色综合天天综合网国产成人网 | 亚洲国产精品t66y| jizzjizzjizz国产| 亚洲成人你懂的| 在线免费看91| 亚洲国产天堂久久国产91| 国产精品一区在线看| 欧美成人亚洲成人| 韩国久久久久久| 亚洲综合色av| 视频一区中文| 日韩欧美不卡在线| 蜜臀91精品一区二区三区 | 国产一区二区三区在线观看免费| 亚洲综合中文网| 国产精品三级视频| 黄网在线观看视频| 91精品国产综合久久福利软件| 久久精品国产亚洲a∨麻豆| 欧美巨乳在线观看| 中老年在线免费视频| 亚洲jizzjizz日本少妇| 好吊妞视频这里有精品| 一本一本久久a久久精品综合妖精| 亚洲精品国产首次亮相| 国产96在线 | 亚洲| 国产一区二区免费看| www.av欧美| 精品久久香蕉国产线看观看亚洲 | 欧美一二三区视频| 欧美一级夜夜爽| 亚洲天天影视| 国产成人一区二区三区| 精品素人av| 日韩精品一区在线视频| 国产精品资源在线| 国产日韩精品中文字无码| 欧美视频中文字幕在线| 亚洲国产av一区二区| 精品国产依人香蕉在线精品| 亚洲成人va| 欧美中日韩免费视频| 日韩视频二区| 无码成人精品区在线观看| 亚洲精品成a人| 国产av无码专区亚洲av| 久久中文字幕一区| 欧美aaaaaa| 欧美在线3区| 一区二区三区国产在线| 色综合久久五月| 亚洲成人7777| 欧美 日韩 人妻 高清 中文| 欧美精品制服第一页| 91嫩草国产线观看亚洲一区二区 | 国产黄频在线观看| 久久久久北条麻妃免费看| 四虎国产精品永久在线国在线| 神马影院我不卡| 奇米精品一区二区三区在线观看| 精品人妻一区二区三区视频| 精品女厕一区二区三区| 无码精品视频一区二区三区| 国内精品400部情侣激情| 欧美网色网址| 黑人糟蹋人妻hd中文字幕| 久久麻豆一区二区| 欧美成人精品网站| 最近2019免费中文字幕视频三| 香蕉久久aⅴ一区二区三区| 成人妇女淫片aaaa视频| 亚洲精品成人无限看| 无码人妻一区二区三区一| 亚洲成人高清在线| 精品视频一二区| 91综合免费在线| 亚洲精品一二| 亚洲理论片在线观看| 日韩欧美一区二区不卡| 超碰高清在线| 日本一区二区三区www| 三级久久三级久久| 欧产日产国产v| 亚洲精品一区二区三区福利 | 国产日本在线播放| 久久网站最新地址| 国产女人高潮时对白| 高清欧美性猛交xxxx| 欧美日本成人| 午夜久久福利视频| 欧美日韩裸体免费视频| 1024免费在线视频| 国产成人精品日本亚洲11| 蜜臀久久99精品久久久画质超高清| 欧美第一页在线观看| 日韩不卡在线观看| 小说区图片区亚洲|