黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

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

詳解JavaScript面向對象實戰之封裝拖拽對象

瀏覽:33日期:2023-06-02 14:23:54
目錄概述1、如何讓一個DOM元素動起來2、如何獲取當前瀏覽器支持的transform兼容寫法3、如何獲取元素的初始位置5、我們需要用到哪些事件?6、拖拽的原理7、 我又來推薦思維導圖輔助寫代碼了8、代碼實現part1、準備工作part2、功能函數part3、聲明三個事件的回調函數9、封裝拖拽對象概述

為了能夠幫助大家了解更多的方式與進行對比,我會使用三種不同的方式來實現拖拽。

不封裝對象直接實現; 利用原生JavaScript封裝拖拽對象; 通過擴展jQuery來實現拖拽對象。

拖拽的實現過程會涉及到非常多的實用小知識,因此為了鞏固我自己的知識積累,也為了大家能夠學到更多的知識,我會盡量詳細的將一些細節分享出來,相信大家認真閱讀之后,一定能學到一些東西。

1、如何讓一個DOM元素動起來

我們常常會通過修改元素的top,left,translate來其的位置發生改變。在下面的例子中,每點擊一次按鈕,對應的元素就會移動5px。大家可點擊查看。

點擊查看一個讓元素動起來的小例子

由于修改一個元素top/left值會引起頁面重繪,而translate不會,因此從性能優化上來判斷,我們會優先使用translate屬性。

2、如何獲取當前瀏覽器支持的transform兼容寫法

transform是css3的屬性,當我們使用它時就不得不面對兼容性的問題。不同版本瀏覽器的兼容寫法大致有如下幾種:

[’transform’, ’webkitTransform’, ’MozTransform’, ’msTransform’, ’OTransform’]

因此我們需要判斷當前瀏覽器環境支持的transform屬性是哪一種,方法如下:

// 獲取當前瀏覽器支持的transform兼容寫法function getTransform() { var transform = ’’, divStyle = document.createElement(’div’).style, // 可能涉及到的幾種兼容性寫法,通過循環找出瀏覽器識別的那一個 transformArr = [’transform’, ’webkitTransform’, ’MozTransform’, ’msTransform’, ’OTransform’], i = 0, len = transformArr.length; for(; i < len; i++) {if(transformArr[i] in divStyle) { // 找到之后立即返回,結束函數 return transform = transformArr[i];} } // 如果沒有找到,就直接返回空字符串 return transform;}

該方法用于獲取瀏覽器支持的transform屬性。如果返回的為空字符串,則表示當前瀏覽器并不支持transform,這個時候我們就需要使用left,top值來改變元素的位置。如果支持,就改變transform的值。

3、如何獲取元素的初始位置

我們首先需要獲取到目標元素的初始位置,因此這里我們需要一個專門用來獲取元素樣式的功能函數。

但是獲取元素樣式在IE瀏覽器與其他瀏覽器有一些不同,因此我們需要一個兼容性的寫法。

function getStyle(elem, property) { // ie通過currentStyle來獲取元素的樣式,其他瀏覽器通過getComputedStyle來獲取 return document.defaultView.getComputedStyle ? document.defaultView.getComputedStyle(elem, false)[property] : elem.currentStyle[property];}

有了這個方法之后,就可以開始動手寫獲取目標元素初始位置的方法了。

function getTargetPos(elem) { var pos = {x: 0, y: 0}; var transform = getTransform(); if(transform) {var transformValue = getStyle(elem, transform);if(transformValue == ’none’) { elem.style[transform] = ’translate(0, 0)’; return pos;} else { var temp = transformValue.match(/-?d+/g); return pos = {x: parseInt(temp[4].trim()),y: parseInt(temp[5].trim()) }} } else {if(getStyle(elem, ’position’) == ’static’) { elem.style.position = ’relative’; return pos;} else { var x = parseInt(getStyle(elem, ’left’) ? getStyle(elem, ’left’) : 0); var y = parseInt(getStyle(elem, ’top’) ? getStyle(elem, ’top’) : 0); return pos = {x: x,y: y }} }}

在拖拽過程中,我們需要不停的設置目標元素的新位置,這樣它才會移動起來,因此我們需要一個設置目標元素位置的方法。

// pos = { x: 200, y: 100 }function setTargetPos(elem, pos) { var transform = getTransform(); if(transform) {elem.style[transform] = ’translate(’+ pos.x +’px, ’+ pos.y +’px)’; } else {elem.style.left = pos.x + ’px’;elem.style.top = pos.y + ’px’; } return elem;}5、我們需要用到哪些事件?

在pc上的瀏覽器中,結合mousedown、mousemove、mouseup這三個事件可以幫助我們實現拖拽。

mousedown鼠標按下時觸發 mousemove鼠標按下后拖動時觸發 mouseup鼠標松開時觸發

而在移動端,分別與之對應的則是touchstart、touchmove、touchend。

當我們將元素綁定這些事件時,有一個事件對象將會作為參數傳遞給回調函數,通過事件對象,我們可以獲取到當前鼠標的精確位置,鼠標位置信息是實現拖拽的關鍵。

事件對象十分重要,其中包含了非常多的有用的信息,這里我就不擴展了,大家可以在函數中將事件對象打印出來查看其中的具體屬性,這個方法對于記不清事件對象重要屬性的童鞋非常有用。

6、拖拽的原理

當事件觸發時,我們可以通過事件對象獲取到鼠標的精切位置。這是實現拖拽的關鍵。當鼠標按下(mousedown觸發)時,我們需要記住鼠標的初始位置與目標元素的初始位置,我們的目標就是實現當鼠標移動時,目標元素也跟著移動,根據常理我們可以得出如下關系:

移動后的鼠標位置 - 鼠標初始位置 = 移動后的目標元素位置 - 目標元素的初始位置

如果鼠標位置的差值我們用dis來表示,那么目標元素的位置就等于:

移動后目標元素的位置 = dis + 目標元素的初始位置

通過事件對象,我們可以精確的知道鼠標的當前位置,因此當鼠標拖動(mousemove)時,我們可以不停的計算出鼠標移動的差值,以此來求出目標元素的當前位置。這個過程,就實現了拖拽。

而在鼠標松開(mouseup)結束拖拽時,我們需要處理一些收尾工作。詳情見代碼。

7、 我又來推薦思維導圖輔助寫代碼了

常常有新人朋友跑來問我,如果邏輯思維能力不強,能不能寫代碼做前端。我的答案是:能。因為借助思維導圖,可以很輕松的彌補邏輯的短板。而且比在自己頭腦中腦補邏輯更加清晰明了,不易出錯。

上面第六點我介紹了原理,因此如何做就顯得不是那么難了,而具體的步驟,則在下面的思維導圖中明確給出,我們只需要按照這個步驟來寫代碼即可,試試看,一定很輕松。

詳解JavaScript面向對象實戰之封裝拖拽對象

使用思維導圖清晰的表達出整個拖拽過程我們需要干的事情

8、代碼實現part1、準備工作

// 獲取目標元素對象var oElem = document.getElementById(’target’);// 聲明2個變量用來保存鼠標初始位置的x,y坐標var startX = 0;var startY = 0;// 聲明2個變量用來保存目標元素初始位置的x,y坐標var sourceX = 0;var sourceY = 0;part2、功能函數

因為之前已經貼過代碼,就不再重復

// 獲取當前瀏覽器支持的transform兼容寫法function getTransform() {}// 獲取元素屬性function getStyle(elem, property) {}// 獲取元素的初始位置function getTargetPos(elem) {}// 設置元素的初始位置function setTargetPos(elem, potions) {}part3、聲明三個事件的回調函數

這三個方法就是實現拖拽的核心所在,我將嚴格按照上面思維導圖中的步驟來完成我們的代碼。

// 綁定在mousedown上的回調,event為傳入的事件對象function start(event) { // 獲取鼠標初始位置 startX = event.pageX; startY = event.pageY; // 獲取元素初始位置 var pos = getTargetPos(oElem); sourceX = pos.x; sourceY = pos.y; // 綁定 document.addEventListener(’mousemove’, move, false); document.addEventListener(’mouseup’, end, false);}function move(event) { // 獲取鼠標當前位置 var currentX = event.pageX; var currentY = event.pageY; // 計算差值 var distanceX = currentX - startX; var distanceY = currentY - startY; // 計算并設置元素當前位置 setTargetPos(oElem, {x: (sourceX + distanceX).toFixed(),y: (sourceY + distanceY).toFixed() })}function end(event) { document.removeEventListener(’mousemove’, move); document.removeEventListener(’mouseup’, end); // do other things}

OK,一個簡單的拖拽,就這樣愉快的實現了。點擊下面的鏈接,可以在線查看該例子的demo。

使用原生js實現拖拽

9、封裝拖拽對象

我們來將上面實現的拖拽封裝為一個拖拽對象。我們的目標是,只要我們聲明一個拖拽實例,那么傳入的目標元素將自動具備可以被拖拽的功能。

在實際開發中,一個對象我們常常會單獨放在一個js文件中,這個js文件將單獨作為一個模塊,利用各種模塊的方式組織起來使用。當然這里沒有復雜的模塊交互,因為這個例子,我們只需要一個模塊即可。

為了避免變量污染,我們需要將模塊放置于一個函數自執行方式模擬的塊級作用域中。

(function() { ...})();

在普通的模塊組織中,我們只是單純的將許多js文件壓縮成為一個js文件,因此此處的第一個分號則是為了防止上一個模塊的結尾不用分號導致報錯。必不可少。當然在通過require或者ES6模塊等方式就不會出現這樣的情況。

我們知道,在封裝一個對象的時候,我們可以將屬性與方法放置于構造函數或者原型中,而在增加了自執行函數之后,我們又可以將屬性和方法防止與模塊的內部作用域。這是閉包的知識。

那么我們面臨的挑戰就在于,如何合理的處理屬性與方法的位置。

當然,每一個對象的情況都不一樣,不能一概而論,我們需要清晰的知道這三種位置的特性才能做出最適合的決定。

構造函數中: 屬性與方法為當前實例單獨擁有,只能被當前實例訪問,并且每聲明一個實例,其中的方法都會被重新創建一次。 原型中: 屬性與方法為所有實例共同擁有,可以被所有實例訪問,新聲明實例不會重復創建方法。 模塊作用域中:屬性和方法不能被任何實例訪問,但是能被內部方法訪問,新聲明的實例,不會重復創建相同的方法。

對于方法的判斷比較簡單。

因為在構造函數中的方法總會在聲明一個新的實例時被重復創建,因此我們聲明的方法都盡量避免出現在構造函數中。

而如果你的方法中需要用到構造函數中的變量,或者想要公開,那就需要放在原型中。

如果方法需要私有不被外界訪問,那么就放置在模塊作用域中。

對于屬性放置于什么位置有的時候很難做出正確的判斷,因此我很難給出一個準確的定義告訴你什么屬性一定要放在什么位置,這需要在實際開發中不斷的總結經驗。但是總的來說,仍然要結合這三個位置的特性來做出最合適的判斷。

如果屬性值只能被實例單獨擁有,比如person對象的name,只能屬于某一個person實例,又比如這里拖拽對象中,某一個元素的初始位置,也僅僅只是這個元素的當前位置,這個屬性,則適合放在構造函數中。

而如果一個屬性僅僅供內部方法訪問,這個屬性就適合放在模塊作用域中。

關于面向對象,上面的幾點思考我認為是這篇文章最值得認真思考的精華。如果在封裝時沒有思考清楚,很可能會遇到很多你意想不到的bug,所以建議大家結合自己的開發經驗,多多思考,總結出自己的觀點。

根據這些思考,大家可以自己嘗試封裝一下。然后與我的做一些對比,看看我們的想法有什么不同,在下面例子的注釋中,我將自己的想法表達出來。

點擊查看已經封裝好的demo

js 源碼

(function() { // 這是一個私有屬性,不需要被實例訪問 var transform = getTransform(); function Drag(selector) {// 放在構造函數中的屬性,都是屬于每一個實例單獨擁有this.elem = typeof selector == ’Object’ ? selector : document.getElementById(selector);this.startX = 0;this.startY = 0;this.sourceX = 0;this.sourceY = 0;this.init(); } // 原型 Drag.prototype = {constructor: Drag,init: function() { // 初始時需要做些什么事情 this.setDrag();},// 稍作改造,僅用于獲取當前元素的屬性,類似于getNamegetStyle: function(property) { return document.defaultView.getComputedStyle ? document.defaultView.getComputedStyle(this.elem, false)[property] : this.elem.currentStyle[property];},// 用來獲取當前元素的位置信息,注意與之前的不同之處getPosition: function() { var pos = {x: 0, y: 0}; if(transform) {var transformValue = this.getStyle(transform);if(transformValue == ’none’) { this.elem.style[transform] = ’translate(0, 0)’;} else { var temp = transformValue.match(/-?d+/g); pos = {x: parseInt(temp[4].trim()),y: parseInt(temp[5].trim()) }} } else {if(this.getStyle(’position’) == ’static’) { this.elem.style.position = ’relative’;} else { pos = {x: parseInt(this.getStyle(’left’) ? this.getStyle(’left’) : 0),y: parseInt(this.getStyle(’top’) ? this.getStyle(’top’) : 0) }} } return pos;},// 用來設置當前元素的位置setPostion: function(pos) { if(transform) {this.elem.style[transform] = ’translate(’+ pos.x +’px, ’+ pos.y +’px)’; } else {this.elem.style.left = pos.x + ’px’;this.elem.style.top = pos.y + ’px’; }},// 該方法用來綁定事件setDrag: function() { var self = this; this.elem.addEventListener(’mousedown’, start, false); function start(event) {self.startX = event.pageX;self.startY = event.pageY;var pos = self.getPosition();self.sourceX = pos.x;self.sourceY = pos.y;document.addEventListener(’mousemove’, move, false);document.addEventListener(’mouseup’, end, false); } function move(event) {var currentX = event.pageX;var currentY = event.pageY;var distanceX = currentX - self.startX;var distanceY = currentY - self.startY;self.setPostion({ x: (self.sourceX + distanceX).toFixed(), y: (self.sourceY + distanceY).toFixed()}) } function end(event) {document.removeEventListener(’mousemove’, move);document.removeEventListener(’mouseup’, end);// do other things }} } // 私有方法,僅僅用來獲取transform的兼容寫法 function getTransform() {var transform = ’’, divStyle = document.createElement(’div’).style, transformArr = [’transform’, ’webkitTransform’, ’MozTransform’, ’msTransform’, ’OTransform’], i = 0, len = transformArr.length;for(; i < len; i++) { if(transformArr[i] in divStyle) {return transform = transformArr[i]; }}return transform; } // 一種對外暴露的方式 window.Drag = Drag;})();// 使用:聲明2個拖拽實例new Drag(’target’);new Drag(’target2’);

這樣一個拖拽對象就封裝完畢了。

建議大家根據我提供的思維方式,多多嘗試封裝一些組件。比如封裝一個彈窗,封裝一個循環輪播等。練得多了,面向對象就不再是問題了。這種思維方式,在未來任何時候都是能夠用到的。

以上就是詳解JavaScript面向對象實戰之封裝拖拽對象的詳細內容,更多關于JS 面向對象 如何實現封裝拖拽對象的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 日韩伦理视频 | 国产视频一二三区 | 国产素人自拍 | 亚洲国产黄色片 | 婷婷色九月 | 国产又粗又猛又爽又黄的免费视频 | 里番acg☆里番本子全彩 | 蜜臀久久99精品久久久无需会员 | 中国色老太hd | 1000部羞羞视频在线看视频 | 激情综合视频 | 天天干天天干天天操 | 99mav| 被c到高潮疯狂喷水国产 | 中文字幕无码一区二区免费 | 婷婷激情丁香 | 亚洲 自拍 另类 欧美 综合 | 中文字幕日韩人妻在线视频 | 亚洲第一se情网站 | 野花社区在线观看视频 | 亚洲国产精品成人精品无码区在线 | 那里可以看毛片 | 少妇高潮喷水惨叫久久久久电影 | 精品人妻av区乱码 | 亚洲中文字幕乱码av波多ji | 中文无码精品一区二区三区 | 91中文字幕视频 | 永久免费看成人av的动态图 | 国产激情免费视频 | 青青草免费视频在线观 | 日韩欧美国产视频 | 97香蕉超级碰碰久久免费软件 | 午夜婷婷国产麻豆精品 | 国产亚洲综合av | 波多野结衣一区二区三区四区 | 日韩精品一区二区av在线 | 国产精品视频六区 | 亚洲欧美在线视频免费 | 亚洲人成在线观看 | 国产精品永久久久久久久久久 | 久久人人做 | 探花视频免费观看高清视频 | 日韩av午夜在线观看 | 亚洲综合无码无在线观看 | 国产一区视频在线免费观看 | 国产suv精品一区二人妻 | 91久久久久久久 | 国外亚洲成av人片在线观看 | 久久1区| 黄色三级网址 | 向日葵视频在线 | 亚洲人成网站免费播放 | 亚洲成在人线aⅴ免费毛片 欧美牲交a欧美牲交aⅴ免费真 | 日本最新中文字幕 | 国产又猛又黄又爽 | 欧美另类极品videosbest使用方法 | 免费人成xvideoscom| 69国产精品视频 | 成年人在线观看视频网站 | 国产成人av乱码在线观看 | chinese少妇国语对白 | 中文字幕免费高 | 精品蜜桃av | 97夜夜澡人人双人人人喊 | 一区二区三区四区蜜桃 | 久久少妇网 | 在线看一区 | 欧美日韩在线精品 | 无尺码精品产品网站 | 一级全黄少妇性色生活片毛片 | 成人精品免费在线观看 | 国产亚洲精品久久久久久打不开 | 久草黄色网 | 日韩欧美成人一区二区三区 | 调教性瘾双性高清冷美人 | 日欧视频| 欧美一区二区三区四区在线 | 91久久久久久亚洲精品禁果 | 国模一区二区三区白浆 | 爱情岛亚洲品质自拍极速福利网站 | 国产真实乱岳激情对白av | 本道久久综合无码中文字幕 | 天堂成人国产精品一区 | 国产午夜精品一区二区三区漫画 | av青青| 波多野结衣喷潮 | 美女一级片 | 亚洲日本aⅴ片在线观看香蕉 | 欧美永久视频 | 久久影院综合精品 | 色婷婷色丁香 | 大咪咪dvd| 最近中文字幕在线免费观看 | 欧美成人a∨高清免费观看 欧美成人aa | 亚洲精品一区二区三区不 | 久久精品国产免费观看 | 国产在线精品一区二区三区直播 | 男人的天堂欧美 | 亚洲精品午夜国产va久久成人 | 亚洲黄色在线观看视频 | 国产ts人妖调教重口男 | 青青热久免费精品视频在线播放 | 看全黄大色黄大片美女人 | 婷婷成人综合激情在线视频播放 | 青草青草视频2免费观看 | 国产在线看一区 | 超碰caoporen| 91免费版黄色 | 中文字幕日韩一区二区三区不卡 | www.夜夜操.com | 国产色产综合色产在线视频 | 午夜精品毛片 | 国产成人精品一区二三区在线观看 | 米奇影视第四色 | 亚洲欧美一级久久精品国产特黄 | 国产乱xxⅹxx国语对白 | 日产成品片a直接观看 | 日日夜夜天天干 | 中文在线亚洲 | 免费一区区三区四区 | 在线色av| 国产在线看黄 | 午夜在线影院 | 日本熟妇大屁股人妻 | 国产精品一区二区含羞草 | 男女做爰猛烈啪啪吃奶动床戏麻豆 | 91popny丨九色丨蝌蚪 | 亚洲1024| 国产美女视频一区二区三区 | 国产亚洲欧美精品永久 | 东热ca大乱合集 | 乱中年女人伦av | 久久艹网站 | 亚洲国产精华液网站w | 四虎院影亚洲永久 | 国产欧美日韩精品一区 | 黄色片网站免费观看 | 亚洲精品视频在线观看免费视频 | 在线免费观看av网 | 久久精品国产乱子伦 | 夜夜嗨av色一区二区不卡 | 九九精品在线播放 | 亚洲va中文字幕无码久久不卡 | 午夜寂寞影视在线观看 | 激情四虎 | 久久无码人妻热线精品 | 青草av久久免费一区 | 亚洲自拍中文 | 伊人无码精品久久一区二区 | 最近中文字幕2019视频1 | 国内外免费激情视频 | 日韩视频在线观看免费视频 | a级毛片蜜桃成熟时2免费观看 | 农村女人十八毛片a级毛片 农村人伦偷精品视频a人人澡 | 日本不卡视频一区 | 亚洲a在线观看 | 中国一级特黄毛片 | 无人在线观看的免费高清视频 | 久久精精品久久久久噜噜 | 黄色大片一区二区三区 | 日韩亚洲一区二区 | 一区二区三区国产 | 欧美一性一乱一交 | 古装一级淫片a免费播放口 寡妇av | 欧美三级小说 | 巨大荫蒂视频欧美另类大 | xxxx日本免费 | 特大黑人娇小亚洲女 | 67194熟妇人妻欧美日韩 | 欧美吻胸吃奶大尺度 | 国产盼盼私拍福利视频99 | 亚洲精品美女久久17c | 五月天中文字幕 | 99视频+国产日韩欧美 | 亚洲第一页夜 | 国产不卡av在线 | 天天久| 欧美囗交做爰视频 | 福利网站在线 | 亚洲午夜国产 | 影音先锋男人的天堂 | 成人tv888 | 国产精品1区| 久久国产精品99久久人人澡 | 国产69精品一区二区亚洲孕妇 | 色男人在线 | 日本500人裸体仓房视频 | 久久4| 懂色av一区二区三区久久久 | 蜜桔视频成人免费观看 | 黄色网免费 | 国产伦精品免编号公布 | 九九精品免费视频 | 亚洲欧美小视频 | 日韩在线视频精品 | 久久久久久蜜桃 | 国产欧美一区二区三区在线 | 麻豆影视在线观看 | 亚洲色欲久久久久综合网 | 黄色大片网 | 国产欧美日韩va另类在线播放 | 久久午夜夜伦鲁鲁一区二区 | 亚州av一区二区 | 九九热在线视频免费观看 | 国产免费丝袜调教视频 | 少妇激情av一区二区 | 欧美男人亚洲天堂 | 日韩综合网站 | 宇都宫紫苑在线播放 | 天堂√中文在线 | www超碰在线观看 | 日日噜噜夜夜狠狠久久无码区 | 中文字幕一区二区三区四区 | 精品一区二区三区无码免费直播 | 香蕉影音 | 欧美三级午夜理伦三级 | 国产亚洲欧美日韩精品一区二区三区 | 丁香花五月天 | 精品国产一区二区三区av片 | 96亚洲精品久久 | 色婷婷香蕉在线一区二区 | av久久悠悠天堂影音网址 | 隣の若妻さん波多野结衣 | 777在线视频| 狠狠躁夜夜躁人人爽蜜桃 | 国产男女无遮挡猛进猛出 | 国产中文字幕乱人伦在线观看 | 91大神小宝寻花在线观看 | 国产成人啪精品视频免费网 | 国产伦精品一区二区三区四区视频_ | 亚洲精品97久久中文字幕无码 | 688欧美人禽杂交狂配 | 欧美国产日韩久久 | 17婷婷久久www | 亚洲精品一区中文字幕乱码 | 色哟哟精品观看 | 色偷偷导航| 无码午夜福利视频一区 | 国产精品一区在线播放 | 久久久久久臀欲欧美日韩 | 国产精品99久久久久久久久久久久 | 熟人妇女无乱码中文字幕 | 亚洲人av在线影院 | 久久久久国产精品一区 | 国产好爽…又高潮了毛片 | 91成人免费网站 | 亚洲暴爽av天天爽日日碰 | 一级特级黄色片 | 九九影院理论片私人影院 | 免费黄色a | 91人人爽人人爽人人精88v | 婷婷天天 | 激情超碰在线 | 欧美激情精品久久久久久免费 | 国产又大又粗又长 | 久久综合色之久久综合 | 99久久亚洲精品无码毛片 | 男人的天堂日本 | 美女脱免费看网站女同 | 日本女人毛片 | 精品福利在线 | 亚洲玖玖爱 | 国产黄色91 | 亚洲国产成人久久一区二区三区 | 国产女人18毛片水真多1kt∧ | 国产美女一区二区三区 | 制服丝袜在线视频 | 亚洲www在线观看 | 精品人妻无码专区在线无广告视频 | 国产精品99蜜臀久久不卡二区 | av免费看片| 国产又粗又大又爽视频 | 神马久久春色 | 欧美成人精品欧美一级乱黄 | 射网站| 欧美成人在线视频 | 欧美另类高清 | 国产嗷嗷叫| 野花香社区在线视频观看播放 | 国产极品粉嫩福利姬萌白酱 | 欧美二区在线观看 | 国产特黄aaaaa毛片 | 成人午夜一区二区 | 娇小激情hdxxxx学生住处 | 成人免费黄 | 亚洲国产成人久久精品软件 | 成人久久久精品乱码一区二区三区 | 成人免费看吃奶视频网站 | 少妇又紧又色又爽又刺激视频 | 玖玖爱这里只有精品视频 | 国产精品免费看久久久无码 | 亚洲成人生活片 | 国产在线精品一区二区不卡麻豆 | 久久久一区二区三区四区 | 久久久五月 | 亚婷婷洲av久久蜜臀小说 | 久草青青草 | 亚洲美女视频网站 | 人妻无码久久精品人妻 | 福利免费观看 | sm在线看| 欧美成人一区二区三区 | 成人免费黄色网 | 久久久国产一区二区三区四区小说 | 性欧美17一18内谢 | a级毛片,黄,免费观看 m | 北条麻妃一区二区三区中文字幕 | 91精品国产乱码久久桃 | 桃色激情网 | 日韩欧美一级片 | 国产中年夫妇激情高潮 | 日本性xxxxx 日本性高潮视频 | 古装三级做爰在线观看 | 中文字幕被公侵犯的漂亮人妻 | 色婷婷六月天 | 一区二区片| 精品久久久一二三区播放播放播放视频 | 女人黄色片 | 亚洲五月花 | 中国一级黄色大片 | a√天堂中文 | 天堂成人网 | 亚洲天堂国产精品 | 成人午夜精品久久久久久久网站 | 日韩在线不卡免费视频一区 | 亚洲欧美视频二区 | aaa亚洲精品 | 2018天天拍拍天天爽视频 | 成人性生活免费看 | 精品国产午夜肉伦伦影院 | 国产卡一卡二 | 无码人妻精品一区二区三区久久久 | 99riav国产精品视频 | 久草免费av | 天天艹日日干 | www.男人天堂 | 成人在线观看a | 久久久久国产精品嫩草影院 | 亚洲人午夜色婷婷 | 巨人精品福利官方导航 | 青草青草久热精品视频国产4 | 成人动漫在线观看免费 | 欧美日皮视频 | 香蕉国产| 日本高潮视频 | 国产视频精选 | 中文字幕av无码一区二区三区 | 91精品国产91久久久久福利 | 91成人免费网站 | 亚洲色成人网站www永久 | 双性受惨叫扩张调教虐宫h 爽插 | 国产人妻精品区一区二区三区 | a级黄视频| 亚洲影音先锋 | 麻豆国产丝袜白领秘书在线观看 | 欧美三日本三级少妇三99r | 精品粉嫩超白一线天av | 久草青青视频 | 亚洲性视频| 日本免费一区二区三区高清视频 | 极品少妇在线观看 | 国产精品福利视频一区 | 波多野结衣乳巨码无在线观看 | 东北少妇不戴套对白第一次 | 无码人妻精品一区二 | 国语对白超精彩 | 91精品国产色综合久久不8 | 黑人粗大猛烈进出高潮视频 | 成人性生交免费看 | 亚洲精品无码不卡在线播he | 7799精品视频天天看 | 黄色成人在线免费观看 | aaa黄色| 亚洲色欲色欲大片www无码 | 91精品国产自产91精品 | 欧洲三级视频 | 国产痴汉av久久精品 | 国产成人久久av免费看 | 免费在线观看你懂的 | 24小时日本在线www免费的 | 森林影视官网在线观看 | 无码人妻少妇久久中文字幕 | a天堂在线观看视频 | 我们的2018在线观看免费高清 | 伊人国产视频 | 精品偷自拍另类在线观看 | 在线观看免费黄色小视频 | 亚洲在线日韩 | 亚洲国产成人久久精品软件 | 伊大人香蕉综合8在线视 | 大黄专集在线观看 | 夜夜夜夜操 | 三级黄色av | 中文在线观看免费网站 | 国产毛片久久久久久美女视频 | 久久99影院 | 亚洲一区二区精品视频 | 国产中老年妇女精品 | 国产一线天粉嫩馒头极品av | 美女主播精品视频一二三四 | 里番本子纯肉侵犯肉全彩无码 | 99av视频| 99国产精品99久久久久久 | 操操操综合网 | 人妻中出无码一区二区三区 | 国产91丝袜在线播放九色 | 成人交性视频免费看 | 一级片免费观看视频 | 日本福利在线观看 | 男女啪啪免费体验区 | av久久天堂三区 | 成人无码视频在线观看网址 | 亚洲欧美综合精品久久成人 | 少妇哺乳期在线喷奶 | 国产99久久久久久免费看农村 | 亚洲综合在线五月 | www.久久免费 | 老熟仑妇乱一区二区 | 91资源在线播放 | 久久久久女教师免费一区 | 少妇高潮太爽了在线观看 | 精品夜夜澡人妻无码av | 国产三级高清 | 性高潮久久久久久久 | 日本videos多次高潮 | 久久国产精久久精产国 | 91视频最新地址 | 中国女人裸体乱淫 | 国产精品久久免费视频 | 国产一区影院 | 绝顶高潮videos合集 | 国产欧美日韩在线 | 久久久视频在线 | 午夜欧美激情 | 四虎影视在线影院在线观看免费视频 | 欧洲精品免费一区二区三区 | 超碰97在线人人 | 19禁大尺度做爰无遮挡小说 | 亚洲精品一区二区三区中文字幕 | 欧美jizz欧美性大全 | 俺啪也| 日日日日日日bbbbbb | 国产精品a国产精品a手机版 | 亚洲乱码国产乱码精品天美传媒 | 伊人资源 | 学生粉嫩无套白浆第一次 | 91香草视频 | 激情图片在线视频 | 午夜视频在线观看一区 | 永久黄网站色视频免费直播 | 国产美女性生活 | 久久久久久国产精品 | 国产成人精品午夜2022 | 欧美精品久久 | 黄色网址在线视频 | 北条麻妃一区二区三区av高清 | 国产乱淫av片免费观看 | 日韩视频国产 | 天天操天天射天天爱 | 看全黄大黄大色大片美女 | 国产视频资源在线观看 | 亚洲天堂在线视频观看 | 久久精品日产第一区二区三区在哪里 | 久久99精品久久久久 | 中国大陆一级毛片 | 中文字幕在线观看视频地址二 | 精品国产一区二区三区久久 | 毛茸茸成熟亚洲人 | 草久网 | 永久免费看成品人影视 | 国产国产精品人在线观看 | 久久三级 | 一本色道久久综合亚洲二区三区 | 五月婷婷av| 无码人妻av一二区二区三区 | 青草青草久热国产精品 | 国产高清一级片 | 国产精品永久久久久 | 中文字幕午夜精品一区二区三区 | 国产一区二区三区四区三区 | www成人免费 | 变态另类先锋影音 | 亚洲aaaaaa特级| 91啦丨九色丨国产人 | 欧美激情综合五月色丁香 | 在线免费观看av的网站 | 国产黄色网页 | 性色欲网站人妻丰满中文久久不卡 | 亚洲精品3区| 精品久久久久久久国产性色av | 久青草影院在线观看国产 | 久久激情五月丁香伊人 | 又紧又大又爽精品一区二区 | www成人啪啪18软件 | 成人污污视频 | 桥本有菜免费av一区二区三区 | 日韩人妻精品一区二区三区视频 | 国产va免费精品高清在线观看 | 亚洲最大成人av | 我和房东少妇激情 | 亚洲激情中文字幕 | 免费福利视频在线观看 | 日韩黄色在线观看 | 亚洲爆乳无码一区二区三区 | 中文在线中文a | 精品久久久久久久人人人人传媒 | 国产片久久 | 久久久国产打桩机 | 无码中文av波多野吉衣迅雷下载 | 综合成人 | 黄色国产小视频 | 一本大道东京热无码一区 | 国产在线青青草 | 中文字幕免费 | 麻豆一区二区99久久久久 | 无套中出丰满人妻无码 | 一级片免费观看视频 | 穿情趣内衣c到高潮av片 | 日本欧美在线视频 | 国产免费视屏 | 久久人人爽人人爽人人片av高请 | 国产二区av | 青青国产在线视频 | 亚洲精品国产摄像头 | 无码人妻精品一区二区三区夜夜嗨 | 偷拍呻吟高潮91 | 国产日韩欧美二区 | 日本加勒比在线 | 日本大尺度吃奶呻吟视频 | 亚洲色偷拍区另类无码专区 | 蜜臀91丨九色丨蝌蚪中文 | 久久黄色影院 | 先锋影音男人 | 黑巨人与欧美精品一区 | 久久国产欧美日韩精品图片 | 日本一区二区三区四区在线观看 | 九色在线观看视频 | 丁香花在线观看免费观看图片 | 成人午夜一区 | 国产成人精品亚洲 | 在线看v片 | 欧美成人激情 | 日b视频免费观看 | √天堂资源在线中文最新版 | 老子午夜影院 | 操比视频网站 | 国产精品欧美激情 | 爱情岛论坛成人av | 精品色999| 国产二级av| 国产成人精品福利 | 日本肉体xxxx裸体784大胆 | 自拍偷拍中文字幕 | 国产cdts系列另类在线观看 | 叶子楣裸乳照无奶罩视频 | 午夜不卡在线观看 | 色综合中文综合网 | 手机在线观看av | 91蝌蚪91porny国语| www成人网com | 超碰在线综合 | 国产精品一区二区久久 | 亚洲欧美视频 | 亚洲天堂视频一区 | 粉嫩一区二区三区色综合 | 午夜精品久久久久久久99热 | 粉嫩av蜜桃av蜜臀av | 国产黄色美女视频 | 色91精品久久久久久久久 | 51视频精品全部免费 | 亚洲精品成人无码中文毛片 | 69174欧美丰满少妇猛烈 | 日韩av一二三四区 | 人人草人人做人人爱 | 国产精品丝袜一区二区 | 亚洲精品乱码久久久久久金桔影视 | 香蕉久久人人爽人人爽人人片av | 山村淫强伦寡妇 | 黑鬼大战白妞高潮喷白浆 | 成人羞羞视频播放网站 | 欧美成人一二三区 | zljzljzlj日本人免费 | 精品亚洲一区二区三区在线播放 | 国产丝袜一区视频在线观看 | 国产亚洲欧美日韩俺去了 | 精品国产一区二区三区久久狼5月 | 丰满人妻熟妇乱又伦精品视 | 精品国产一二三产品价格 | 国产又粗又猛又爽又黄91 | 久久精品国产一区二区三区 | 深夜视频在线播放 | 亚洲男女在线 | 日本熟妇人妻中出 | 北条麻妃一区二区三区av | av有码在线 | 久久久国产网站 | 色婷婷激情五月 | 国语做受对白xxxxx在线流氓 | 激情天堂网 | 丰满少妇久久久久久久 | 中文字幕人妻无码系列第三区 | 精品国产91洋老外米糕 | 亚洲狠| 成人羞羞国产免费游戏 | 特黄a级片 | 黄av资源 | 人成免费在线视频 | 青青青在线视频 | 亚洲在线精品视频 | 天海冀一二三区 | 国产精品无套粉嫩白浆在线 | 波多野结衣中文字幕久久 | 久久久久久亚洲国产精品 | 成人区人妻精品一区二区三区 | 26uuu亚洲国产欧美日韩 |