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

原生JS手寫絲滑流暢的元素拖拽效果

開(kāi)發(fā) 前端
我們需要知道鼠標(biāo)的三個(gè)事件,分別是 mousedown,mousemove,mouseup ,當(dāng)點(diǎn)擊按下的時(shí)候,克隆一個(gè)絕對(duì)定位的元素,并標(biāo)識(shí)下"拖拽中"的狀態(tài),接著在 mousemove 中就可以判斷應(yīng)該執(zhí)行的具體方法,從而讓元素隨著鼠標(biāo)移動(dòng)起來(lái)。

前言

提到元素拖拽,通常都會(huì)先想到用 HTML5 的拖拽放置 (Drag 和 Drop) 來(lái)實(shí)現(xiàn),它提供了一套完整的事件機(jī)制,看起來(lái)似乎是首選的解決方案,但實(shí)際卻不是那么美好,主要是它的樣式太過(guò)簡(jiǎn)陋,無(wú)法實(shí)現(xiàn)更高級(jí)的用戶體驗(yàn):

這是瀏覽器默認(rèn)的拖拽效果,點(diǎn)住拖拽任意圖片或文字都會(huì)產(chǎn)生。

筆者因?yàn)橹坝袀€(gè)小項(xiàng)目需要經(jīng)常參考稿定設(shè)計(jì),一直有留意其元素拖拽的效果(如下圖),所以接下來(lái)我將以這種效果為藍(lán)本,使用原生 JS 實(shí)現(xiàn)一個(gè)富有動(dòng)感的 自定義拖拽 效果,話不多說(shuō)直接開(kāi)摸。

實(shí)現(xiàn)原理

首先說(shuō)下思路,我們需要知道鼠標(biāo)的三個(gè)事件,分別是 mousedown,mousemove,mouseup ,當(dāng)點(diǎn)擊按下的時(shí)候,克隆一個(gè)絕對(duì)定位的元素,并標(biāo)識(shí)下"拖拽中"的狀態(tài),接著在 mousemove 中就可以判斷應(yīng)該執(zhí)行的具體方法,從而讓元素隨著鼠標(biāo)移動(dòng)起來(lái)。

在監(jiān)聽(tīng)事件的 event 對(duì)象中,有幾個(gè)參數(shù)是比較重要的:clientX,clientY 標(biāo)識(shí)的鼠標(biāo)當(dāng)前橫坐標(biāo)和縱坐標(biāo),offsetX 和 offsetY 表示相對(duì)偏移量,可以在 mousedown 鼠標(biāo)按下時(shí)記錄初始坐標(biāo),在 mouseup 鼠標(biāo)抬起時(shí)判斷是否在目標(biāo)區(qū)域中,如果是則用鼠標(biāo)獲取到的當(dāng)前的偏移量 - 初始坐標(biāo)得到元素實(shí)際在目標(biāo)區(qū)域中的位置。

為了閱讀體驗(yàn),以下所有代碼均有部分省略,文末可查看完整源碼地址,代碼量并不多。

基礎(chǔ)界面

先簡(jiǎn)單實(shí)現(xiàn)一個(gè)兩欄布局界面,并應(yīng)用上一些 CSS 效果:

<div id="app">
<div class="slide">
<div id="list">
<img class="item" src="......." />
<img .........
</div>
</div>
<div class="content"></div>
</div>
#app {
width: 100vw;
height: 100vh;
display: flex;
}
.active {
cursor: grabbing;
}

.slide {
width: 260px;
height: 100%;
overflow: scroll;
border-right: 1px solid rgba(0,0,0,.15);
#list {
user-select: none;
.item {
background: rgba(0,0,0,.15);
width: 120px;
display: inline-block;
break-inside: avoid;
margin-bottom: 4px;
}
.item:hover {
cursor: grab;
filter: brightness(90%);
}
.item:active {
cursor: grabbing;
}
}
.grid {
column-count: 2;
column-gap: 0px;
}
}
.slide::-webkit-scrollbar {
display: none; /* Chrome Safari */
}

#content {
position: relative;
flex: 1;
height: 100%;
margin-left: 45px;
background: rgba(0,0,0,.07);
.item {
position: absolute;
transform-origin: top left;
}
}

利用濾鏡 filter: brightness(90%); 調(diào)節(jié)明亮度可以快速實(shí)現(xiàn)一個(gè)鼠標(biāo)覆蓋的動(dòng)態(tài)效果,無(wú)需額外制作遮罩:

使用偽類激活 cursor 的 grab 和 grabbing 可以設(shè)置抓取動(dòng)作的圖標(biāo):

實(shí)現(xiàn)元素抓取

利用事件委托機(jī)制為選擇列表添加 mousedown 事件監(jiān)聽(tīng),實(shí)現(xiàn)抓取的原理是在鼠標(biāo)按下時(shí)克隆按下的元素,并把克隆出來(lái)的元素設(shè)置成絕對(duì)定位,讓它"浮"起來(lái):

let dragging = false
let cloneEl = null // 克隆元素
let initial = {} // 初始化數(shù)據(jù)記錄
......
// 選中了元素
cloneEl = e.target.cloneNode(true) // 克隆元素
cloneEl.classList.add('flutter') // 使其浮動(dòng)
e.target.parentElement.appendChild(cloneEl) // 加入到列表中
dragging = true // 標(biāo)記拖動(dòng)開(kāi)始

// TODO:
........
.flutter {
position: absolute;
z-index: 9999;
pointer-events: none;
}

將鼠標(biāo)的坐標(biāo)設(shè)置為克隆元素的絕對(duì)定位值(left、top),就會(huì)像下圖所示這樣,此時(shí)減去 offset 偏移量,就能讓克隆元素覆蓋在本體上面。

初始化的值需要記錄起來(lái)方便后續(xù)計(jì)算,同時(shí)我們用 dragging 變量標(biāo)記了狀態(tài)(拖動(dòng)中),接下來(lái)配合移動(dòng)鼠標(biāo)的監(jiān)聽(tīng)事件就能將元素“抓”起來(lái)了:

// 鼠標(biāo)移動(dòng)
window.addEventListener("mousemove", (e) => {
if (dragging && cloneEl) {
// TODO:
// x 軸(left)計(jì)算方法:e.clientX - initial.offsetX
// y 軸(top)計(jì)算方法:e.clientY - initial.offsetY
}
})

上面只是實(shí)現(xiàn)了元素的拖動(dòng),但是"克隆"的效果實(shí)在太明顯了,為了讓元素看起來(lái)更像是拖出來(lái)的而不是復(fù)制出來(lái)的,我們還要讓本體隱藏,同時(shí)DOM結(jié)構(gòu)不能丟失,這時(shí)只需在按下拖動(dòng)時(shí)給本體元素設(shè)置個(gè) opacity: 0,結(jié)束時(shí)再改回透明度1就能搞定。

雖然到這功能就算實(shí)現(xiàn)了,但實(shí)際效果還是有點(diǎn)僵硬,參考稿定設(shè)計(jì)中的元素放開(kāi)時(shí)會(huì)固定回到一個(gè)位置,然后再收回去,這個(gè)過(guò)渡又有點(diǎn)鬼畜,不夠流暢。其實(shí)只需讓元素回退過(guò)程有一個(gè)自然地動(dòng)畫(huà)就行,transition 就能實(shí)現(xiàn):

.is_return {
transition: all 0.3s;
}
// 鼠標(biāo)抬起
window.addEventListener("mouseup", (e) => {
dragging = false
if (cloneEl) {
cloneEl.classList.add('is_return') // 加上過(guò)渡動(dòng)畫(huà)
changeStyle(......) // 設(shè)置回元素的初始位置
setTimeout(() {
cloneEl.remove() // 移除元素
}, 300)
}
})

最終我在動(dòng)作結(jié)束時(shí)給克隆元素添加了過(guò)渡屬性,然后直接設(shè)置回初始坐標(biāo)讓克隆元素回到它的出生地點(diǎn),用定時(shí)器在過(guò)渡動(dòng)畫(huà)持續(xù)的相同時(shí)間后移除克隆元素,這樣就有了一個(gè)平滑穩(wěn)定的回退動(dòng)畫(huà)。

性能優(yōu)化

由于在改變?cè)貭顟B(tài)的過(guò)程中需要頻繁進(jìn)行多個(gè) CSS 操作,為降低回流重繪的成本,最好將多個(gè)操作合并起來(lái)處理,這里利用了 cssText 來(lái)實(shí)現(xiàn):

// 改變漂浮元素:x、y、縮放倍率
function moveFlutter(x, y, d = 0){
const scale = d ? initial.width + d < initial.fakeSize ? `transform: scale(${(initial.width + d) / initial.width})` : null : null
const options = [`left: ${x}px`, `top: ${y}px`]
scale && options.push(scale)
// 將CSS處理成數(shù)組,然后丟進(jìn)DOM操作方法中一次執(zhí)行
changeStyle(options)
}
// 合并多個(gè)操作
function changeStyle(arr){
const original = cloneEl.style.cssText.split(';')
original.pop()
cloneEl.style.cssText = original.concat(arr).join(';') + ';'
}

實(shí)現(xiàn)拖拽放大

放大我們可以使用 transform: scale 來(lái)實(shí)現(xiàn),只需要將拖動(dòng)位置之間的距離當(dāng)做變化系數(shù)(假設(shè)為d),那么scale變化數(shù)值即為(元素寬度 + d)/元素寬度,而放大的最終倍數(shù)必定為 圖片實(shí)際寬度/元素的寬度,只要判斷不超過(guò)這個(gè)邊界就可以。(這個(gè)圖片實(shí)際寬高在真實(shí)業(yè)務(wù)場(chǎng)景中建議在上傳資源時(shí)就記錄在數(shù)據(jù)庫(kù),這里我是模擬的隨機(jī)一個(gè)原圖尺寸)。

兩點(diǎn)間距離計(jì)算公式為:

代碼實(shí)現(xiàn):

// 計(jì)算兩點(diǎn)之間距離
function distance({ clientX, clientY }){
const { clientX: x, clientY: y } = initial // 獲取初始的坐標(biāo)
const b = clientX - x;
const a = clientY - y;
return Math.sqrt(Math.pow(b, 2) + Math.pow(a, 2))
}

window.addEventListener("mousemove", (e) => {
if (dragging && cloneEl) {
const d = distance(e) // 計(jì)算距離
moveFlutter(e.clientX - initial.offsetX, e.clientY - initial.offsetY, d)
}
})
function moveFlutter(x, y, d = 0){
let scale = ''
// 如果距離大于0,且寬度+距離小于實(shí)際寬度
if( d && initial.width + d <= initial.fakeSize ) {
scale = `transform: scale(${(initial.width + d) / initial.width})`
}
// TODO ... changeStyle ...
}

效果演示:

注意元素都要設(shè)置 transform-origin: top left; 改變縮放原點(diǎn)到左上角,否則默認(rèn)(中心為原點(diǎn))的轉(zhuǎn)換會(huì)發(fā)生比較明顯的偏移。

實(shí)現(xiàn)放置

其實(shí)拖拽放置有點(diǎn)像是"復(fù)制"與"粘貼",前面我們實(shí)現(xiàn)了復(fù)制,放置主要就是將元素粘貼到畫(huà)布當(dāng)中,流程步驟如下:

  • 如果鼠標(biāo)在目標(biāo)區(qū)域,拷貝元素到畫(huà)布中,如果不在畫(huà)布中,執(zhí)行倒退動(dòng)畫(huà)
  • 刪除元素
// 完成處理
function done(x, y) {
if (!cloneEl) { return }
const newEl = cloneEl.cloneNode(true)
newEl.classList.remove('flutter')
newEl.src = cloneEl.getAttribute('raw') // 設(shè)置原圖地址
newEl.style.cssText = `left: ${x - initial.offsetX}px; top: ${y - initial.offsetY}px;`
document.getElementById('content').appendChild(newEl)
// TODO:
}

判斷是否在畫(huà)布內(nèi)抬起很簡(jiǎn)單,往畫(huà)布上綁定mouseup監(jiān)聽(tīng)事件即可,克隆的新元素必須刪除無(wú)用的屬性和class,此時(shí)設(shè)置元素的left、top即可將元素放置進(jìn)畫(huà)布中,關(guān)鍵點(diǎn)在于畫(huà)布內(nèi)的target有可能是錯(cuò)的,因?yàn)槿绻髽?biāo)抬起的區(qū)域已經(jīng)放置了元素,那么相對(duì)偏移量就得我們自己計(jì)算了,使用getBoundingClientRect方法獲取畫(huà)布本身相對(duì)于視窗的偏移,鼠標(biāo)坐標(biāo)減去畫(huà)布本身的偏移就是元素在畫(huà)布中的位置了。

document.getElementById('content').addEventListener("mouseup", (e) => {
if (e.target.id !== 'content') {
const lostX = e.x - document.getElementById('content').getBoundingClientRect().left
const lostY = e.y - document.getElementById('content').getBoundingClientRect().top
done(lostX, lostY)
} else { done(e.offsetX, e.offsetY) }
})

只貼了部分關(guān)鍵代碼,完整代碼文末查看。

邊界判斷

如果不對(duì)邊界情況進(jìn)行處理可能會(huì)導(dǎo)致拖動(dòng)時(shí)發(fā)生意外的中斷,無(wú)法正確回收克隆元素。

// 鼠標(biāo)離開(kāi)了視窗
document.addEventListener("mouseleave", (e) {
end()
})
// 用戶可能離開(kāi)了瀏覽器
window.onblur = () {
end()
}

體驗(yàn)優(yōu)化

參考稿定設(shè)計(jì)中元素拖拽是直接賦值原圖的,原圖大小通常無(wú)法控制,免不了需要加載時(shí)間,造成卡頓空白的問(wèn)題,在網(wǎng)絡(luò)不夠快時(shí)體驗(yàn)尤其尷尬:

我的優(yōu)化思路是利用瀏覽器加載過(guò)同一張圖片就會(huì)優(yōu)先讀緩存的機(jī)制,先用一個(gè)Image加載原圖,等其加載完畢再把拖拽元素的src改成原圖,這樣瀏覽器會(huì)"自動(dòng)"幫我們優(yōu)化這個(gè)過(guò)程,只需要注意一點(diǎn),由于這是個(gè)異步任務(wù),所以一定要做好對(duì)應(yīng)標(biāo)記,不然手速快的時(shí)候控制不好觸發(fā)順序。

function simulate(url, flag) {
cloneEl.setAttribute('raw', url)
const image = new Image()
image.src = url
image.onload = function () {
// 異步任務(wù),克隆節(jié)點(diǎn)可能已不存在,flag標(biāo)記是否拖動(dòng)的還是當(dāng)前目標(biāo)
cloneEl && initial.flag === flag && (cloneEl.src = url)
}
}

效果演示,故意加大了圖片的分辨率差異:

以上就是文章的全部?jī)?nèi)容,感謝看到這里,希望對(duì)你有所幫助或啟發(fā)!創(chuàng)作不易,如果覺(jué)得文章寫得不錯(cuò),可以點(diǎn)贊收藏支持一下,也歡迎關(guān)注,我會(huì)更新更多實(shí)用的前端知識(shí)與技巧,我是茶無(wú)味的一天,期待與你共同成長(zhǎng)~

相關(guān)鏈接

[1] 完整代碼地址: https://juejin.cn/post/7145447742515445791/#heading-9

?[2] 關(guān)于作者: https://book.palxp.com

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2023-09-07 07:35:59

JS操作網(wǎng)頁(yè)

2022-04-27 16:24:59

iOS蘋果升級(jí)

2020-09-07 07:00:09

AI 數(shù)據(jù)人工智能

2024-05-21 10:28:51

API設(shè)計(jì)架構(gòu)

2023-03-03 17:00:00

部署Linux內(nèi)核

2012-10-10 10:22:57

JavaScriptJSjQuery

2022-08-16 08:37:09

視頻插幀深度學(xué)習(xí)

2020-07-22 15:15:28

Vue前端代碼

2025-07-03 09:56:49

2025-03-03 12:00:00

JavaScriptfor 循環(huán)語(yǔ)言

2022-12-19 14:53:07

模型訓(xùn)練

2023-07-18 07:56:20

2021-05-10 20:58:11

數(shù)據(jù)庫(kù)擴(kuò)容用戶

2022-07-15 07:58:18

SteampipeCLI 工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美老妇交乱视频| 欧美日韩成人一区| 农村寡妇一区二区三区| 草莓视频18免费观看| 日韩欧美中字| 日韩欧美国产系列| 日韩在线视频在线观看| 在线激情网站| 成人免费观看男女羞羞视频| 日产精品久久久一区二区福利| 999久久久国产| 一本一道久久a久久| 一本大道久久a久久精品综合| 中文字幕在线中文字幕日亚韩一区 | 姝姝窝人体www聚色窝| 日韩和欧美的一区| 欧美另类极品videosbest最新版本 | 91免费看片在线观看| 国产精品一久久香蕉国产线看观看| 免费看特级毛片| 日韩三级视频| 日韩欧美在线不卡| 日本一二三区视频在线| 免费a视频在线观看| 久久机这里只有精品| 51精品国产黑色丝袜高跟鞋| 日本在线一级片| 国产精品一在线观看| 亚洲国产精品电影在线观看| 在线观看中文av| 欧美va在线观看| 天天综合色天天| 女人床在线观看| 免费网站看v片在线a| 久久久99精品久久| 国产一区免费| 亚洲精品国产精品国| 极品销魂美女一区二区三区| 国产精品爱啪在线线免费观看| 国产一级一片免费播放| 在线电影一区二区| 在线观看久久av| 亚洲av片不卡无码久久| 极品国产人妖chinesets亚洲人妖 激情亚洲另类图片区小说区 | 中文字幕在线观看日韩| 国产交换配乱淫视频免费| 久久久免费毛片| 日韩美女视频在线| 日韩精品在线播放视频| 日韩欧乱色一区二区三区在线| 色欧美88888久久久久久影院| 好吊妞无缓冲视频观看| 黑人极品ⅴideos精品欧美棵| 亚洲三级在线看| 在线看视频不卡| 久草中文在线| 亚洲欧美一区二区三区国产精品 | 视频精品一区二区| 国产91|九色| 久久久久久久久久影院| 国产精品社区| 日本精品久久久久久久| 91久久国产视频| 久久成人亚洲| 国产91精品在线播放| 免费看污视频的网站| 天堂久久一区二区三区| 国产精品国产三级国产专播精品人| 台湾佬中文在线| 日韩av网站在线观看| 国产精品观看在线亚洲人成网| 中文字幕精品无码亚| 久久精品国产99久久6| 成人黄色av网站| av 一区二区三区| 成人丝袜视频网| 精品一区久久| 高清在线观看av| **性色生活片久久毛片| 国产在线无码精品| h片在线观看下载| 日韩欧美在线视频| 黄色永久免费网站| 国产精品亚洲一区二区在线观看| 日韩欧美美女一区二区三区| 亚洲久久久久久| 精品理论电影在线| 久久成年人视频| 国产精品suv一区二区| 欧美中文字幕| 国产欧美一区二区三区视频| 99精品国产99久久久久久97| 国产不卡一区视频| 蜜桃日韩视频| 国产精品刘玥久久一区| 午夜精品久久久| 国产精品igao| 大香伊人久久精品一区二区| 精品亚洲一区二区| 91n在线视频| 在线一区欧美| 国产在线观看精品| 姝姝窝人体www聚色窝| 国产精品久久久久影院| 日韩精品在线视频免费观看| 91在线亚洲| 精品粉嫩aⅴ一区二区三区四区 | 欧美日韩精品在线一区| 欧美日韩国产成人高清视频| 无码人妻久久一区二区三区| 国产成人亚洲综合色影视| 欧美另类一区| 国产精品国精产品一二| 欧美日韩一级黄| 精品少妇一区二区三区免费观| 国产精品久久久久久麻豆一区软件 | 日本vs亚洲vs韩国一区三区| 国产精品免费一区二区三区观看| 国产爆初菊在线观看免费视频网站| 一区二区视频免费在线观看| www.涩涩涩| 精品三级在线观看视频| 久久亚洲精品国产亚洲老地址| 亚洲图片在线视频| 成人教育av在线| 国产人妻互换一区二区| 国产69精品久久| 亚洲男人av电影| 日本一区二区网站| 国产盗摄精品一区二区三区在线| 色综合视频二区偷拍在线| 悠悠资源网亚洲青| 亚洲成av人影院在线观看| 国产成人久久久久| 美女视频黄a大片欧美| 欧美一级片免费观看| 成人黄色动漫| 亚洲国产一区自拍| 国产污片在线观看| 国产高清精品在线| 亚洲黄色网址在线观看| 亚洲青青久久| 日韩最新av在线| 在线免费av片| 中文字幕五月欧美| 色噜噜狠狠一区二区三区狼国成人| 精品国产一区二区三区av片| 热久久99这里有精品| 三级视频网站在线| 天天综合网 天天综合色| 这里只有精品在线观看视频 | 色老板在线视频一区二区| 欧美日韩福利在线观看| 国产高清视频免费观看| 亚洲精品国产成人久久av盗摄| 亚洲国产午夜精品| 亚洲精品888| 3d动漫啪啪精品一区二区免费 | 人成免费电影一二三区在线观看| 天天操天天干天天综合网| 亚洲国产精品自拍视频| 亚洲资源av| 日韩av不卡在线播放| 黄色成人在线观看网站| 日韩亚洲欧美中文高清在线| 国产精品热久久| 亚洲女爱视频在线| av漫画在线观看| 99在线精品免费视频九九视| 女同一区二区| 欧美在线一级| 色综合男人天堂| 亚洲av成人无码网天堂| 91福利在线导航| 强制高潮抽搐sm调教高h| 国产美女一区二区三区| 人妻av无码专区| 婷婷成人在线| 国产精品视频白浆免费视频| 老司机精品影院| 亚洲第一区中文99精品| 五月天婷婷导航| 成人欧美一区二区三区| 在线中文字日产幕| 性xx色xx综合久久久xx| 亚洲看片网站| 成人av影音| 日本中文字幕久久看| 好吊日视频在线观看| 欧美va亚洲va| 中文字幕av网站| 亚洲午夜免费电影| 美女爆乳18禁www久久久久久| 久久99久久精品| 午夜免费福利小电影| 日韩精品免费| 精品视频一区二区| 久久婷婷五月综合色丁香| 久久成年人视频| 成全电影播放在线观看国语| 日韩欧美一区二区不卡| 天天天天天天天干| 亚洲国产毛片aaaaa无费看| 国产伦理片在线观看| 国产成人精品免费视频网站| 免费观看成人网| 狠狠色狠狠色综合日日tαg| 视频一区二区在线观看| 国产精品久久久久av蜜臀| 国产精品在线看| 黄色激情在线播放| 久久av在线播放| 国产在线观看网站| 亚洲第一精品福利| 国产精品毛片一区视频播| 欧美视频中文字幕在线| 成年人av电影| 国产精品五月天| 一区二区三区免费在线观看视频| 国产激情一区二区三区桃花岛亚洲| 色一情一乱一伦一区二区三区日本| 国产主播精品| 亚洲欧美一二三| 色天天综合网| 欧洲精品一区色| 成人精品毛片| 成人免费在线一区二区三区| 亚洲男人在线| 国产精品网站大全| 国产v综合v| 欧美一区深夜视频| 97在线视频免费观看完整版| 九九热这里只有在线精品视| 精品欧美色视频网站在线观看| 国产午夜精品全部视频在线播放| 午夜国产在线观看| 亚洲国产成人精品电影| 精品区在线观看| 91精品国产麻豆国产自产在线| 最新国产中文字幕| 日本精品视频一区二区三区| 在线精品免费视| 欧美日韩另类在线| 天天综合网入口| 欧美网站在线观看| 特级毛片www| 日韩欧美中文免费| 亚洲黄网在线观看| 色域天天综合网| www.五月婷婷.com| 在线精品视频小说1| 精品一区二区无码| 91久久免费观看| a片在线免费观看| 欧美日韩精品专区| 国产精品女同一区二区| 91精品黄色片免费大全| jizz国产视频| 精品日韩在线观看| 欧美天堂在线视频| 亚洲国产精品系列| 美女做暖暖视频免费在线观看全部网址91| 精品视频在线观看日韩| 欧洲一级在线观看| 永久免费精品影视网站| 91啦中文在线| 久久不射电影网| 538视频在线| 3344国产精品免费看| 小明成人免费视频一区| 91精品国产综合久久久久久蜜臀| 91精品福利观看| 粉嫩精品一区二区三区在线观看 | 色豆豆成人网| 91久久久久久久一区二区| 亚洲精品福利| 欧美日韩亚洲一区二区三区在线观看| 日本一本不卡| 久久www视频| 午夜一区在线| 日本一区二区三区在线免费观看| 成av人片一区二区| 波多野结衣av在线观看| 亚洲视频综合在线| 国产精品999久久久| 在线观看国产91| 精品久久久无码中文字幕| 精品中文字幕久久久久久| 91.xxx.高清在线| 欧美激情精品久久久久久蜜臀| 成人一区福利| 91精品国产综合久久久久久丝袜 | 成人18视频在线观看| 99re在线观看视频| 久久不见久久见免费视频7| 亚洲永久一区二区三区在线| 在线成人国产| 91香蕉视频导航| 成人黄页毛片网站| 亚洲色图27p| 午夜国产不卡在线观看视频| 亚洲一区二区激情| 亚洲精品成人免费| sm国产在线调教视频| 奇门遁甲1982国语版免费观看高清| 羞羞视频在线观看一区二区| 久精品国产欧美| 综合五月婷婷| 香蕉视频禁止18| 91视频精品在这里| 国精品无码一区二区三区| 欧洲亚洲国产日韩| 天堂中文在线官网| 欧美www在线| 国产精品xxx| 久久精品日产第一区二区三区精品版| 一区二区三区午夜探花| 日韩精品一区二区三区不卡| 成人免费视频视频在线观看免费| 国产一级淫片久久久片a级| 精品久久久久久国产91| 精品女同一区二区三区| 日韩中文字幕免费视频| 大胆人体一区| 精品国产乱码久久久久软件| 中文字幕一区二区av| 色乱码一区二区三区在线| 久久影院视频免费| 日韩精品一卡二卡| 日韩免费电影一区| 69xxx在线| 国产日韩在线看| 久久国产亚洲| 亚洲天堂网一区| 国产精品网站在线观看| 亚洲va在线观看| 日韩的一区二区| 黄色在线网站噜噜噜| 国产精品一码二码三码在线| 亚洲天堂偷拍| 伊人av在线播放| 一区二区欧美在线观看| 国产男男gay体育生网站| 日韩在线不卡视频| 久久久久久久性潮| 在线视频不卡一区二区三区| 蜜臀久久99精品久久久久宅男 | 成人直播大秀| 激情 小说 亚洲 图片: 伦| 国产夜色精品一区二区av| 狠狠人妻久久久久久综合| 亚洲精品中文字| 成人爽a毛片免费啪啪| 欧美连裤袜在线视频| 日韩精品久久久久久| 天天干天天舔天天操| 欧美日韩一区二区三区不卡| 男人和女人做事情在线视频网站免费观看| 国产精品视频区1| 91精品啪在线观看国产18| 四虎国产精品永久免费观看视频| 伊人夜夜躁av伊人久久| 亚洲黄色a级片| 欧美一二三视频| 经典一区二区| 亚洲午夜精品一区| 樱花影视一区二区| 色一情一乱一乱一区91av| 欧美在线精品免播放器视频| 欧美亚洲在线日韩| 欧美视频亚洲图片| 亚洲一区二区三区中文字幕| 天堂av在线播放| 国产精品日韩久久久久| 91精品久久久久久久久久不卡| 天天躁日日躁狠狠躁av| 精品久久久久久久久国产字幕| 国产精品四虎| 91在线无精精品一区二区| 亚洲国产美女| 99精品全国免费观看| 91麻豆精品国产无毒不卡在线观看| 1024在线播放| 精品中文字幕一区| 日本伊人色综合网| 九九九免费视频| 国产亚洲激情视频在线| 精品久久亚洲| 动漫av网站免费观看| 一色桃子久久精品亚洲| 肥臀熟女一区二区三区| 国产精品av电影| 亚洲特色特黄| 蜜桃av乱码一区二区三区| 日韩欧美电影在线| 精品视频在线一区二区在线| 成人国产在线看| 中文字幕欧美激情一区| 蜜桃av中文字幕| 成人看片人aa|