久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

vue3+typescript實現圖片懶加載插件

瀏覽:19日期:2022-11-12 08:42:42

github項目地址: github.com/murongg/vue…

求star 與 issues

我文采不好,可能寫的文章不咋樣,有什么問題可以在留言區評論,我會盡力解答

本項目已經發布到npm

安裝:

$ npm i vue3-lazyload# or$ yarn add vue3-lazyload

需求分析

支持自定義 loading 圖片,圖片加載狀態時使用此圖片 支持自定義 error 圖片,圖片加載失敗后使用此圖片 支持 lifecycle hooks,類似于 vue 的生命周期,并同時在 img 標簽綁定 lazy 屬性,類似于

<img src='http://www.gepszalag.com/bcjs/...' lazy='loading'><img src='http://www.gepszalag.com/bcjs/...' lazy='loaded'><img src='http://www.gepszalag.com/bcjs/...' lazy='error'>

并支持:

img[lazy=loading] { /*your style here*/ } img[lazy=error] { /*your style here*/ } img[lazy=loaded] { /*your style here*/ }

支持使用 v-lazy 自定義指令,指定可傳入 string/object ,當為 string 時,默認為需要加載的 url,當為 object 時,可傳入

src: 當前需要加載的圖片 url loading: 加載狀態時所用到的圖片 error: 加載失敗時所用到的圖片 lifecycle: 本次 lazy 的生命周期,替換掉全局生命周期

目錄結構

- src---- index.ts 入口文件,主要用來注冊插件---- lazy.ts 懶加載主要功能---- types.ts 類型文件,包括 interface/type/enum 等等---- util.ts 共享工具文件

編寫懶加載類

懶加載主要通過 IntersectionObserver對象實現,可能有些瀏覽器不支持,暫未做兼容。

確定注冊插件時傳入的參數

export interface LazyOptions { error?: string; // 加載失敗時的圖片 loading?: string; // 加載中的圖片 observerOptions?: IntersectionObserverInit; // IntersectionObserver 對象傳入的第二個參數 log?: boolean; // 是否需要打印日志 lifecycle?: Lifecycle; // 生命周期 hooks}export interface ValueFormatterObject { src: string, error?: string, loading?: string, lifecycle?: Lifecycle;}export enum LifecycleEnum { LOADING = ’loading’, LOADED = ’loaded’, ERROR = ’error’}export type Lifecycle = { [x in LifecycleEnum]?: () => void;};

確定類的框架

vue3 的 Custom Directives,支持以下 Hook Functions:beforeMount 、mounted、beforeUpdate、updated、beforeUnmount、unmounted,具體釋義可以去 vue3 文檔查看,目前僅需要用到mounted、updated、unmounted,這三個 Hook。

Lazy 類基礎框架代碼,lazy.ts:

export default class Lazy { public options: LazyOptions = { loading: DEFAULT_LOADING, error: DEFAULT_ERROR, observerOptions: DEFAULT_OBSERVER_OPTIONS, log: true, lifecycle: {} }; constructor(options?: LazyOptions) { this.config(options) } /** * merge config * assgin 方法在 util.ts 文件內,此文章不在贅述此方法代碼,可在后文 github 倉庫內查看此代碼 * 此方法主要功能是合并兩個對象 * * @param {*} [options={}] * @memberof Lazy */ public config(options = {}): void { assign(this.options, options) } public mount(el: HTMLElement, binding: DirectiveBinding<string | ValueFormatterObject>): void {} // 對應 directive mount hook public update() {} // 對應 directive update hook public unmount() {} // 對應 directive unmount hook}

編寫懶加載功能

/** * mount * * @param {HTMLElement} el * @param {DirectiveBinding<string>} binding * @memberof Lazy */ public mount(el: HTMLElement, binding: DirectiveBinding<string | ValueFormatterObject>): void { this._image = el const { src, loading, error, lifecycle } = this._valueFormatter(binding.value) this._lifecycle(LifecycleEnum.LOADING, lifecycle) this._image.setAttribute(’src’, loading || DEFAULT_LOADING) if (!hasIntersectionObserver) { this.loadImages(el, src, error, lifecycle) this._log(() => { throw new Error(’Not support IntersectionObserver!’) }) } this._initIntersectionObserver(el, src, error, lifecycle) } /** * force loading * * @param {HTMLElement} el * @param {string} src * @memberof Lazy */ public loadImages(el: HTMLElement, src: string, error?: string, lifecycle?: Lifecycle): void { this._setImageSrc(el, src, error, lifecycle) } /** * set img tag src * * @private * @param {HTMLElement} el * @param {string} src * @memberof Lazy */ private _setImageSrc(el: HTMLElement, src: string, error?: string, lifecycle?: Lifecycle): void { const srcset = el.getAttribute(’srcset’) if (’img’ === el.tagName.toLowerCase()) { if (src) el.setAttribute(’src’, src) if (srcset) el.setAttribute(’srcset’, srcset) this._listenImageStatus(el as HTMLImageElement, () => { this._log(() => { console.log(’Image loaded successfully!’) }) this._lifecycle(LifecycleEnum.LOADED, lifecycle) }, () => { // Fix onload trigger twice, clear onload event // Reload on update el.onload = null this._lifecycle(LifecycleEnum.ERROR, lifecycle) this._observer.disconnect() if (error) el.setAttribute(’src’, error) this._log(() => { throw new Error(’Image failed to load!’) }) }) } else { el.style.backgroundImage = ’url(’’ + src + ’’)’ } } /** * init IntersectionObserver * * @private * @param {HTMLElement} el * @param {string} src * @memberof Lazy */ private _initIntersectionObserver(el: HTMLElement, src: string, error?: string, lifecycle?: Lifecycle): void { const observerOptions = this.options.observerOptions this._observer = new IntersectionObserver((entries) => { Array.prototype.forEach.call(entries, (entry) => { if (entry.isIntersecting) { this._observer.unobserve(entry.target) this._setImageSrc(el, src, error, lifecycle) } }) }, observerOptions) this._observer.observe(this._image) } /** * only listen to image status * * @private * @param {string} src * @param {(string | null)} cors * @param {() => void} success * @param {() => void} error * @memberof Lazy */ private _listenImageStatus(image: HTMLImageElement, success: ((this: GlobalEventHandlers, ev: Event) => any) | null, error: OnErrorEventHandler) { image.onload = success image.onerror = error } /** * to do it differently for object and string * * @public * @param {(ValueFormatterObject | string)} value * @returns {*} * @memberof Lazy */ public _valueFormatter(value: ValueFormatterObject | string): ValueFormatterObject { let src = value as string let loading = this.options.loading let error = this.options.error let lifecycle = this.options.lifecycle if (isObject(value)) { src = (value as ValueFormatterObject).src loading = (value as ValueFormatterObject).loading || this.options.loading error = (value as ValueFormatterObject).error || this.options.error lifecycle = ((value as ValueFormatterObject).lifecycle || this.options.lifecycle) } return { src, loading, error, lifecycle } } /** * log * * @param {() => void} callback * @memberof Lazy */ public _log(callback: () => void): void { if (!this.options.log) { callback() } } /** * lifecycle easy * * @private * @param {LifecycleEnum} life * @param {Lifecycle} [lifecycle] * @memberof Lazy */ private _lifecycle(life: LifecycleEnum, lifecycle?: Lifecycle): void {switch (life) { case LifecycleEnum.LOADING: this._image.setAttribute(’lazy’, LifecycleEnum.LOADING) if (lifecycle?.loading) { lifecycle.loading() } break case LifecycleEnum.LOADED: this._image.setAttribute(’lazy’, LifecycleEnum.LOADED) if (lifecycle?.loaded) { lifecycle.loaded() } break case LifecycleEnum.ERROR: this._image.setAttribute(’lazy’, LifecycleEnum.ERROR) if (lifecycle?.error) { lifecycle.error() } break default: break } }

編寫 update hook

/** * update * * @param {HTMLElement} el * @memberof Lazy */ public update(el: HTMLElement, binding: DirectiveBinding<string | ValueFormatterObject>): void { this._observer.unobserve(el) const { src, error, lifecycle } = this._valueFormatter(binding.value) this._initIntersectionObserver(el, src, error, lifecycle) }

編寫 unmount hook

/** * unmount * * @param {HTMLElement} el * @memberof Lazy */ public unmount(el: HTMLElement): void { this._observer.unobserve(el) }

在 index.ts 編寫注冊插件需要用到的 install 方法

import Lazy from ’./lazy’import { App } from ’vue’import { LazyOptions } from ’./types’export default { /** * install plugin * * @param {App} Vue * @param {LazyOptions} options */ install (Vue: App, options: LazyOptions): void { const lazy = new Lazy(options) Vue.config.globalProperties.$Lazyload = lazy // 留著備用,為了兼容$Lazyload // 選項api,可以通過this.$Lazyload獲取到Lazy類的實例,組合api我還不知道怎么獲取 // 所以通過 provide 來實現此需求 // 使用方式 const useLazylaod = inject(’Lazyload’) Vue.provide(’Lazyload’, lazy) Vue.directive(’lazy’, { mounted: lazy.mount.bind(lazy), updated: lazy.update.bind(lazy), unmounted: lazy.unmount.bind(lazy) }) }}

使用插件

import { createApp } from ’vue’import App from ’./App.vue’import VueLazyLoad from ’../src/index’const app = createApp(App)app.use(VueLazyLoad, { log: true, lifecycle: { loading: () => { console.log(’loading’) }, error: () => { console.log(’error’) }, loaded: () => { console.log(’loaded’) } }})app.mount(’#app’)

App.vue:

<template> <div /> <img v-lazy='’/example/assets/logo.png’' alt='Vue logo' width='100'> <img v-lazy='{src: errorlazy.src, lifecycle: errorlazy.lifecycle}' alt='Vue logo' width='100'> <button @click='change'> change </button></template><script>import { reactive } from ’vue’export default { name: ’App’, setup() { const errorlazy = reactive({ src: ’/example/assets/log1o.png’, lifecycle: { loading: () => { console.log(’image loading’) }, error: () => { console.log(’image error’) }, loaded: () => { console.log(’image loaded’) } } }) const change = () => { errorlazy.src = ’http://t8.baidu.com/it/u=3571592872,3353494284&fm=79&app=86&size=h300&n=0&g=4n&f=jpeg?sec=1603764281&t=bedd2d52d62e141cbb08c462183601c7’ } return { errorlazy, change } }}</script><style>.margin { margin-top: 1000px;}.image[lazy=loading] { background: goldenrod;}.image[lazy=error] { background: red;}.image[lazy=loaded] { background: green;}</style>

以上就是vue3+typescript實現圖片懶加載插件的詳細內容,更多關于vue3 圖片懶加載的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
主站蜘蛛池模板: 久久男人| 亚洲欧美一级久久精品 | 欧美a在线 | 亚洲综合欧美日韩 | 99re在线视频 | 精品一区二区不卡 | 欧美亚洲一 | 999久久久国产999久久久 | 国产一区在线免费 | 国产高清视频在线观看 | 亚洲成av人片一区二区梦乃 | 成人做爰9片免费视频 | 亚洲高清在线观看 | 国产伦精品一区二区三区四区视频 | 综合导航 | 在线免费观看色视频 | 北条麻妃99精品青青久久 | 99久久日韩精品视频免费在线观看 | 亚洲福利一区 | 天堂资源av | 国产中文字幕一区二区三区 | 91色在线观看 | 欧美日韩二区三区 | 国产在线不卡 | 久久av综合| 国产中文在线 | 亚洲成av人片在线观看无码 | 一区免费观看 | 手机亚洲第一页 | av黄色在线播放 | 欧洲另类在线1 | 在线观看亚洲一区 | 青青草一区 | 国产黄色大片免费观看 | 亚洲精品麻豆 | 久久涩 | 国产网站在线 | 亚洲不卡在线 | 国产精品色在线网站 | 国产精品久久久久久中文字 | 狠狠操天天干 | 精品久久久久久久久久久久 | 99精品国产热久久91蜜凸 | 黄色免费一级 | 国产精品永久免费 | 欧洲一区二区三区 | 精品国产影院 | 99热在线观看免费 | 看片地址 | 久久免费精品视频 | 日本少妇bbbb爽爽bbb美 | 琪琪午夜伦伦电影福利片 | 国产精品久久精品 | 91亚洲日本aⅴ精品一区二区 | 国产精品一二三区 | 欧美精品免费在线观看 | 日韩精品久久久久久 | 国产女人和拘做受在线视频 | 国产成人av一区二区三区 | 一区二区在线电影 | 久久久精品 | 欧美日韩精品久久久 | 日韩在线观看成人 | 国产婷婷色一区二区三区 | 亚洲天堂一区二区 | 国产一区二区毛片 | 国产亚洲精品美女久久久久久久久久 | 插插插干干干 | 日韩一区二区在线观看视频 | 日韩亚洲欧美综合 | 国产精品成人3p一区二区三区 | 国产精品69毛片高清亚洲 | 欧美精品一区二区三区在线 | 岛国在线免费 | 日本一区二区三区四区视频 | 国产日本欧美在线 | 日日干天天操 | 欧美日韩国产一区二区三区 | 久久久久久亚洲 | 日韩一区免费观看 | 在线看免费的a | www国产亚洲精品久久网站 | 一级欧美在线 | 亚洲一区二区视频在线观看 | 亚洲精品久久久久久下一站 | 亚洲色图3p | 欧美一区二区三区在线看 | 在线中文字幕av | 国产日韩一区二区三区 | 最新亚洲黄色网址 | 成人免费一区二区三区视频网站 | 三级欧美在线观看 | 日韩一区二区在线免费 | 欧美日韩亚洲二区 | 伊人网在线观看 | 亚洲免费网站在线观看 | 精品久久久久久久久久久久久久 | 成人欧美一区二区三区黑人孕妇 | 毛片链接 | 亚洲精品久久久久久下一站 | 久久99精品国产自在现线 | 日韩综合网 | 91精品久久久久久久久入口 | 精品视频一区二区三区 | 欧美日本韩国一区二区 | 99这里只有精品视频 | 中文字幕一区二区三区四区 | 国产亚洲精品精品国产亚洲综合 | 欧美视频二区 | 一区二区三区国产 | 色69av | 国产福利91精品一区二区三区 | 日韩一区二区在线视频 | 国产一区av在线 | 国产精品1区 | 一区二区三区中文字幕 | 人人做人人爽 | 国产精品久久久久久久久 | 中文字幕在线视频观看 | 国产精品久久 | www.xxxx在线观看| 久久久久久这里只有精品 | 国产精品第一区第27页 | 91精品一区二区三区久久久久久 | 日韩视频一区 | 亚洲视频区 | 中文日韩在线 | 成年人黄色一级片 | 亚洲欧美另类久久久精品2019 | 天天操网址 | 特级丰满少妇一级aaaa爱毛片 | 亚洲欧美精品一区二区 | 蜜桃av在线播放 | 亚洲人成电影网 | 中文字幕一区二区三区乱码图片 | 精品国产成人 | 国产精品一区二区久久 | 成人一级电影在线观看 | 国产高清在线精品 | 成人午夜sm精品久久久久久久 | 国产九九av | 亚洲福利小视频 | 韩日在线观看视频 | av 一区二区三区 | 欧美精品在线一区二区三区 | 国产在线看片 | 欧美极品一区二区三区 | 成人精品鲁一区一区二区 | 一级视频在线观看 | 中文字幕自拍偷拍 | 四虎av成人 | 亚洲精品网址 | 色约约精品免费看视频 | 天天操天天拍 | 综合久久99 | 久久精品在线观看视频 | 国产精品日韩欧美一区二区 | 在线中文字幕日韩 | 色999国产 | 欧美中文| 成人国产精品久久久 | 伊人久久国产 | 一区国产精品 | av色资源 | 欧美成人二区 | 日韩黄色片免费看 | 国产精品毛片无码 | 一级特黄aaa大片在线观看 | 亚洲视频在线观看 | 国产色播av在线 | 日本不卡一区二区三区在线观看 | 亚洲成人免费视频在线观看 | 免费看片一区二区三区 | 日韩二区三区 | 欧美成人高清视频 | 精品国产31久久久久久 | 欧美顶级毛片在线播放 | 91精品国产91久久久久久吃药 | 日韩精品一区二区三区 | www.成人| 欧美精品欧美精品系列 | 国产一级影片 | av色伊人久久综合一区二区 | www中文字幕在线观看 | 久久久999国产 | 日韩城人网站 | 日韩福利一区二区 | 国产极品视频在线观看 | 欧美激情综合五月色丁香小说 | 欧美一区二区三区精品免费 | 在线精品亚洲欧美日韩国产 | 亚洲欧美一 | 日韩高清在线播放 | 神马香蕉久久 | 91综合视频在线观看 | 操人网 | 欧美全黄 | 天天爽夜夜爽夜夜爽精品视频 | 亚洲精品一区二区三区99 | 日韩福利影院 | www.日韩av.com | 99精品视频在线观看 | 欧美精品一区二区三区蜜桃视频 | 亚洲成人精品视频 | 91福利在线导航 | 日韩在线观看视频一区二区三区 | av在线免费观看网址 | 国产一区二区视频在线 | 色婷婷一区二区三区四区 | 一区二区中文字幕 | 成人av免费在线 | 亚洲一区视频在线 | 亚洲欧洲综合av | 亚洲欧美一区二区三区不卡 | 狠狠爱综合 | 欧美人成在线 | 日韩精品一区二区在线观看 | 国产福利一区二区 | 免费观看电视在线高清视频 | 欧美久久久久久久久久久久 | 日韩色av| 中文字幕不卡 | www.国产在线 | 亚洲午夜在线 | 日本精品一区 | 欧美精品日韩 | 欧美精品一区在线发布 | se69色成人网wwwsex | 午夜视频网站 | 日韩国产欧美一区 | 欧美精品理论片大全 | 欧美国产高清 | av一级毛片 | 国产精品乱码一二三区的特点 | 久久精品国产精品青草 | 成人精品一区二区三区电影黑人 | 国产高潮失禁喷水爽网站 | 日韩视频―中文字幕 | 自拍偷拍第一页 | 欧美大片免费高清观看 | 色婷婷激情 | 欧美一区二区三区电影 | 欧美一性一交 | 一区二区精品视频 | 欧美综合一区 | 欧美日韩亚| 国产精品电影 | 欧美日韩成人在线 | 99精品欧美一区二区蜜桃免费 | 黑人精品xxx一区一二区 | www.蜜桃av | 日日干夜夜操 | 久久久综合视频 | 国产成人久久精品一区二区三区 | 欧美,日韩,国产精品免费观看 | 欧美日韩国产中文字幕 | 久久爱成人 | 日本免费一区二区三区 | 国产福利在线免费 | 精品久久久久久久久久久 | 免费成人av网 | 成年人在线视频播放 | 久久久性色精品国产免费观看 | 日韩一区二区三区精品 | 中文字幕一区二区三区精彩视频 | 国产精品一区二 | 国产激情精品一区二区三区 | 精品久久久久久久久久久久 | 男女羞羞视频免费看 | 成年人黄色一级片 | 欧美成人影院在线 | 夫妻午夜影院 | 91久久精品日日躁夜夜躁欧美 | 亚洲综合首页 | 欧美视频在线播放 | 色综合久久久久 | 免费在线日本 | 国产三级一区二区 | 亚洲一区二区三区高清 | 日本三级欧美三级 | 国产精品久久一区二区三区 | 欧美国产一区二区 | 99资源 | 国产丝袜视频 | 国产一级毛片在线视频 | 久久r免费视频 | 国产富婆一级全黄大片 | а天堂中文最新一区二区三区 | 日韩精品一二三区 | 国产精品国产三级国产aⅴ中文 | 日本在线视频观看 | 精品国产一区二区三区在线观看 | 在线亚洲一区二区 | 8x国产精品视频一区二区 | 婷婷精品视频 | 亚洲毛片在线 | 91最新| 国产欧美日韩综合精品 | 国产精品视频一二三 | hsck成人网 | 欧美激情啪啪 | 久久久久国产精品午夜一区 | 一级做a爰 | 四虎永久 | 国产精品久久一区性色av图片 | 色综久久 | 五月激情综合网 | 天堂久久一区 | 国产高清精品一区二区三区 | 午夜精品久久久久 | 日韩中文一区二区三区 | 亚洲视频在线观看一区二区三区 | av在线免费网址 | 中文字幕_第2页_高清免费在线 | 中文字幕不卡在线 | 午夜激情视频 | 午夜精品一区二区三区免费视频 | 精品在线一区 | 日韩av一区二区三区四区 | 中文字幕免费看 | 草比网站| 欧美激情 在线 | 永久91嫩草亚洲精品人人 | 国产美女自拍视频 | 精品福利在线视频 | 久久精品免费观看 | 黑人av| 黄色在线免费观看 | 午夜视频在线 | 在线观看日韩av | 成人在线免费 | 精品视频一区二区三区四区 | 日本 欧美 三级 高清 视频 | 九色国产 | 日本免费一区二区在线观看 | 午夜影院在线观看免费 | 日本三级电影天堂 | 天堂av一区二区 | 综合久草 | 91精品国产欧美一区二区成人 | 99视频在线播放 | 亚洲成人首页 | 中文字幕日韩欧美一区二区三区 | 欧美日韩在线播放 | 国产1区2区精品 | 五月婷婷狠狠爱 | 狠狠干欧美 | 久久精品欧美 | 天天干人人插 | 欧美性一区二区三区 | 国产成人av一区二区三区 | 亚洲午夜精品a | 国产视频一区在线 | 久草精品在线 | 国产精品1区 | 精品久久久久国产免费 | 在线观看中文字幕 | 噜噜噜噜噜色 | 国产亚洲精品久久久 | 成人一区二区三区在线观看 | 久久一区二区三区四区 | 久久久精 | 日韩午夜激情视频 | 成人免费在线电影 | 久久精品免费观看 | 欧美精品亚洲精品 | 久久99国产精品久久99果冻传媒 | 日韩中文一区二区 | 日本不卡视频 | 艹逼逼视频 | 亚洲成人免费在线 | 久久精美视频 | 三级免费网站 | 狠狠艹| 91视频网 | 中国一级毛片免费 | a在线v| 久久亚洲一区 | 午夜免费福利视频 | 久草在线 | 久久久久无码国产精品一区 | 亚洲激情第一页 | 久草观看| 一区二区国产精品 | 国产成人精品久久 | 国产不卡精品视频 | 亚洲欧美日韩在线一区 | 亚洲福利一区 | 日韩专区在线播放 | 欧美日韩国产一区二区三区在线观看 | 午夜视频在线观看网站 | 亚洲一区成人 | 中文字幕久久精品 | 久久女人网 | 日韩一区在线播放 | 精品入口麻豆88视频 | 1级毛片 | 在线观看国产高清视频 | 久久这里有精品视频 | 久久免费99精品久久久久久 | 国产视频久久久久 | 国产成人精品一区二区三区视频 | 成人在线免费观看 | 久久综合久久综合久久 | 在线欧美视频 | 国内自拍视频网 | 97色免费视频| 激情亚洲| 亚洲成人日本 | 久爱国产 | 亚洲精品国产第一综合99久久 | 欧美一区二区在线观看 | 黄色片在线 | 在线观看毛片网站 | 成人综合社区 | 亚洲精品视频网 | 黑人巨大精品欧美一区二区三区 | 亚洲永久精品www | 欧美三级在线视频 | 91中文字幕 | 欧美日韩精品一区二区在线播放 | 激情网页 | 日韩欧美综合 | 最新久久精品 | 欧美成人黑人xx视频免费观看 | 九九免费视频 | 男女午夜| 91免费在线 | 拍拍无遮挡人做人爱视频免费观看 | 伊人网站| 越南性xxxx精品hd | 青青伊人久久 | 国产欧美一区二区三区在线看 | 成人小视频在线播放 | 热久久这里只有精品 | 漂亮少妇videoshd忠贞 | 91av国产精品 | 中文字幕精品一区二区三区精品 | 亚洲精品一区二区三区蜜桃久 | 久热中文在线 | 伊人春色网 | 亚洲高清视频网站 | 亚洲一区中文字幕在线观看 | 国产女人和拘做受在线视频 | 国产www | 色婷婷综合久久久中字幕精品久久 | 亚洲一区精品在线 | 欧美一区精品 | 欧美激情精品一区 | 欧美日韩国产精品久久久久 | 99国产精品一区 | 九九porny88av | 久久精品视频一区 | 国产69精品99久久久久久宅男 | 亚洲成人综合在线 | 久久综合九九 | 国产成人久久精品一区二区三区 | 国产a视频| 久久久成人精品 | 在线一区二区三区做爰视频网站 | 综合色播| 欧美一级特黄aaaaaa大片在线观看 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 欧美自拍网 | 国产日韩欧美91 | 第一色在线 | 久久久精| 国产视频第一页 | 国产精品视频在线观看 | 日韩一区在线视频 | 黄色片一区 | 欧美日韩精品一区 | 国产亚洲一区二区精品 | 青草成人免费视频 | 91精品久久久久久久久 | 久久久美女| 欧美一区二区在线播放 | 亚洲欧美网站 | 国产精品成人一区二区三区夜夜夜 | 91麻豆精品国产91久久久久 | 日韩专区一区二区三区 | 午夜国产| 精品专区| 久久成人毛片 | 黄色一级免费观看 | 久久va | 欧美日韩中文字幕在线播放 | 999在线观看精品免费不卡网站 | 国产精品美女久久久久久久久久久 | 欧美久久免费观看 | 天堂综合网 | 精品少妇一区二区三区在线播放 | 在线视频 中文字幕 | 亚洲 成人 av | a成人| 亚洲国产精品久久久久久 | 在线免费观看黄 | 三级成人片 | 国产一区二区在线播放 | 最新国产在线 | 91 在线观看 | 久久久久国产一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 一级片免费视频 | 在线免费一级片 | 亚洲一区在线免费观看 | 在线欧美日韩 | 欧美八区 | av免费在线观看网站 | 久久中文网 | 久久精品视 | 亚洲视频一区在线 | 在线成人免费视频 | 日韩av免费看 | 激情欧美日韩一区二区 | 欧美国产日韩一区 | 九九九在线 | 欧美日韩亚洲在线 | a级性视频| 亚洲综合久久网 | 国产98色在线 | 日韩 | 国产综合欧美 | 可以免费看黄视频的网站 | 国产精品1 | 欧美视频在线播放 | 久久精品视频网站 | 久久高清国产 | 亚洲一区久久 | 精品久久久久久国产 | 日韩av一区二区三区在线 | 五月婷婷综合激情网 | 日韩午夜| 日韩色av| 国产精品久久久久久久久久久久久 | 99精品国自产在线 | 在线看一级片 | 亚洲电影一区 | 美日韩免费视频 | www.中文字幕 | 亚洲一区二区三区久久久 | 高清国产一区 | 欧美日韩一区电影 | 亚洲欧洲tv | 久久精品亚洲精品 | 69av.com | 日本精品视频在线观看 | 视频一区 中文字幕 | 亚洲高清视频在线观看 | 免费看的黄网站 | 国产免费自拍 | 久久久久亚洲av毛片大全 | 国产区精品 | 国产成人av综合 | 美女久久 | 亚洲永久免费视频 | 久久久精彩视频 | 婷婷综合 | 日韩精品第一页 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 毛片一区二区三区 | 在线亚州| 欧美亚洲视频在线观看 | 久久久久久久国产 | 中文字幕在线免费看 | 免费的日批视频 | 日本精品久久久一区二区三区 | 狠狠操综合网 | 免费观看毛片 | 日韩精品一区二区三区中文字幕 | 成人精品鲁一区一区二区 | 91国内外精品自在线播放 | 欧美在线视频一区 | 高清国产午夜精品久久久久久 | 欧美日韩国产综合在线 | а√天堂中文在线资源8 | 久久国产精品久久久久久久久久 | 国产精品69久久久久水密桃 | 美女视频一区二区三区 | www.久久精品| 91视频爱爱| 一本久久a久久精品亚洲 | 在线一区二区三区 | 91精品国产高清一区二区三区 | 亚洲精品乱码久久久久久按摩观 | av超碰| 日韩国产一区二区 | 亚洲精品电影在线观看 | 一区二区影院 | 国产精品久久久久久一区二区三区 | 中文字幕亚洲一区二区三区 | 天天操网 | 午夜精品久久久久 | 狠狠操麻豆 | 久久久久久久国产精品 | 欧美福利影院 | 国产www精品| 在线观看成人av | 91社区影院| 亚洲一区亚洲二区 | 亚洲一区视频网站 | 综合一区| 精品一区二区三区免费毛片 | 日韩成人免费av | 久久亚洲网 | 成人久久久 | 1000部精品久久久久久久久 | 日本三级国产 | 欧美日本亚洲 | 青青久视频 | 久久精品成人 | 国产免费一区二区三区 | 亚洲视频自拍 | 欧美日韩久久久 | 亚洲成人久久久 | 免费看片一区二区三区 |