精品欧美一区二区三区在线观看 _久久久久国色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)

欧美亚洲专区| 国产精品videossex| 国产精品久久久一区麻豆最新章节| 国产精品爽爽爽| 免费中文字幕在线观看| 日本在线中文字幕一区| 欧美视频一区二区| 日本男女交配视频| 国产在线观看免费| 国产精品18久久久久久久久 | 91精品国产综合久久久久久漫画 | 亚洲风情在线资源| 国产精品伦理一区二区| 国产精品一区二区免费| 伊人久久国产精品| 一本色道久久精品| 免费av在线一区| 色噜噜噜噜噜噜| 成人在线视频你懂的| 欧美三级视频在线| 国产亚洲黄色片| 亚洲成人三级| 久久久青草青青国产亚洲免观| 91麻豆桃色免费看| 国产精品传媒在线观看| 99国产精品| 欧美精品一区二区免费| 国产白丝一区二区三区| 一区二区三区韩国免费中文网站| 欧美一区中文字幕| 一区二区三区韩国| 欧美性xxx| 精品久久久国产| 日b视频免费观看| 午夜在线视频| 中文字幕av一区二区三区免费看| 欧美12av| 日本美女一级视频| 国产麻豆成人传媒免费观看| 国产精品揄拍500视频| 精品免费囯产一区二区三区| 亚洲九九精品| 1769国产精品| 国产特黄大片aaaa毛片| 亚洲无毛电影| 欧美激情视频网站| 永久久久久久久| 一区二区三区四区电影| 久久精品国产欧美激情| 三级影片在线观看| 97视频热人人精品免费| 日韩亚洲第一页| 91狠狠综合久久久| 国产精品久久久久久久久久10秀| 中文字幕久热精品在线视频| 精品无码在线观看| 日韩欧美精品| 久久九九亚洲综合| 国产1区2区3区4区| 精品999成人| 88国产精品欧美一区二区三区| 日本少妇毛茸茸高潮| 最新成人av网站| 9.1国产丝袜在线观看| 国产无遮挡呻吟娇喘视频| 国产美女一区| 国产精品高潮在线| 亚洲手机在线观看| 国产一区二区美女| 国产69精品久久久久9999apgf| 好吊色一区二区| caoporen国产精品视频| 久久精品一二三区| a视频网址在线观看| 亚洲色图在线视频| 欧美一级免费播放| 欧美xxx视频| 制服.丝袜.亚洲.中文.综合| 中文字幕永久免费| 天堂一区二区三区四区| 国产亚洲欧洲高清一区| 殴美一级黄色片| 国精品一区二区三区| 欧美专区中文字幕| 国产偷人爽久久久久久老妇app| 久久福利资源站| 国产精品免费一区二区三区在线观看| 无码国产精品96久久久久| 26uuu成人网一区二区三区| 天堂va久久久噜噜噜久久va| 中文字幕有码在线观看| 色综合久久中文综合久久97| 在线观看高清免费视频| 日韩在线成人| 在线观看国产成人av片| 久草网视频在线观看| 久久国产66| 91精品久久久久久久久久久久久久| 国产高清在线免费| 91蜜桃婷婷狠狠久久综合9色| 色婷婷精品国产一区二区三区| 宅男网站在线免费观看| 91精品1区2区| 91成人在线观看喷潮蘑菇| 国产精品片aa在线观看| 欧美福利视频网站| 中文字幕在线网站| 99久久99久久精品免费观看| 在线码字幕一区| 成人性生交大片免费观看网站| 91.麻豆视频| 亚洲av无码国产精品麻豆天美| 欧美久久视频| 成人www视频在线观看| 亚洲人妻一区二区三区| 亚洲卡通动漫在线| 韩国中文字幕av| 狼人精品一区二区三区在线 | 激情五月激情综合网| 精品毛片久久久久久| 免费黄色在线看| 色视频欧美一区二区三区| 性活交片大全免费看| 亚洲国产精品久久久久蝴蝶传媒| 日韩av免费在线观看| 欧美一级特黄aaaaaa| 亚洲欧美色一区| 天天干天天玩天天操| 在线日韩一区| 91精品国产91久久久久久最新| a天堂中文在线观看| 中文字幕在线不卡一区二区三区| 大肉大捧一进一出好爽动态图| jazzjazz国产精品久久| 欧美另类交人妖| 国产精品一区二区av白丝下载| 亚洲国产精品黑人久久久| 国产免费黄视频| 久久久久久毛片免费看 | 欧美日韩一级黄色片| 国产精品一区二区黑丝| 一个色的综合| 日韩黄色在线| 中文字幕日韩电影| 超碰在线观看91| 国产亚洲一区二区在线观看| aa在线免费观看| 亚洲都市激情| 日本乱人伦a精品| 久久99久久| 日本高清成人免费播放| 91视频在线网站| 久久人人精品| 日韩三级电影免费观看| 高清不卡亚洲| 国产一区二区三区毛片| 真实新婚偷拍xxxxx| 国产精品毛片久久久久久久| 一起操在线视频| 一区二区三区四区在线观看国产日韩 | 欧妇女乱妇女乱视频| 中文字幕av一区二区三区四区| 欧美国产在线视频| 日本波多野结衣在线| 舔着乳尖日韩一区| xxx在线播放| 日本美女一区二区| 最新av在线免费观看| 亚洲日本va午夜在线电影| 国内精品久久久久久久| 亚洲 国产 欧美 日韩| 一本色道**综合亚洲精品蜜桃冫| 东方伊人免费在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 日本a在线天堂| 亚洲影院天堂中文av色| 国产精品亚洲视频在线观看| 制服丝袜在线播放| 精品无人区太爽高潮在线播放 | 日韩国产欧美一区二区三区| 一区二区三区四区国产| 亚洲91网站| 日本久久久久久久| 超鹏97在线| 日韩电影免费观看中文字幕| 在线观看色网站| 亚洲老妇xxxxxx| 国产精品成人一区二区三区电影毛片| 麻豆成人免费电影| 久久99久久99精品| 欧美一区三区| 国产精品久久久久久久久久久久冷 | 国产精品久久久久久影院8一贰佰| 国产成人精品福利一区二区三区 | 亚洲精品国产精品国产| 国产亚洲欧洲高清一区| 丰满人妻熟女aⅴ一区| 色天使色偷偷av一区二区| 欧美片一区二区| 欧美国产在线观看| 逼特逼视频在线观看| 美女免费视频一区二区| 久久久久久www| 欧美残忍xxxx极端| 蜜桃传媒视频麻豆一区 | 蜜桃久久久久久| 日韩免费视频播放| 亚洲国产一区二区三区在线播放| 欧美日韩精品一区| 高潮久久久久久久久久久久久久| 国产精品久久电影观看| 97蜜桃久久| 欧美乱人伦中文字幕在线| 国产视频福利在线| 亚洲国产日韩欧美在线动漫| 国产青青草视频| 欧美系列日韩一区| 可以免费看的av毛片| 尤物av一区二区| 小向美奈子av| 日本一区二区视频在线观看| 国产肉体xxxx裸体784大胆| 国产高清不卡二三区| 五月婷婷之婷婷| 日韩av午夜在线观看| 欧美色图另类小说| 亚洲网站视频| 欧美狂野激情性xxxx在线观| 偷拍欧美精品| 一区二区三区在线观看www| 精品视频亚洲| 日本最新一区二区三区视频观看| 欧美aaaaaaaa牛牛影院| 高清视频一区| 成人h动漫免费观看网站| 91色琪琪电影亚洲精品久久| 欧美大片网站| 国产欧美精品在线| 国产资源一区| 国产精品欧美日韩一区二区| 欧美xx视频| 国产精品第2页| 午夜日韩成人影院| 国产成人a亚洲精品| 成年美女黄网站色大片不卡| 91精品国产91久久久久久吃药| а√天堂资源官网在线资源| 久久人人爽国产| а√在线天堂官网| 97精品视频在线播放| 国产无遮挡裸体视频在线观看| 97成人超碰免| 亚洲精品粉嫩美女一区| 国产精品成人免费视频| av成人亚洲| 国产日产亚洲精品| 国产精品2区| 国产精品一区二区三区在线| 加勒比色综合久久久久久久久 | 亚洲图片欧美另类| 床上的激情91.| 久久无码人妻精品一区二区三区| 91美女片黄在线观看91美女| 91成人在线免费视频| 国产精品福利一区二区| 成人免费视频国产免费观看| 亚洲综合色网站| 中国一级特黄毛片| 色综合视频在线观看| 这里只有精品6| 欧美v日韩v国产v| 日本不卡免费播放| 国产一区二区三区精品久久久| 黄色成人在线| 国内外成人免费激情在线视频| 久久r热视频| 国产综合视频在线观看| swag国产精品一区二区| 欧美极品视频一区二区三区| 久久精品国产www456c0m| 日本丰满大乳奶| 国产精品一二| 亚洲一区二区在线视频观看| 国产91在线看| 波多野吉衣中文字幕| 亚洲欧美另类久久久精品2019| 免费看一级一片| 在线欧美日韩精品| www.黄色一片| 国产亚洲欧美aaaa| 欧美videossex| 国产精品高清网站| 欧美第一在线视频| 欧美一级日本a级v片| 综合精品一区| 99热成人精品热久久66| 国产在线不卡一区| 亚洲第一香蕉网| 亚洲黄色小视频| 亚洲午夜在线播放| 亚洲国产精品网站| 日韩三级影院| 热久久这里只有精品| 欧美视频三区| 日韩免费一区二区三区| 亚洲精品乱码久久久久久蜜桃麻豆| 天天爽人人爽夜夜爽| 91香蕉视频mp4| 青娱乐国产在线视频| 欧美性感一区二区三区| 无码国产精品96久久久久| 久久国产精品亚洲| 精品久久久网| 日本一区二区三区精品视频| 极品尤物久久久av免费看| 中文国产在线观看| 亚洲国产高清在线观看视频| 国产一区二区99| 亚洲精品一区二区三区蜜桃下载| 黄色在线播放网站| 国产精品国产三级国产aⅴ浪潮 | 日韩电视剧在线观看免费网站| 国产福利视频在线观看| 国产精品激情av电影在线观看| 红杏一区二区三区| 免费日韩在线观看| 精品一区二区三区在线观看国产 | 神马一区二区三区| 久久6精品影院| 涩涩涩久久久成人精品| 日韩欧美99| 欧美96一区二区免费视频| 免费看污黄网站在线观看| 亚洲高清在线视频| 午夜精品久久久久久久爽| 久久成人综合视频| 亚洲精品伊人| 97超碰免费观看| 国产一区视频网站| 麻豆精品一区二区三区视频| 91精品国产综合久久久蜜臀图片| 国产精品扒开做爽爽爽的视频| 国产日韩欧美夫妻视频在线观看| 北条麻妃国产九九九精品小说| 波多野结衣作品集| 中文字幕av一区 二区| 久草热在线观看| 最近更新的2019中文字幕 | 欧美日韩国产bt| 婷婷成人激情| 成人美女av在线直播| 中文字幕一区二区精品区| 丰满少妇一区二区三区专区| 一个色在线综合| 无码国产色欲xxxx视频| 51视频国产精品一区二区| 免费观看久久av| 亚洲少妇第一页| 国产精品视频一二三区 | 国产福利一区在线观看| 精品无码久久久久久久| 亚洲国产精品久久91精品| 性xxxxfreexxxxx欧美丶| 日韩av大全| 国产一本一道久久香蕉| 国产午夜精品无码| 亚洲嫩模很污视频| 成人免费一区| 日本一道在线观看| zzijzzij亚洲日本少妇熟睡| www亚洲视频| 色偷偷噜噜噜亚洲男人| 久久综合给合| ww国产内射精品后入国产| 久久久高清一区二区三区| 一区二区小视频| 欧美第一黄网免费网站| 日韩伦理一区二区三区| 少妇一级淫免费播放| 夜夜嗨av一区二区三区| 十九岁完整版在线观看好看云免费| 国产成人亚洲综合青青| 天天天综合网| 污污内射在线观看一区二区少妇| 欧美无砖专区一中文字| 欧美xxxx黑人又粗又长| 五月天丁香综合久久国产| 国产91露脸合集magnet| 无码人妻丰满熟妇精品区| 成年无码av片在线| 亚洲欧美成人vr| a级大片免费看| 欧美性jizz18性欧美| 免费a级在线播放| 久久天天狠狠| 国产乱子伦视频一区二区三区| 亚洲av中文无码乱人伦在线视色| 久久久精品999| 国产精品一区高清| 国产精品嫩草69影院|