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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

通過(guò)vue.extend實(shí)現(xiàn)消息提示彈框的方法記錄

瀏覽:3日期:2022-10-12 10:33:24
前提回顧

在項(xiàng)目開發(fā)中我們經(jīng)常使用的組件注冊(cè)分為兩種,一個(gè)是全局注冊(cè)和另一個(gè)是局部注冊(cè),假設(shè)我們的業(yè)務(wù)場(chǎng)景是用戶在瀏覽注冊(cè)頁(yè)面時(shí),點(diǎn)擊頁(yè)面中的注冊(cè)按鈕后,前端根據(jù)用戶的注冊(cè)信息先做一次簡(jiǎn)單的驗(yàn)證,并根據(jù)驗(yàn)證彈出一個(gè)對(duì)應(yīng)消息提示彈框我們拿到這個(gè)需求后,便開始著手準(zhǔn)備要通過(guò)局部注冊(cè)消息彈框組件的方法來(lái)實(shí)現(xiàn)這個(gè)場(chǎng)景,在通過(guò)局部注冊(cè)消息彈框組件的方法解決完這個(gè)需求后,自然是沾沾自喜,緊接著又迎來(lái)了一個(gè)需求,該需求是用戶在點(diǎn)擊該注冊(cè)按鈕時(shí),點(diǎn)擊幾次就要出現(xiàn)幾次這個(gè)消息彈框,你開始犯了難,并思考難道我要在頁(yè)面中提前插入n個(gè)組件標(biāo)簽,不然我怎么知道用戶要點(diǎn)擊幾次注冊(cè)按鈕?

在你還沒(méi)有解決第二個(gè)需求的時(shí)候,又一個(gè)需求來(lái)了,第三個(gè)需求是不僅僅是注冊(cè)頁(yè)面需要用到這個(gè)消息彈框組件,在其他多個(gè)頁(yè)面中也需要用到這個(gè)消息彈框組件。

基于上述的業(yè)務(wù)需求,我們可以通過(guò)vue.extend編程式的使用組件,從而實(shí)現(xiàn)功能性的動(dòng)態(tài)的消息提示彈框

局部注冊(cè)消息彈框組件

先通過(guò)局部注冊(cè)的方法來(lái)實(shí)現(xiàn)消息彈框組件

效果圖如下:

通過(guò)vue.extend實(shí)現(xiàn)消息提示彈框的方法記錄

構(gòu)造目錄如下:

通過(guò)vue.extend實(shí)現(xiàn)消息提示彈框的方法記錄

’src/main.js’文件的代碼:

import Vue from ’vue’import App from ’./App.vue’//全局引入樣式文件import ’./assets/css.css’;Vue.config.productionTip = falsenew Vue({ render: h => h(App)}).$mount(’#app’)

’src/bus/bus.js’文件的代碼:

import vue from ’vue’;var bus=new vue()export default bus;

’src/App.vue’文件的代碼:

<template> <div id='app'> <button @click='handleShowMessage'>點(diǎn)擊出現(xiàn)彈框</button> <TMessage :offsetTop=’50’></TMessage> <TMessage :offsetTop=’100’></TMessage> <TMessage :offsetTop=’150’></TMessage> <!-- 我是不是得在這里埋下幾萬(wàn)個(gè)消息彈框組件??? --> </div></template><script>import TMessage from ’./components/TMessage/TMessage.vue’;import bus from ’./bus/bus’;export default { name:’app’, data() { return { } }, components: { TMessage, }, methods: { handleShowMessage(){ //打印查看消息彈框的組件對(duì)象 console.log(TMessage); //點(diǎn)擊按鈕后出現(xiàn)消息彈框 bus.$emit(’showMessage’) } },}</script><style>#app { display: flex; justify-content: center;} #app button{ margin-top: 250px;}</style>

’src/components/TMessage/TMessage.vue’文件的代碼:

<template> <transition name='message-fade'> <div : : v-if='!closed' > <p class='message-content'>提示信息:{{message}}</p> <i class='icon icon-close'></i> </div> </transition></template><script> export default { name: ’TMessage’, data() { return { message: ’這是默認(rèn)信息’, //彈框的提示內(nèi)容 type: ’success’, //彈框的樣式 success、warning、error center: true, //彈框是否居中顯示 offset: 20, //彈框默認(rèn)的偏移量 closed: true, //彈框默認(rèn)隱藏 通過(guò)v-if='!closed'控制 duration: 1000, //彈框消失的時(shí)間 timer: null, //準(zhǔn)備一個(gè)定時(shí)器 } }, mounted() { this.offset=this.offsetTop bus.$on(’showMessage’,()=>{ this.closed=false; this.timer = setTimeout(() => { //如果彈框是顯示狀態(tài)的話在duration后會(huì)變?yōu)殡[藏狀態(tài) if (!this.closed) { this.close(); } }, this.duration); }) }, props:[’offsetTop’], methods: { close() { this.closed = true; } } }</script>

寫到這里,我們實(shí)現(xiàn)的效果為(動(dòng)圖如下):

通過(guò)vue.extend實(shí)現(xiàn)消息提示彈框的方法記錄

’src/assets/css.css’文件的代碼:

/*樣式重點(diǎn)解析:1.’message’2.’message-’ + type: 2.1:message-success 2.2:message-warning 2.3:message-error 3.’is-center’ //決定了彈框居中顯示4.’message-fade-enter’ //4和5決定了彈框的的過(guò)渡效果5.’message-fade-leave-active’6. .message {top:20px; //決定了彈框的偏移量}*/.message { min-width: 380px; -webkit-box-sizing: border-box; box-sizing: border-box; border-radius: 4px; border-width: 1px; border-style: solid; border-color: #EBEEF5; position: fixed; left: 50%; top: 20px; z-index: 999999999; transform: translateX(-50%); background-color: #edf2fc; transition: opacity .3s, transform .4s, top .4s; overflow: hidden; padding: 15px 15px 15px 20px; display: flex; align-items: center}.message.is-center { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center}.message p { margin: 0}.message-info .message-content { color: #909399}.message-success { background-color: #f0f9eb; border-color: #e1f3d8}.message-success .message-content { color: #67C23A}.message-warning { background-color: #fdf6ec; border-color: #faecd8}.message-warning .message-content { color: #E6A23C}.message-error { background-color: #fef0f0; border-color: #fde2e2}.message-error .message-content { color: #F56C6C}.message-content { padding: 0; font-size: 14px; line-height: 1}.message-content:focus { outline-width: 0}.message .icon-close { position: absolute; top: 50%; right: 15px; -webkit-transform: translateY(-50%); transform: translateY(-50%); cursor: pointer; color: #C0C4CC; font-size: 16px}.message .icon-close:focus { outline-width: 0}.message .icon-close:hover { color: #909399}.message-fade-enter, .message-fade-leave-active { opacity: 0; transform: translate(-50%, -100%)}編程式的使用組件

上方在通過(guò)局部注冊(cè)消息彈框組件時(shí)體現(xiàn)的局限性:靈活性低、可復(fù)用性低、代碼觀感較差

緊接著我們就要使用vue.extend來(lái)實(shí)現(xiàn)消息提示彈框,做到編程式的使用組件

該構(gòu)造目錄為:

通過(guò)vue.extend實(shí)現(xiàn)消息提示彈框的方法記錄

’src/App.vue’文件的代碼:

<template> <div id='app'> <button @click='handleShowMessage'>點(diǎn)擊出現(xiàn)彈框</button> </div></template><script>import Message from ’./components/TMessage/TMessage.js’;export default { name:’app’, data() { return { } }, methods: { handleShowMessage(){ /** * 每點(diǎn)擊一次按鈕就調(diào)用一次該工廠函數(shù) * 每調(diào)用一次該工廠函數(shù)就創(chuàng)建一個(gè)彈框組件對(duì)象 */ return Message(’我好帥啊我好帥啊我好帥啊’) } },}</script><style>#app { display: flex; justify-content: center;} #app button{ margin-top: 250px;}</style>

’src/components/TMessage/TMessage.vue’文件的代碼:

<template> <transition name='message-fade'> <div : : v-if='!closed' > <p class='message-content'>提示信息:{{message}}</p> <i class='icon icon-close'></i> </div> </transition></template><script> export default { name: ’TMessage’, data() { return {message: ’這是默認(rèn)信息’, //彈框的提示內(nèi)容type: ’success’, //彈框的樣式 success、warning、errorcenter: true, //彈框是否居中顯示offset: 20, //彈框默認(rèn)的偏移量closed: false, //彈框默認(rèn)隱藏 通過(guò)v-if='!closed'控制duration: 1000, //彈框消失的時(shí)間timer: null, //準(zhǔn)備一個(gè)定時(shí)器 } }, mounted() { /*為了方便演示先不讓彈框消失 this.timer = setTimeout(() => { //在規(guī)定的this.duration后該消息彈框消失 if (!this.closed) { this.close(); }}, this.duration); */ }, methods: { close() {this.closed = true; } } }</script>

’src/components/TMessage/TMessage.js’文件的代碼:

import Vue from ’vue’;import TMessage from './TMessage.vue';function Message(data) { data = data || {}; if (typeof data === ’string’) { data = { message: data } } const TMessageClass = Vue.extend(TMessage); //得到的是一個(gè)組件對(duì)象VueComponent實(shí)例 //new TMessageClass接收的是一個(gè)包含組件選項(xiàng)的對(duì)象 覆蓋 let instance = new TMessageClass({ data }); instance.$mount(); console.log(instance.$el,’現(xiàn)在才可以訪問(wèn)$el’); /*instance.$el的打印結(jié)果如下: <div style='top: 20px;'> <p class='message-content'>提示信息:我好帥啊我好帥啊我好帥啊</p> <i class='icon icon-close'></i> </div> */ document.body.appendChild(instance.$el);}export default Message

寫到這里,我們來(lái)看一下效果,如下圖:

通過(guò)vue.extend實(shí)現(xiàn)消息提示彈框的方法記錄

通過(guò)vue.extend實(shí)現(xiàn)消息提示彈框的方法記錄

解決消息彈框覆蓋問(wèn)題

我們已經(jīng)做到了每點(diǎn)擊一次按鈕就出現(xiàn)一個(gè)消息彈框組件,但是因?yàn)槎ㄎ坏膯?wèn)題出現(xiàn)了相互覆蓋,所以得再接著去’TMessage.js’文件中去完善邏輯:

//file:’src/components/TMessage/TMessage.js’/*解決方法:通過(guò)維護(hù)一個(gè)隊(duì)列來(lái)存儲(chǔ)每一個(gè)消息彈框組件對(duì)象在每一次生成消息彈框組件時(shí)都需要重新計(jì)算其top值通過(guò)該隊(duì)列來(lái)計(jì)算上一個(gè)消息彈框組件對(duì)象的top值*/import Vue from ’vue’;import TMessage from './TMessage.vue';//裝有instance消息彈框組件對(duì)象的容器let instances = [];function Message(data) { data = data || {}; if (typeof data === ’string’) { data = { message: data } } data.onClose = function() { console.log(’onClose’); // 每消失一個(gè)消息彈框就會(huì)觸發(fā)一個(gè)onClose //instance是消息彈框組件的實(shí)例對(duì)象即VueComponent console.log(instance,’instance’);//每消失一個(gè)就得把在instances容器中對(duì)應(yīng)的該組件對(duì)象給刪除掉 Message.close(instance); }; const TMessageClass = Vue.extend(TMessage); let instance = new TMessageClass({ data }); instance.$mount(); document.body.appendChild(instance.$el); //如果data數(shù)據(jù)中有設(shè)置偏移量則使用該偏移量 //否則使用默認(rèn)的偏移量值20 let offset = data.offset || 20; //規(guī)定每一個(gè)消息彈框的間隔 //這里直接使用offset值做為間隔 let offsetTop = offset; /**思路如下: * let offsetTop=20; * [].forEach(()=>{offsetTop+=10}); * console.log(offsetTop) //還是20 * * [{a:’1’}].forEach(()=>{offsetTop+=10}); * console.log(offsetTop) //才是30 */ /*這里是在循環(huán)之后才去push 因?yàn)樯傻牡谝粋€(gè)消息彈框是不需要計(jì)算offsetTop的 生成的第一個(gè)消息彈框直接使用offset值即可 */ //從第一個(gè)起instances里有值了(組件對(duì)象)以后再去循環(huán)計(jì)算offsetTop值 instances.forEach( item => { //根據(jù)上一個(gè)計(jì)算的offsetTop+自身的高度+規(guī)定的間隔 offsetTop += item.$el.offsetHeight + offset; }); //當(dāng)前生成的消息彈框的高度為offsetTop //offsetTop是根據(jù)上一個(gè)生成的消息彈框的三個(gè)值計(jì)算得到的 //instances容器中第0個(gè)是不需要參與計(jì)算的即采用默認(rèn)的offset值 instance.$el.style.top = offsetTop + ’px’; instances.push(instance);}Message.close = function(instance) { //每消失一個(gè)就得把在instances容器中對(duì)應(yīng)的該組件對(duì)象給刪除掉 instances = instances.filter( item => item !== instance );};export default Message

’src/components/TMessage/TMessage.vue’文件的代碼:

//file:’src/components/TMessage/TMessage.vue’<template> <transition name='message-fade'> <div : : v-if='!closed' > <p class='message-content'>提示信息:{{message}}</p> <i class='icon icon-close'></i> </div> </transition></template><script> export default { name: ’TMessage’, data() { return {message: ’這是默認(rèn)信息’, //彈框的提示內(nèi)容type: ’success’, //彈框的樣式 success、warning、errorcenter: true, //彈框是否居中顯示offset: 20, //彈框默認(rèn)的偏移量closed: false, //彈框默認(rèn)隱藏 通過(guò)v-if='!closed'控制duration: 1000, //彈框消失的時(shí)間timer: null, //準(zhǔn)備一個(gè)定時(shí)器,onClose: null //擴(kuò)充一個(gè)功能 彈框消失后觸發(fā) } }, mounted() { //在規(guī)定的this.duration后該消息彈框消失 //消息框消失后會(huì)觸發(fā)this.close()函數(shù)方法 this.timer = setTimeout(() => { if (!this.closed) { this.close(); }}, this.duration); }, methods: { close() {this.closed = true;//如果該組件可以接收到this.onClose方法則調(diào)用該方法//該方法是在該消息彈框消失的時(shí)候被觸發(fā)if (typeof this.onClose === ’function’) { this.onClose();} } } }</script>

寫到這里,我們來(lái)看一下效果,如下圖:

通過(guò)vue.extend實(shí)現(xiàn)消息提示彈框的方法記錄

優(yōu)化消息彈框消失的效果

我們可以進(jìn)一步的優(yōu)化消息彈框消失的效果,效果圖如下:

通過(guò)vue.extend實(shí)現(xiàn)消息提示彈框的方法記錄

’src/components/TMessage/TMessage.vue’文件的代碼:

<template> <transition name='message-fade'> <div : : v-if='!closed' > <p class='message-content'>提示信息:{{message}}</p> <i class='icon icon-close'></i> </div> </transition></template><script> export default { name: ’TMessage’, data() { return {message: ’這是默認(rèn)信息’, type: ’success’, center: true, offset: 20, closed: false, duration: 1000, timer: null,onClose: null //擴(kuò)充一個(gè)功能 彈框消失后觸發(fā) } }, mounted() { this.timer = setTimeout(() => { if (!this.closed) { this.close(); }}, this.duration); }, methods: { close() {this.closed = true;//當(dāng)彈框消失時(shí)會(huì)調(diào)用this.onClose()該函數(shù)方法if (typeof this.onClose === ’function’) { this.onClose();} } } }</script>

’src/components/TMessage/TMessage.js’文件的代碼:

import Vue from ’vue’;import TMessage from './TMessage.vue';//裝有instance的容器let instances = [];function Message(data) { data = data || {}; if (typeof data === ’string’) { data = { message: data } } const TMessageClass = Vue.extend(TMessage); let instance = new TMessageClass({ data }); instance.$mount(); document.body.appendChild(instance.$el); data.onClose = function() { console.log(’onClose’); // 每消失一個(gè)彈框就會(huì)觸發(fā)一個(gè)onClose方法 Message.close(instance); }; //如果data數(shù)據(jù)中有設(shè)置偏移量則使用該偏移量 //否則使用默認(rèn)的偏移量20 let offset = data.offset || 20; //規(guī)定每一個(gè)消息彈框的間隔 let offsetTop = offset; instances.forEach( item => { //上一個(gè)實(shí)例對(duì)象的offsetTop+自身的高度+規(guī)定的間隔 offsetTop += item.$el.offsetHeight + offset; }); instance.$el.style.top = offsetTop + ’px’; instances.push(instance);}Message.close = function(instance) { /* 每次彈窗關(guān)閉都會(huì)調(diào)用一次這個(gè)函數(shù) * 獲取當(dāng)前這個(gè)instance的高度 * 把這個(gè)instance后面的所有實(shí)例的top減去這個(gè)高度,再減去偏移 * */ let removeHeight = instance.$el.offsetHeight + instance.offset; //把傳遞進(jìn)來(lái)的instance在容器instances中刪除 let index = instances.findIndex( item => item === instance ); instances = instances.filter( item => item !== instance ); //對(duì)應(yīng)的消息彈框消失后在該消息彈框后面的消息彈框會(huì)依次出現(xiàn)頂上來(lái)的效果 //原理是找到對(duì)應(yīng)的消息彈框在instances容器中的下標(biāo)位置 //通過(guò)循環(huán)改變對(duì)應(yīng)的消息彈框后面的所有消息彈框的高度 for (let i = index; i<instances.length; i++) { instances[i].$el.style.top = parseFloat(instances[i].$el.style.top) - removeHeight + ’px’; }};export default Message

’src/App.vue’文件的代碼:

<template> <div id='app'> <button @click='handleShowMessage'>點(diǎn)擊出現(xiàn)彈框</button> </div></template><script>import Message from ’./components/TMessage/TMessage.js’;export default { name:’app’, data() { return { } }, methods: { handleShowMessage(){ /** * 調(diào)用一次就創(chuàng)建一個(gè)彈框組件對(duì)象 */ return Message(’我好帥啊我好帥啊我好帥啊’) } },}</script><style>#app { display: flex; justify-content: center;} #app button{ margin-top: 250px;}</style>終極版實(shí)現(xiàn)版

我們?cè)谏戏健痵rc/App.vue’文件中是通過(guò)引入TMessage.js后再通過(guò)Message()的方式調(diào)用使用該組件的,還可以將調(diào)用方式掛載到Vue全局上,來(lái)看看怎么操作:

’src/main.js’文件的代碼

import Vue from ’vue’import App from ’./App.vue’import ’./assets/css.css’;import Message from ’../src/components/TMessage/TMessage’;Vue.config.productionTip = false//掛載到全局Vue.prototype.$message = Message;new Vue({ render: h => h(App)}).$mount(’#app’)

’src/App.vue’文件的代碼

<template> <div id='app'> <button @click='handleShowMessage'>點(diǎn)擊出現(xiàn)彈框</button> </div></template><script>export default { name:’app’, data() { return { } }, methods: { handleShowMessage(){ this.$message.error(’我好帥啊我好帥啊我好帥啊’) this.$message.success(’我好帥啊我好帥啊我好帥啊’) this.$message.info(’我好帥啊我好帥啊我好帥啊’) this.$message.warning(’我好帥啊我好帥啊我好帥啊’) } },}</script><style>#app { display: flex; justify-content: center;} #app button{ margin-top: 250px;}</style>

’src/components/TMessage/TMessage.vue’文件的代碼:

<template> <transition name='message-fade'> <div : : v-if='!closed' > <p class='message-content'>提示信息:{{message}}</p> <i class='icon icon-close'></i> </div> </transition></template><script> export default { name: ’TMessage’, data() { return {message: ’這是默認(rèn)信息’, type: ’success’, center: true, offset: 20, closed: false, duration: 1000, timer: null,onClose: null //擴(kuò)充一個(gè)功能 彈框消失后觸發(fā) } }, mounted() { this.timer = setTimeout(() => { if (!this.closed) { this.close(); }}, this.duration); }, methods: { close() {this.closed = true;//當(dāng)彈框消失時(shí)會(huì)調(diào)用this.onClose()該函數(shù)方法if (typeof this.onClose === ’function’) { this.onClose();} } } }</script>

’src/components/TMessage/TMessage.js’文件的代碼:

import Vue from ’vue’;import TMessage from './TMessage.vue';let instances = [];function Message(data) { data = data || {}; if (typeof data === ’string’) { data = { message: data } } data.onClose = function() { console.log(’onClose’); //instance是消息彈框組件的實(shí)例對(duì)象即VueComponent Message.close(instance); }; const TMessageClass = Vue.extend(TMessage); let instance = new TMessageClass({ data }); instance.$mount(); // console.log(instance.$el,’現(xiàn)在才可以訪問(wèn)$el’); document.body.appendChild(instance.$el); let offset = data.offset || 20; //規(guī)定每一個(gè)消息彈框的間隔 let offsetTop = offset; //第一個(gè)彈框是不需要計(jì)算偏移量的 //從第一個(gè)以后再去循環(huán) instances.forEach( item => { //上一個(gè)實(shí)例對(duì)象的offsetTop+自身的高度+規(guī)定的間隔 offsetTop += item.$el.offsetHeight + offset; }); instance.$el.style.top = offsetTop + ’px’; instances.push(instance);}Message.close = function(instance) { let removeHeight = instance.$el.offsetHeight + instance.offset; let index = instances.findIndex( item => item === instance ); instances = instances.filter( item => item !== instance ); for (let i = index; i<instances.length; i++) { instances[i].$el.style.top = parseFloat(instances[i].$el.style.top) - removeHeight + ’px’; }};[’info’, ’success’, ’error’, ’warning’].forEach( type => { Message[type] = function(data) { if (typeof data === ’string’) { data = {message: data } } data.type = type; //整合data后再次去調(diào)用Message() return Message(data); };} );// Message.error=function(data){// if (typeof data === ’string’) {// data = {// message: data// }// }// return Message({// ...data,// type:’error’// })// }export default Message

完結(jié)撒花,最后來(lái)看一下效果圖:

通過(guò)vue.extend實(shí)現(xiàn)消息提示彈框的方法記錄

總結(jié)

到此這篇關(guān)于通過(guò)vue.extend實(shí)現(xiàn)消息提示彈框的文章就介紹到這了,更多相關(guān)vue.extend實(shí)現(xiàn)消息提示彈框內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 美女天天操 | 国产区精品在线 | 色吟av| 最新日韩av | 久久伊| 久久久av| 毛片免费视频 | 国产男女视频在线观看 | 中文天堂在线观看视频 | 亚洲乱码一区二区三区在线观看 | 97国产精品 | 亚洲一区二区三区在线视频 | 亚洲国产成人av | 亚洲视频在线观看网址 | 国产 日韩 欧美 在线 | 国产精品高清一区二区 | 婷婷久久综合 | 国产成人99久久亚洲综合精品 | 精久久久 | 成人免费在线看片 | 在线成人av | 免费一区二区三区 | 漂亮少妇videoshd忠贞 | 免费一级毛片 | 欧美一区二区三区在线观看视频 | 午夜精品久久久久久久久 | 人人澡人人草 | 亚洲欧美国产一区二区 | 在线免费国产 | 国产精品视频一区二区三区 | 国产精品国产精品国产专区不卡 | 亚洲精品一区二区 | 中文成人在线 | 啪啪tv网站免费入口 | 欧美一区二区三区在线观看视频 | 亚洲精彩视频 | 免费看片www| 国产综合精品一区二区三区 | 日韩欧美在线免费观看 | 亚洲va欧美va天堂v国产综合 | 亚洲欧美国产一区二区 | 成人福利网 | 欧美一区二区三区精品 | 国产午夜精品一区二区 | 国产高清精品一区二区三区 | 国产免费看 | 曰批视频在线观看 | 国产在线不卡一区 | 日韩午夜激情视频 | 99亚洲精品 | 欧美午夜一区二区三区 | 日韩一区二区精品视频 | 中文字幕久久精品 | 亚洲国产精品第一区二区 | 黄色大片观看 | 色天天综合久久久久综合片 | 亚洲国产精品视频 | 卡通动漫第一页 | 亚洲国产精品一区二区三区 | 日本激情网 | 亚洲性人人天天夜夜摸 | 欧美性猛交一区二区三区精品 | 中文字幕一区二区在线观看 | 久久亚洲一区二区三区四区 | 国产96在线观看 | 国偷自产av一区二区三区 | 天天亚洲综合 | 一区二区三区在线 | 久久国产欧美日韩精品 | 亚洲一区二区三区高清 | 国产情侣在线视频 | 在线成人免费视频 | 91精品国产91久久久久久黑人 | 欧洲精品在线视频 | 国产成人精品一区二区三区视频 | 日韩精品一区二区三区中文字幕 | 国产精品毛片一区二区三区 | 国产免费一区二区三区 | 黄片毛片在线观看 | 精品国产乱码久久久久久蜜臀 | 欧美一区视频 | 黄色三级视频 | 麻豆资源 | 天天干干 | 国产一区二区精品在线观看 | 国产情侣一区二区三区 | 国产探花 | 久久天堂热| 亚洲一二三| 欧美日韩午夜 | 国产精品久久久久精 | 欧美日韩视频在线 | 国产精品久久久久久久电影 | 一区二区三区视频免费看 | 黄色大片免费网站 | 国外成人在线视频 | 欧美一级免费看 | 亚洲欧美一区二区三区久久 | 亚洲视频中文字幕 | 亚洲精品一区在线观看 | 久久久国产日韩 | 狠狠躁天天躁夜夜添人人 | 91精品国产综合久久久蜜臀粉嫩 | 亚洲免费视频网址 | 国产精品成人网 | 日韩一区久久 | 狠狠的日 | 国产精品久久久久久久久久 | 亚洲一区二区三区免费 | 亚洲国产精品区 | 久久国产精品视频一区 | 久久综合久色欧美综合狠狠 | 成人精品视频在线观看 | 一区二区三区影视 | 91精品久久久久久久久久入口 | 日韩视频在线观看 | 91精品国产欧美一区二区 | 欧美日韩精品一区二区在线观看 | 一级片在线观看免费 | 男女深夜网站 | 可以看av的网站 | 精品自拍视频 | 久久不卡日韩美女 | 免费看的黄色 | 国产在线h | 国产精品久久久久9999赢消 | 北条麻妃99精品青青久久主播 | 嫩草91| 日韩最新网址 | 欧美日本乱大交xxxxx | 天天久久 | 亚洲色图3p| 亚洲精品一区二区三区中文字幕 | 成人精品网 | 国产在线视频一区二区 | 国产精品免费av | 国产精品一区电影 | 亚洲欧洲自拍 | 亚洲欧美一区二区三区视频 | 日韩在线播放视频 | 青青草99| 久久精品视| 婷婷综合五月天 | 99色综合 | 欧美激情自拍偷拍 | 亚洲a在线播放 | 国产日韩欧美一区二区 | 国产亚洲欧美在线 | 国产精品视频免费观看 | 91久久久www播放日本观看 | 日韩欧美在线综合 | 最新国产成人 | 第一色视频 | 亚洲一区二区三区蜜桃 | 欧美精品1区 | 狠狠av | 资源av| 久久综合一区二区 | av大全在线 | 久久精品久久精品 | 亚洲va欧美va天堂v国产综合 | 国产三级日本三级美三级 | 亚洲精品福利 | 久久亚洲精品视频 | 国内精品视频一区二区三区 | 国内精品视频一区二区三区八戒 | 精品乱子伦一区二区三区 | 日韩在线高清视频 | 成人av观看 | 拍真实国产伦偷精品 | 中文字幕a视频 | 91porn在线| 日本三级在线观看中文字 | 国产精品亚洲一区二区三区 | 81精品国产乱码久久久久久 | 欧美视频三区 | 欧美99 | 日韩国产欧美视频 | 国产精品久久久久久久久久 | 日本一区二区不卡视频 | 日本精品一区二区三区视频 | 亚洲一区二区三区欧美 | 国产亚洲欧美一区 | 国产欧美综合一区二区三区 | 国产亚洲视频在线观看 | 精品久久久久久久 | 国产精品一码二码三码在线 | 在线中文av| 97久久精品午夜一区二区 | 国产精品成人久久久久 | 国产成人精品一区二区三区四区 | 国产精选一区二区三区不卡催乳 | 一区二区三区四区在线 | 91视频网 | 国产精品伦一区二区三级视频 | 成人网久久 | 亚洲精品1 | 9久9久| 久久久久久久久久影院 | 亚洲视频免费在线观看 | 91精品国产成人 | 日本久久久一区二区三区 | 这里精品 | 91精品在线看 | 精品一区二区三区蜜桃 | 青青操av在线| 亚洲福利二区 | 久久久久久91香蕉国产 | 黄色一级片免费 | www久久99| www久久久久| 欧美精品一区二区在线观看 | 草比网站 | 99re视频在线 | 成人综合在线观看 | 国产一区二区精品在线观看 | 日韩一区二区在线播放 | 久久久久久久一区二区 | 九九久久久 | 成人精品在线观看 | 毛片a片| 视频在线一区二区 | 亚洲精品乱码久久久久久蜜桃不爽 | 免费一区二区 | 亚洲自拍偷拍欧美 | 成人免费在线播放 | 精品国产欧美一区二区三区不卡 | 午夜一区二区三区 | 久久久网页 | 国产精品久久久久久久7电影 | 欧美一区二区三区在线观看 | 色爱区综合 | 婷婷国产精品 | 国产免费黄色 | 成人在线免费av | 亚洲免费视频网址 | 中文字幕大全 | 免费在线精品视频 | 精品国产第一国产综合精品 | 欧美成人精品激情在线观看 | 日本高清h色视频在线观看 日日干日日操 | 欧美精品91 | 久久三区 | 欧美视频xxx | 性视频一区二区 | 91在线视频在线 | 亚洲成人一区二区三区 | 99久久国产 | 日本二区在线播放 | 中文字幕亚洲欧美日韩在线不卡 | 人人插人人干 | 91亚洲国产成人久久精品网站 | 亚洲成人一区二区三区 | 国产97人人超碰caoprom | 色吧久久| 四虎影院最新地址 | 黄片毛片| 成人在线不卡 | 91麻豆精品一二三区在线 | 九九香蕉视频 | 日韩一区二区在线电影 | 国产一区影院 | 久久免费精品视频 | jizz欧美最大| 久久久久久久久久一区二区 | 91亚洲免费 | 久草国产视频 | 精品伦精品一区二区三区视频 | 视频一区二区三区在线播放 | 亚洲网站在线观看 | 日日操夜夜 | 久久国产精品首页 | 欧美国产日韩在线观看 | 国产乱码一区二区三区在线观看 | 免费在线观看一区二区 | 欧美一级视频 | 亚州成人 | 青青操天天干 | a久久久| av影片在线播放 | 亚洲国产二区 | 天堂色网 | 亚洲欧美国产另类 | 精品国产乱码久久久久久88av | 午夜精品久久久久久久久久久久 | 成人免费视频观看视频 | 国产区在线 | 狠狠干狠狠操 | 亚洲美女性视频 | 不卡一区 | 国产成人视屏 | 国产精品亚洲a | 国产精品久久久久久久一区探花 | 欧美精品久久久 | 性视频网站免费 | 亚洲欧洲一区二区三区 | 亚洲精品乱码久久久久久国产主播 | 91精品国产综合久久久久 | www.日韩视频 | 嫩草精品 | av三级在线观看 | 久久久国产视频 | 国产午夜精品一区二区 | 国产精彩视频 | 宅男lu666噜噜噜在线观看 | 91高清在线 | www.日本三级 | 亚洲欧美第一页 | 日本乱偷中文字幕 | xxxx网 | 91国偷自产一区二区三区亲奶 | 国产美女在线观看 | 91九色在线 | 亚洲日本精品视频 | 久草在线视频网 | 日韩一区二区视频 | 99精品视频一区二区三区 | 色综合二区| 91精品综合久久久久久五月天 | 精品一区二区三区免费毛片 | 久久黄色 | 黄色高清视频 | 免费国产一区二区 | 日韩高清中文字幕 | 亚洲精品99| 国产2区 | 女同久久另类99精品国产 | 男人的天堂视频 | 在线免费看a | 精品免费国产一区二区三区 | 一 级 黄 色 片免费网站 | 久久免费精品视频 | 精品三级三级三级三级三级 | 亚洲国产精品第一区二区 | 亚洲一区二区三区在线视频 | 亚洲不卡视频 | 天天操天天玩 | 国产乱码久久久久久一区二区 | 91精品国产综合久久久久 | 黄色网址大全在线观看 | 99热在线播放 | 在线一区观看 | 色视频一区二区三区 | 成人精品一区二区三区中文字幕 | 中文字幕在线不卡 | 日韩av网站在线 | 亚洲综合国产 | 日韩成人小视频 | 国产在线观看一区二区 | 国产精品高清一区二区 | 亚洲欧美一区二区三区在线 | 欧美日韩视频在线播放 | 91麻豆产精品久久久 | 日韩精品视频在线播放 | av男人的天堂在线 | 一级毛片免费 | www.久久视频 | 国产精品日韩欧美一区二区三区 | 久久99一区二区 | 欧美视频第一页 | 久久精品亚洲精品 | 蜜桃免费一区二区三区 | 久久久蜜臀 | 成人欧美一区二区三区在线观看 | 国产精品乱码一区二区三区 | 国产97碰免费视频 | 天天看天天爽 | 丁香五月亚洲综合在线 | 黄色大片视频 | 日韩一二三区 | 中文字幕日韩在线视频 | 亚洲综合国产 | av片网站 | 影音先锋成人资源网 | 激情网在线观看 | 亚洲福利片 | 夜夜艹 | 日本在线观看 | 成人午夜视频在线观看 | 中文字幕在线观看视频一区 | 久久国产精品无码网站 | 国产一区二区在线免费 | 欧美日韩中文字幕在线 | 九九热欧美 | 在线观看日韩av | 欧美日韩中文国产一区发布 | 久久精品亚洲一区二区 | 亚洲精品国产setv | 国产精品一区二区视频 | 免费国产在线视频 | 国产老头老太作爱视频 | 激情五月综合 | 国产毛片毛片 | 欧美成人精品一区二区男人看 | 91av官网| 欧美精品一区二区三区在线四季 | 久久久com| 一区二区视频网 | 亚洲tv久久爽久久爽 | 在线播放亚洲 | 神马久久久久久久久 | 亚洲久久在线 | 一级免费视频 | 在线精品亚洲欧美日韩国产 | 国产精品一码二码三码在线 | 黄色网亚洲 | 毛片入口 | 国产伦精品一区二区三毛 | 国产精品毛片久久久久久 | 欧美一区精品 | 午夜精品久久久久久久久久久久久 | 欧美精品在欧美一区二区少妇 | 久久久中文| 国产精品久久久久久久久久东京 | 精品国产91久久 | 一区二区三区高清 | 久久综合伊人 | 国产视频一区二区 | 男女视频在线观看 | 国产成人久久777777 | 天天操天天干天天插 | 国产视频一区二区 | 日韩天堂| 神马香蕉久久 | 亚洲免费视频在线 | 免费日本视频 | 国产精品一区二区三区久久 | 日本a v在线播放 | 国产精品久久久久久久久久小说 | 国产精品久久久久久久久小说 | 欧美黄色激情 | 天堂网av2020| 三级av网站 | 精品视频在线免费观看 | 西西做爰免费视频 | 国产精品日韩欧美一区二区三区 | 久久久国产精品视频 | 国产福利片在线观看 | 国产精品精品 | 午夜精品成人一区二区 | www.伊人网 | 色乱码一区二区三区网站 | 欧美一区二区三区精品 | 亚洲欧美一级久久精品 | 91久久精品| 99精品国产热久久91蜜凸 | 国产成人精品一区二区三区在线 | 国产精品大片 | 成人免费网站 | www.亚洲成人 | 色综合天天天天做夜夜夜夜做 | 欧美全黄| 亚洲成人av在线 | 国产成人精品亚洲日本在线观看 | 国产第一区二区 | 一区二区三区日本 | 久久国产精品91 | 一区二区中文字幕 | 久久手机免费视频 | 日韩中文在线 | 久久大陆 | 欧美第一网站 | 亚洲成人精品网 | 日本黄a三级三级三级 | 亚洲免费在线看 | 欧美一区2区三区4区公司二百 | www.操.com| 99热免费在线 | 国产亚洲精品精品国产亚洲综合 | 欧美专区在线 | 午夜男人视频 | 亚洲国产精品久久久久久久 | 亚洲v在线| 欧美日韩在线视频一区二区 | 国产一区二区视频在线 | 免费一区二区 | 蜜桃一区二区 | 伊人网网站 | 欧美日韩国产一区二区三区在线观看 | 国产精品无码专区在线观看 | 欧美成人激情 | 欧美激情在线精品一区二区三区 | 日韩一区二区在线观看视频 | 国产h片在线观看 | 亚洲高清视频在线观看 | 久久精品伊人 | 日韩成人在线观看 | 中国毛片基地 | 日韩毛片在线观看 | 久久久久一区二区三区 | 成人免费毛片高清视频 | 国产精品一区二区久久久久 | 国产一区在线视频 | 国产精品国产成人国产三级 | hsck成人网 | 国产成人精品免高潮在线观看 | 99久久久无码国产精品 | 亚洲精久 | 久久精品在线 | 国产人免费人成免费视频 | 国家aaa的一级看片 操操操夜夜操 | 国产精品久久久久久久午夜 | 欧美专区在线 | 91在线中文 | 日本美女一区二区三区 | 国产 欧美 日韩 一区 | 日韩视频免费在线 | 日韩在线免费观看视频 | 久久a毛片 | 国产高清亚洲 | 久久免费视频9 | 91在线看片 | 国产成人一区二区三区影院在线 | 女同久久| 欧美日韩国产影院 | 日本精品免费 | 亚洲瑟瑟 | 日韩中文字幕在线视频 | 久久精品一区二区 | 久99视频| 精品国产成人 | 国产96在线观看 | 羞羞在线观看视频免费观看hd | 亚洲欧美另类在线 | 精品国产髙清在线看国产毛片 | 色吟av| 国产毛片一区二区 | 欧美成人一区二免费视频软件 | 日本一区二区三区在线视频 | 日韩国产精品一区二区三区 | 免费a大片 | 国产精品久久久久久中文字 | 亚洲一区二区三区免费视频 | 久久99国产伦子精品免费 | 久久久久久久久综合 | 精品一区二区三区不卡 | 欧美激情| 日韩在线1 | 亚洲综合第一页 | 五月婷婷中文 | 亚洲视频中文字幕 | 国产精品成人网 | 日本精品网站 | 久久国产一区二区三区 | 免费看黄色一级视频 | 亚洲精品在线播放视频 | 一本一道久久a久久精品逆3p | 黄网在线观看 | 欧美综合国产 | 国产欧美精品区一区二区三区 | 国外成人在线视频网站 | 日韩精品一区二区三区在线观看 | 国产精品白浆 | 欧美极品一区二区 | 91啪影院 | 精品视频一区二区 | 九九热在线免费视频 | 中文字幕视频三区 | 亚洲欧洲精品一区二区 | 亚洲国产成人久久一区二区三区 | 日日射av | 91精品久久久久久久久久久久久久久 | 国产精品资源在线 | 欧美亚洲啪啪 | 99色影院| 欧美成人手机在线 | 欧美天堂在线观看 | 欧美黑人做爰xxxⅹ 国产精品一区二区视频 | 一级a性色生活片久久毛片明星 | 久久国产精品一区 | 91精品久久久久久久久久入口 | 亚洲成人三级 | 亚洲成人激情在线观看 | 国产精品一区二区在线 | 在线观看免费av电影 | 成人影院www在线观看 | 日韩城人免费 | 嫩呦国产一区二区三区av | 亚洲午夜精品片久久www慈禧 | 久久久网页 | 午夜免费视频网站 | 日韩91精品 | 日韩色图在线观看 | 在线亚洲人成电影网站色www | 福利片在线 | 免费观看一区二区三区 | 龙珠z中文版普通话 | 中文字幕亚洲精品 | 色爱区综合 | 三级黄色视频毛片 | 日韩精品在线免费观看 | 日韩在线视频第一页 | 黄色毛片在线看 | 可以在线看的黄色网址 | 亚洲综合在线播放 | 国产日韩欧美视频 | 久久毛片 | 中文字幕在线资源 | 国产美女久久久 | aaa级片| 99久久九九 | 国产精品视频 | 国产一区 日韩 | 亚洲成人精品网 | 中文字幕在线视频一区 | 羞羞的视频在线 | 国产综合亚洲精品一区二 | 国产成人精品久久二区二区 | 欧美一区二区三区免费 | 成人乱人乱一区二区三区 | 狠狠艹| 国产精品国产三级国产aⅴ中文 | 国产精品香蕉在线观看 | www.黄色片视频 | 精品无人乱码区1区2区3区 |