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

降本增效,攜程市場DIY商品卡片系統的設計與實現

開發 新聞
由于傳統商卡開發模式無法適應當前業務的快速發展,我們通過對開發中現有問題的分析,將UI和邏輯解耦設計了商卡系統,通過對CSS模塊的抽象,設計了商卡各個字段組件。

一、背景

攜程各個BU各個時期都有不同營銷頁面,數量眾多,其中很重要的一塊是產品模塊,運營需求的產品卡片樣式眾多,各個BU展示字段差別巨大,無法利用通用樣式,因此如需新增卡片或字段,傳統做法是運營提需求給設計,再提需求給開發,經過需求評審,正式開發,發布測試上線等等。

每次遇到大促活動或者接入新的業務方,都需要重新設計及開發商卡,而新的商卡大多只是新增一些換膚樣式,或個別字段,這卻需要開發人員多寫一套樣式代碼或新增字段樣式,同一個樣式應用于不同的業務方也需要重新進行開發,極大地浪費了開發和設計資源。

在DIY商品卡片系統開發前,由于開發成本的限制,營銷頁面上常用的商品卡片樣式基本固定為十幾種,這在用戶看來缺乏新意,吸引力不足,從而在一定程度上影響了營銷頁面商卡的點擊量。

綜上所述,為解決傳統商卡存在的以下問題:

  • 即使樣式差別很小也需要重復開發,耗時耗力。
  • 沒法多平臺統一卡片樣式,難于管理、復用性低。
  • 樣式固定、對用戶吸引力低導致點擊率及訂單轉化率低。

我們從UI和邏輯解耦,UI模板在平臺配置生成的角度考慮解決問題,設計了DIY商品卡片系統。

二、系統介紹

商卡系統將UI和邏輯進行解耦,UI部分可在商卡配置后臺進行配置,邏輯部分由開發人員處理后引入原子UI組件進行最終渲染。

圖片

2.1 商卡配置后臺

UI在商卡配置后臺中由產品或者運營人員參照設計稿進行自由拖拽式配置,并且給每個模塊綁定字段,同一套配置可以同時應用于H5和React Native。

2.2 原子UI組件

原子UI組件是顆粒度更小的一種靜態組件(React, React Native),可以通過手動開發或配合“產品畫布”DIY這兩種方式為業務組件提供渲染模板,其他使用方也可以提供一些固定的數據(契約)直接渲染單卡片樣式。開發人員只需在組件內引入原子組件的npm包,對業務邏輯進行處理后把相應字段的值傳給原子組件即可最終渲染真實產品信息。通過原子組件的模式,可以讓所有組件都“引用”線上的公共UI組件,直接應用在各商卡的業務方,輕松實現商品卡片樣式的統一,避免了每個業務方重復開發同一套樣式。下圖為商卡搭建的部分樣式:

圖片

2.3 效果

  • 商品卡片樣式現已擺脫對開發人員的依賴,產品運營團隊可以直接通過拖拽配置的方式,輕松定制全新的樣式。
  • 當同一商卡模板需要更新樣式時,僅需在商卡配置系統中進行配置更新,便可實現一鍵跨端修改的效果,使所有使用該模板的業務方同步更新。
  • 針對需要定制展示內容的業務方,我們提供了定制渲染能力,允許他們在整體樣式統一的基礎上,保留部分商卡內容的獨特風格。
  • 目前,我們已擁有400多張商卡和40多種常用模板,廣泛應用于攜程營銷頁面、特賣、星球號以及攜程直播等多個場景。
  • 商卡樣式的更新換代速度得到了極大提升,為用戶帶來更加新穎的體驗,從而增強了點擊欲望。經過AB實驗測試,我們發現商卡系統搭建的樣式相較于過去固定的樣式,在點擊率上有了顯著提升。

三、系統設計

DIY商品卡片系統主要由2部分組成:商卡渲染和配置平臺。

圖片

3.1 DIY商品卡片渲染

DIY商品卡片可以通過以下三種渲染方式渲染,可以根據需求和配置難度選擇合適的方式:

1)字段的寬高和位置都固定渲染

渲染組件按照在配置平臺上的布局進行商品卡片的渲染,字段之間沒有聯動設計,只能進行簡單卡片的渲染。

渲染稍復雜的卡片時面臨的問題主要有以下兩個:

  • 同一行的兩個字段,不能根據前一個字段的寬度動態改變后一個字段的位置。如下圖,第一張圖中顯示正常,第二張圖中當第一個字段評分變化為4分時,3797點評的位置還在原處,就會留有不合理的間距。

圖片

圖片

  • 卡片的高度也不能根據字段的長短和是否有缺失字段進行動態調整,如下圖,缺失兩個標簽后下方的字段并不會自動向上填補空白,卡片高度也不會相應減小,在實際應用場景中,很多商品卡片都不是固定高度,在展示商品時更傾向于緊湊的商品卡片布局,即卡片的高度要根據商品數據進行動態調整。

圖片

圖片

2) 字段的寬高和位置通過數據進行動態計算,依舊采用絕對布局的方式

  • 卡片橫向的動態布局

增加了行容器組件,將同一行的字段放進同一個行容器中就可以讓字段位置不再依賴固定坐標。

以React版渲染組件為例,行容器是一個flex布局的<div></div>,去掉放入行容器里的字段的絕對布局屬性,通過設置justify-content即可控制同一行字段的排列方式,自動補齊位置。

  • 卡片縱向的動態布局

獲取到商品數據和渲染數據后,先不對商品卡片進行渲染。通過動態算法和canvas渲染對字段是否存在和字段長度進行校驗,并根據校驗結果修改渲染數據。修改完成的渲染數據可以達到卡片高度和字段位置動態適應的效果。

動態算法分為以下幾個步驟:

a. 當字段所需高度增加或者減少時,檢查哪些字段的位置會受到當前字段高度變化的影響,將受影響字段和需要進行的調整收集起來。

b. 校驗所有字段后,對收集的字段對應的渲染數據進行調整。

c. 調整完成后開始根據渲染數據進行商品卡片渲染。

d. 商品卡片渲染完成后檢測每個字段是否正確渲染,對于計算有偏差的字段調整,根據真實渲染情況再次進行微調。

3)字段之間采用相對布局的方式進行排列

對于縱向的動態布局,依賴通過商品數據和渲染數據進行計算也會帶來一些問題,比如在渲染數據的調整上,調整后的商品卡片可能會和配置略有差異,有一些準確性的問題。

為了達到和手工開發一樣的效果,增加了垂直方向的容器,稱為垂直容器。放入垂直容器的字段,會被調整為相對布局的定位方式,字段依次向下排列,不依賴定位屬性。

考慮到商品卡片普遍情況下都是采用比較規則的布局方式,所以使用行容器加垂直容器層層嵌套的方式可以實現去絕對布局的效果,所有字段都自動根據前面的字段動態調整位置。

4)總體渲染流程

接入方將數據處理為契約中的格式,傳給原子UI組件進行渲染。商卡渲染時,通過場景號和版本從接口中讀取兩部分配置數據:

  • 商卡總體配置JSON:包含有效期時間、卡片寬高、背景色、圓角等。
  • 商卡內字段組件列表:包含每個字段組件的css和react native樣式以及一些聯動邏輯的配置。

當獲取到的字段組件列表長度大于0時,我們開始循環處理列表內的組件,不同的字段類型渲染成不同的組件,若遇到容器則進行遞歸,直到容器中的內容全都處理完。

圖片

3.2 配置平臺

考慮到解放開發人力,大部分布局不復雜的商卡可以由產品或者運營人員根據設計稿進行配置。為了易于非開發人員操作和理解、提高配置效率,我們在以下幾個模塊的設計上增加了許多考量。

1)字段組件設計

目前支持的字段組件有普通字段、圖片、普通容器、垂直容器、橫向布局容器以及內聯容器,這基本可以滿足設計稿的布局。普通容器主要存放需要浮動的元素。垂直容器和橫向容器其實就是flex布局的兩種形式。內聯容器是為了解決行內元素換行問題,正常用橫向布局容器是沒辦法實現這個效果的,內聯容器內的元素我們一律轉成inline元素。內聯容器主要應用在如下圖所示的情況:套餐名稱超出一行需要換行,星級以及金鉆標簽緊跟其后。

圖片

2)畫布交互設計

為簡化操作,我們將商卡系統設計成拖拽配置的形式,配置人員可以從左側可選字段組件中直接將組件拖進畫布。若畫布中已配置了容器,則可以直接拖進相應容器中,字段間的順序以及位置也是可以直接進行拖動調整,至于細微的位置調整,可以通過字段的樣式配置進行調整。

3)字段樣式配置

下圖所示的樣式配置基本上就是簡單的css屬性,在浮動類型這有個特殊處理:浮動類型為浮動即positinotallow="absolute"時,距離上、右、底,左邊實際上代表top、right、bottom,left;浮動類型為不浮動即positinotallow="relative"時,距離上、右、底,左邊實際上代表 margin-top、margin-right、margin-bottom,margin-left,這樣可以減少配置項。在行容器和垂直容器的配置中,額外還有對齊方式的配置,對應的是flex布局中justify-content和align-items,容器的子元素配置中也有壓縮和彈性比例系數的配置,即flex-shrink以及flex。目前的配置項幾乎可以達到還原設計稿的目的。

4)特殊問題處理

  • 問題:接口重復調用
  • 解決方案:發布訂閱

商品卡片的渲染schema獲取是在每一個商品卡片里進行的,渲染商品列表時就會有重復調用接口的問題。

通過一些方式將接口請求次數盡可能減少很重要,但因為各商品卡片之間相互獨立,并不能在某一個商品卡片中知道頁面中都有哪些商品卡片模版ID,我們減少請求次數的方案也就是對于同一個商品卡片模版,只請求一次。

商品卡片在獲取到卡片模版ID后,檢查當前ID是否已經有請求到的數據,有數據則直接從window上取對應的數據進行渲染,如果沒有則檢查該ID是否已經被標記為已經在請求數據,對于已經在請求數據的情況,監聽當前數據請求成功的消息,數據請求成功后觸發請求的商品卡片會通過消息推送當前模版ID的渲染schema,并將此數據存在window上。過程如圖中所示。

圖片

一些商品數據字段在攜程的應用場景中也是比較固定的,對于這樣的一些商品數據字段,我們通過提供默認樣式的方式減少配置時的工作量,配置人員只需要關心這樣的字段的位置、大小以及一些顏色方面的配置,不需要再關心如前綴圖標、復雜組合形式等問題。

  • 問題:RN樣式差異
  • 解決方案:手動進行兼容性處理

與h5不同的是,rn的樣式需要進行單獨處理,大部分樣式處理都在商卡配置后臺中用“css-to-react-native“包進行了轉換,某些特殊樣式由rn版原子組件單獨處理。例如:h5中的內聯容器在rn中要用<Text><Text/>當最外層容器,里面所有子容器也由<Text><Text/>包裹,這樣才能實現元素內換行。其他還有漸變背景色用LinearGradient組件處理、背景圖片轉換成<Image/>標簽、border拆分成borderWidth和borderColor來處理、下發的rn樣式適配屏幕寬高等等。

  • 問題:業務關聯
  • 解決方案:字段聯動

在一些場景下,商品卡片的數據之間也是有關聯關系的,我們提供了字段之間關聯的一些配置,如兩個字段互斥,永遠只出現其中一個字段;兩個字段也可以是必須同時出現的關系,當一個字段有值時另一個才出現,比如有酒店LOGO時才展示酒店名稱;還有的時候字段需要根據另一個字段進行樣式和展示形式的調整,比如在價格為0時商品卡片的搶購按鈕變為“免費”文案的純文字。

圖片

  • 問題:商卡展示不夠靈活
  • 解決方案:Render props

DIY商品卡片提供了自定義插槽,渲染時可以直接傳入一個JSX函數在配置位置渲染,例如:接入方傳入一個直播流播放器。這樣配置上更加靈活,DIY商品卡片組件也無需引入過多第三方組件。這樣的做法還帶來一個好處,留有一定的空間供開發人員介入,對于一些難以配置的數據展示形式,可以指定該數據的展示使用開發人員定制開發的數據展示模塊,開發和配置混合的形式極大地補充了DIY商品卡片的展示能力。

圖片

  • 問題:多點擊事件
  • 解決方案:自定義點擊事件函數

商卡有默認的點擊事件,一般用于商品的跳轉,若一張大卡內有多個點擊區域,可以用透明蒙層配置在點擊區域的上方,并綁定相應的字段。數據傳入時只需要傳入點擊事件對象數組,商卡會根據對象的name和綁定的字段名進行匹配,將對象的函數綁定在對應的字段上。通過name進行匹配就無需在新增點擊事件時在代碼內手動將點擊事件與字段進行綁定,這帶來的好處是可以減少商卡本身的開發改動,更加靈活,只需要配置字段和傳入字段一一對應即可。

圖片

  • 問題:卡片重復配置
  • 解決方案:父子商卡

對于一些重復度較高的商品卡片,將相同的部分保留作為公共部分,不同的部分抽取出來單獨配置是一種更合理的方式。

我們將這種模式的卡片配置稱為父子模塊,在配置時父模塊和子模塊沒有區別,兩種模塊都可以作為一個單獨的商品卡片進行渲染。

在卡片上配置一個空間,定義該空間的key,在渲染商品卡片時將key對應的子模塊ID和商品數據一起傳入父模塊,父模塊在配置在渲染時將子模塊渲染在預留空間里,即可實現兩個商品卡片的拼接。

圖片

四、商品卡片配置系統功能點

圖片

4.1 導入導出

導出數據:導出該頁面上的商卡樣式,導出格式為txt文件,方便進行備份和復用。

導入數據:為了使配置操作更為簡單,可導入已有的商卡模板或部分字段組件素材,導入后在此模板上進行增刪改操作,避免從0開始搭建。

4.2 版本切換

畫布可分為三個版本:線上版本、可編輯版本、歷史版本。線上版本為真實版本,歷史版本為上一次保存的線上版本。只有在可編輯版本內才可以編輯,編輯后可以保存或者上線,只有選擇上線才能替換線上版本。

可編輯版本的設計可以將線上與編輯隔離,以免未編輯完成的畫布影響線上,同時歷史版本在一定程度上也是一種備份。

4.3 預覽

畫布提供h5版本或app版預覽,預覽的版本為當前選中版本。預覽的商卡數據源分為兩種,一種是通用數據源,即樂高平臺內針對不同業務方預先配置好的數據字段;另一種為自定義數據,配置人員可以根據具體的需求以JSON的形式在樂高平臺內新增數據字段。通過預覽,配置人員可以在商卡上線前看到實時效果,同時通過自定義數據也可模擬一些極端情況,如某些字段缺失后,卡片布局是否會變形等

4.4 卡片配置

圖片

為簡化配置流程,重復利用素材,商卡配置后臺支持其他商卡導出的素材txt文件以及設計稿導出的元素素材txt文件導入進畫布。設計稿導出的為較小顆粒度的元素,如一個名稱字段、商品圖片,不包含容器類大顆粒度元素的導出。設計稿直出可以省略部分基礎配置,如:字號,字體顏色,圖片寬高,邊框及圓角等,配置人員只需專注于布局的配置即可,減少了基礎樣式的配置時間。其他商卡導出的素材可直接完美復制原效果,包括字段綁定的名稱等,這種方式導出的素材不止是小顆粒度的元素,也可以是整個容器甚至整張卡片。

除了直接導入,商卡系統有自帶的組件庫,可將其中的組件直接拖拽添加進畫布。目前支持的組件有字段、圖片、背景方塊、橫向布局容器、垂直布局容器、內聯容器和普通容器。通過選中畫布中的某個字段或容器可以配置其css屬性、調整容器內子元素的順序和對齊方式等。除了樣式配置,還有字段屬性配置,字段要與對應的字段名進行綁定才能正常顯示,若畫布中配置了某個字段組件,但數據中沒有此字段名,最終上線后也是不展示此字段組件的,唯有一一對應才能正常展示。

配置完成后可以先通過預覽查看實時效果,避免上線后出現問題。上線后接入方通過唯一的商卡場景號調用該商卡,按照契約內容傳入字段即可成功渲染。

五、接入樣例

DIY商品卡片組件主要通過npm包的形式引入,按照契約傳遞數據即可渲染。

傳遞給組件的數據分為三類:

a. 商品信息

渲染商品卡片所必需的數據,如酒店名、酒店星級、價格、主圖鏈接等商品信息。

b. 自定義處理邏輯

在我們的商品卡片中,可自定義的處理邏輯主要是在點擊事件中。組件支持對整個商品卡片的點擊方法進行覆蓋,也支持對單個字段如酒店標簽進行添加點擊事件處理邏輯。

c. 定義渲染信息

對于商品卡片的渲染,提供了0%~100%程度的自定義渲染方式。0%,就是接入方開發人員只需要傳遞商品數據,無需關心數據的渲染。100%,即是接入方開發人員可以將對應商品數據的整個渲染完全覆蓋掉,DIY商品卡片組件使用render props的方式渲染接入方傳遞進來的渲染方法。不到100%又高于0%程度的渲染,則是提供給接入方傳入指定商品數據的CSS以追加的形式修改原有CSS的能力。

圖片

六、總結

由于傳統商卡開發模式無法適應當前業務的快速發展,我們通過對開發中現有問題的分析,將UI和邏輯解耦設計了商卡系統,通過對CSS模塊的抽象,設計了商卡各個字段組件。商卡系統這使得我們能夠以低代碼平臺的方式實現通用的樣式跨端解決方案,從而達到降低成本和提高效率的目的。這個系統同時表明,前端工程師不僅需要關注樣式和解決渲染問題,還可以通過對CSS、渲染機制、數據結構和框架的深入理解來解決更廣泛的問題。

責任編輯:張燕妮 來源: 攜程技術
相關推薦

2024-09-30 08:47:07

數據分析降本增效覆蓋用戶

2024-03-27 12:31:54

數據分析降本增效促銷活動

2022-07-13 14:54:52

邊緣計算人工智能機器學習

2023-07-28 09:48:37

2024-08-07 11:06:49

2022-06-02 14:39:11

混沌工程實驗微服務

2024-09-20 08:20:20

2015-09-30 14:48:37

中石化北明軟件華為

2024-02-20 13:29:04

網絡安全研發

2024-07-05 15:05:00

2024-02-19 14:14:02

云計算人工智能大語言模型

2023-12-25 15:38:55

2023-10-12 19:05:13

研發管理降本增效AI

2022-03-28 14:31:01

Python編程語言工具包

2023-09-25 15:13:57

數字化轉型

2016-08-10 21:22:34

大數據運營商
點贊
收藏

51CTO技術棧公眾號

亚洲乱码久久| 色天下一区二区三区| 一区二区三区加勒比av| 国产精品免费区二区三区观看| 国产一级淫片免费| 天天躁日日躁成人字幕aⅴ| 91国在线观看| 国产又粗又长又爽视频| 暖暖视频在线免费观看| 韩国一区二区视频| 91精品国产高清| 人妻无码一区二区三区免费| 99热这里只有精品首页| 色女孩综合影院| 九九久久九九久久| 国产区av在线| 国产aⅴ综合色| 国产91免费看片| 黄色一级视频在线观看| 久久av导航| 精品国产3级a| 亚洲xxx在线观看| 免费h视频在线观看| 中文字幕亚洲一区二区av在线| 国产精品三区在线| 一级全黄裸体免费视频| 久久成人精品| 久久男人资源视频| 三级黄色录像视频| 国产伦精品一区二区三区视频| 精品国产一区久久| 国产精品久久久久久9999| videos性欧美另类高清| 亚洲综合激情另类小说区| 亚洲欧美日韩不卡一区二区三区| 天天干天天色天天| 国产麻豆精品theporn| 国产精品美女主播在线观看纯欲| 亚洲免费激情视频| 欧美日本久久| 欧美精品videos另类| 亚洲最新av网站| blacked蜜桃精品一区| 亚洲成av人片在线观看香蕉| 天天色天天综合网| 韩日精品一区| 在线免费观看成人短视频| 丝袜人妻一区二区三区| 国产欧美久久久久久久久| 中文在线一区二区 | 亚洲欧美丝袜| 精品视频一二三| 91亚洲精品久久久蜜桃| 黑人巨大精品欧美一区二区小视频| 国产成年妇视频| 国产在线不卡视频| 91在线看www| 国产毛片毛片毛片毛片毛片| 久久99精品国产91久久来源| 国产欧美在线播放| 怡红院男人的天堂| 美女mm1313爽爽久久久蜜臀| 国产精品劲爆视频| 在线观看中文字幕码| 久久精品国产一区二区| 成人av在线亚洲| 国产女人18毛片水18精| 国内精品视频666| 91视频国产高清| www.久久精品.com| 成人av电影在线| 美女黄毛**国产精品啪啪| 日韩av地址| 亚洲国产精品av| 在线精品日韩| 欧美日韩经典丝袜| 午夜私人影院久久久久| 中文字幕无码精品亚洲35| 美女100%一区| 欧美日韩国产123区| 下面一进一出好爽视频| 黄色欧美在线| 亚洲情综合五月天| 精品国产国产综合精品| 欧美激情视频一区二区三区在线播放 | 999这里有精品| 国产日韩中文在线中文字幕| 日韩久久精品一区| 国产三级国产精品| 欧美理论在线播放| 欧美成人剧情片在线观看| 久久精品视频9| 日韩av一区二区三区| 成人在线免费观看视视频| 亚洲产国偷v产偷v自拍涩爱| 91视频精品在这里| 亚洲精品在线视频观看| 免费在线中文字幕| 色94色欧美sute亚洲线路一久| 亚洲精品成人在线播放| 日韩aaa久久蜜桃av| 中文字幕欧美日韩| 久久久久久国产精品免费播放| 99在线精品免费视频九九视| 国产精品揄拍500视频| 午夜精品久久久久久久91蜜桃| 91视频免费看| 国产精品国三级国产av| 免费在线观看一区| 亚洲激情在线视频| 成人自拍小视频| 久久xxxx| 国产区欧美区日韩区| 免费网站成人| 色综合久久久久久久| 无码人妻一区二区三区免费n鬼沢| 国产精品一线天粉嫩av| 久久久久久久久中文字幕| 中文在线观看免费高清| 99久久综合国产精品| 米仓穗香在线观看| 欧美视频免费看| 精品一区电影国产| 日本特黄一级片| 国产乱淫av一区二区三区| 日本一区二区在线视频| gogo高清午夜人体在线| 欧美一卡2卡三卡4卡5免费| 五月天精品视频| 在线欧美福利| 91pron在线| 欧美日韩欧美| 欧美性受xxxx黑人xyx性爽| 一出一进一爽一粗一大视频| 在线成人欧美| 99re视频在线| 99久久精品免费观看国产| 欧美乱妇一区二区三区不卡视频| 久久久久久久久久久久| 午夜一区二区三区不卡视频| 国产一区二区高清视频| 黄色在线观看视频网站| 欧美va天堂va视频va在线| 青花影视在线观看免费高清| 蜜臀av亚洲一区中文字幕| 欧美资源一区| 欧美日韩精品免费观看视完整| 日韩精品有码在线观看| 久久精品视频国产| 成人sese在线| 成年人午夜视频在线观看 | 久久综合狠狠综合久久综青草 | 精品美女久久| 国产成人91久久精品| 免费在线性爱视频| 91黄视频在线观看| 69视频在线观看免费| 日本在线不卡视频一二三区| 日韩久久在线| 国产精品伦一区二区| 视频在线观看99| 国产毛片毛片毛片毛片| 亚洲黄色尤物视频| 亚洲欧美高清在线| 国产婷婷精品| 日韩高清专区| 在线日韩三级| 欧美激情一二三| 欧美在线 | 亚洲| 色综合久久中文综合久久97| 女人黄色一级片| 精彩视频一区二区三区| 国产又粗又猛又爽又黄的网站| 国产精品超碰| 青青草成人在线| 午夜在线免费观看视频| 欧美一区二区视频在线观看| 国产一级av毛片| 2020国产成人综合网| 亚洲一级免费在线观看| 中文字幕免费精品| 精品国产一区二区三区四区vr| 欧美日韩视频网站| 久久九九全国免费精品观看| 成人久久久精品国产乱码一区二区| 精品日本美女福利在线观看| 男人的天堂av网| 国产精品一区二区久久精品爱涩| 老太脱裤子让老头玩xxxxx| 狠狠做深爱婷婷综合一区| 91在线视频九色| а√在线天堂官网| 中文字幕精品在线| 不卡视频免费在线观看| 色综合av在线| 欧美日韩亚洲国产另类| 久久精品人人做人人爽97| 肉色超薄丝袜脚交| 免费在线亚洲| aaa免费在线观看| 一区二区三区视频免费观看| 91免费视频网站| 免费看av不卡| 欧美夫妻性生活xx| 成黄免费在线| 亚洲国产日韩欧美综合久久| 伊人久久国产精品| 欧美性少妇18aaaa视频| a级黄色片免费看| 欧美国产一区在线| 污片免费在线观看| 国产一区二区三区免费看| 国模杨依粉嫩蝴蝶150p| 欧美一区视频| 神马影院午夜我不卡| 日本欧美高清| 成人自拍爱视频| www.欧美| 国产免费观看久久黄| 免费日韩电影| 国产91精品久久久久久久| 亚洲按摩av| 日韩在线播放一区| 成年人在线看| 亚洲视频一区二区| 亚洲aⅴ在线观看| 精品奇米国产一区二区三区| 国产欧美熟妇另类久久久| 欧美综合欧美视频| 日本午夜视频在线观看| 亚洲va在线va天堂| 麻豆疯狂做受xxxx高潮视频| 亚洲色图19p| 91大神福利视频| 欧美经典一区二区三区| 中日韩精品一区二区三区 | y111111国产精品久久婷婷| 久久精品嫩草影院| 国产精品啪视频| jizzjizz少妇亚洲水多| 欧美亚洲激情在线| 白浆视频在线观看| 性色av一区二区三区| 国产色婷婷在线| 久久久久久久av| 韩国日本一区| 久久久爽爽爽美女图片| 嗯啊主人调教在线播放视频| 久久青草福利网站| 爱搞国产精品| 欧美在线视频一区二区| 超碰国产一区| 国产成人a亚洲精品| 国产综合色在线观看| 国产精品久久久久久一区二区| yiren22亚洲综合| 国产精品视频久久久| 欧美性生活一级| 成人午夜在线观看| 日韩精品视频在线看| 草莓视频一区| 人体久久天天| 日本视频一区在线观看| 成人在线国产| 99久re热视频精品98| 国产精品av久久久久久麻豆网| 精品国产一区二区三区无码| 一区二区三区高清视频在线观看| 日本成年人网址| 青青草原综合久久大伊人精品优势 | 亚洲色图 激情小说| 自拍偷在线精品自拍偷无码专区| 欧美在线视频第一页| 亚洲成人免费视| 91午夜精品亚洲一区二区三区| 欧美亚洲国产一区二区三区| 国产精品系列视频| 亚洲精品在线网站| 九色在线观看| 久久久av亚洲男天堂| 久久亚洲资源| 国产91在线播放九色快色| 亚洲欧洲专区| 久久婷婷国产综合尤物精品| 久久理论电影| 日本欧美视频在线观看| 琪琪一区二区三区| 亚洲精品久久久久久| 91丨国产丨九色丨pron| 你懂得在线观看| 天天色综合成人网| 在线视频免费观看一区| 亚洲精品在线电影| 成年人在线观看视频| 欧美精品aaa| 国产精品黄色片| 国产麻豆日韩| 91亚洲国产| 99999精品视频| 国产一区999| 国产探花视频在线播放| 午夜精品免费在线| 国产精品乱码一区二区| 亚洲三级av在线| 性欧美高清come| 国产精品日韩在线观看| 国产乱论精品| 18视频在线观看娇喘| 视频一区二区欧美| 插我舔内射18免费视频| 最近日韩中文字幕| 成年人晚上看的视频| 亚洲黄色av网站| 在线欧美三级| 国产精品中文字幕在线观看| 欧美激情极品| 国产情侣第一页| 国产一区二区三区在线看麻豆| 国产精品密蕾丝袜| 天天综合网天天综合色| 性一交一乱一精一晶| 日韩在线观看高清| 黄色精品视频| 欧美日韩三区四区| 99在线观看免费视频精品观看| 国产chinesehd精品露脸| 成人欧美一区二区三区白人| 最近中文字幕在线视频| 亚洲欧美日本精品| 678在线观看视频| 岛国一区二区三区高清视频| 婷婷亚洲五月| 日本高清久久久| 中文字幕中文乱码欧美一区二区| 亚洲永久精品一区| 亚洲免费av片| 中文不卡1区2区3区| 九色91国产| 日韩视频一区二区三区在线播放免费观看| 中文字幕欧美视频| 亚洲另类在线制服丝袜| 国产精品羞羞答答在线| 久久精品人人爽| 精品国产亚洲日本| 激情图片qvod| 国产suv精品一区二区三区| 久久精品免费av| 亚洲国产婷婷香蕉久久久久久| a国产在线视频| 久久国产精品 国产精品| 国产视频一区三区| a级片在线观看| 欧美视频完全免费看| av大片在线看| 91免费精品视频| 欧美午夜在线| free性中国hd国语露脸| 一本一本久久a久久精品综合麻豆| 毛片网站在线| 国产区精品视频| 亚洲91中文字幕无线码三区| 亚洲欧美日韩网站| 亚洲一区二区视频| 四虎影视在线观看2413| 国产999在线| 久久一区二区三区喷水| 天美一区二区三区| 亚洲成人tv网| 精品影院一区| 91免费视频国产| 亚洲成色精品| 成人性生交大片免费看无遮挡aⅴ| 欧美日韩国产首页| 污视频在线看网站| 免费看污久久久| 麻豆精品久久精品色综合| 老妇女50岁三级| 日韩精品黄色网| 欧美日韩伦理一区二区| 国产精彩视频一区二区| 久久精品一二三| 国产av一区二区三区精品| 91av中文字幕| 午夜久久免费观看| 久久久久亚洲AV成人无码国产| 日本道色综合久久| 日本高清在线观看| 欧美欧美一区二区| 国产乱国产乱300精品| 欧美福利视频一区二区| 日韩在线播放视频| 日韩欧美ww| 日韩精品aaa| 一本大道久久a久久精二百 | 亚洲丝袜另类动漫二区| 亚洲AV成人无码一二三区在线| 国产免费亚洲高清| 国产欧美大片| 亚洲天堂黄色片| 亚洲四色影视在线观看|