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

基于RequestAnimationFrame實(shí)現(xiàn)高精度毫秒級(jí)正向計(jì)時(shí)器

開(kāi)發(fā) 前端
正向毫秒級(jí)計(jì)時(shí)器主要就是利用了??window.requestAnimationFrame??的回調(diào)函數(shù)的參數(shù)為??DOMHighResTimeStamp??,且與??performance.now()??的返回值相同;在實(shí)現(xiàn)暫停、繼續(xù)時(shí),需要計(jì)算一下補(bǔ)時(shí)時(shí)間。

背景

最近做了一個(gè)周末嘉年華的活動(dòng)【免費(fèi)領(lǐng)取「王者榮耀千元賬號(hào)」】,效果圖如下。玩法也很簡(jiǎn)單:點(diǎn)擊開(kāi)始,計(jì)時(shí)器開(kāi)始計(jì)時(shí),點(diǎn)擊停止,點(diǎn)擊開(kāi)始按鈕后會(huì)變成停止,當(dāng)計(jì)時(shí)結(jié)束時(shí),秒表顯示時(shí)間為 10:00 時(shí),即可獲取 「價(jià)值千元的王者榮耀賬號(hào)」!

圖片

編組

點(diǎn)我體驗(yàn) !!!

若遇到活動(dòng)未開(kāi)始或者活動(dòng)結(jié)束,可以前往轉(zhuǎn)轉(zhuǎn)app搜索【游戲】即可參與更多活動(dòng),各種福利拿到手軟!

需求分析

從圖上可以看出來(lái),核心就是一個(gè)正向計(jì)時(shí)器。通過(guò)js實(shí)現(xiàn)一個(gè)普通的正向計(jì)時(shí)器很簡(jiǎn)單,大多數(shù)想到都是使用setInterval來(lái)實(shí)現(xiàn)。那么還有沒(méi)有其他的實(shí)現(xiàn)方式呢?又怎么去實(shí)現(xiàn)一個(gè)高精度的毫秒級(jí)正向計(jì)時(shí)器呢?

最近看了vant4的倒計(jì)時(shí)組件的源碼,發(fā)現(xiàn)其并沒(méi)有使用setInterval, 而是封裝了requestAnimationFrame 和利用 Date.now()來(lái)處理毫秒級(jí)渲染和倒計(jì)時(shí)實(shí)現(xiàn)。那么能不能通過(guò)requestAnimationFrame來(lái)實(shí)現(xiàn)一個(gè)正向計(jì)時(shí)器呢?

先看看效果圖,接下來(lái)將會(huì)一步步去實(shí)現(xiàn):

圖片

體驗(yàn)地址: https://suyxh.github.io/timer-demo/

setInterval版

首先呢,來(lái)看看使用setInterval是如何實(shí)現(xiàn)的。在網(wǎng)上看了很多文章,大多都是使用的 setInterval 去實(shí)現(xiàn),大致效果如下:

圖片

setinterval

從效果圖上我們可以發(fā)現(xiàn),最后一位始終為0,甚至還是有些小bug,很明顯不是我們想要的。具體代碼如下:

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" cnotallow="IE=edge">
<meta name="viewport" cnotallow="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>

<body>
<input type="text" id="timetext" value="00時(shí)00分00秒" readonly>
<br>
<br>
<button type="button" notallow="start()">開(kāi)始</button>
<button type="button" notallow="stop()">暫停</button>
<button type="button" notallow="Reset()">重置</button>


<script>
//初始化變量
let hour, minute, second;//時(shí) 分 秒
hour = minute = second = 0;//初始化
let millisecond = 0;//毫秒
let int;
//重置函數(shù)
function Reset () {
window.clearInterval(int);
millisecond = hour = minute = second = 0;
document.getElementById('timetext').value = '00時(shí)00分00秒000毫秒';
}
//開(kāi)始函數(shù)
function start () {
int = setInterval(timer, 50);//每隔50毫秒執(zhí)行一次timer函數(shù)
}
//計(jì)時(shí)函數(shù)
function timer () {
millisecond = millisecond + 50;
if (millisecond >= 1000) {
millisecond = 0;
second = second + 1;
}
if (second >= 60) {
second = 0;
minute = minute + 1;
}

if (minute >= 60) {
minute = 0;
hour = hour + 1;
}
document.getElementById('timetext').value = hour + '時(shí)' + minute + '分' + second + '秒' + millisecond + '毫秒';

}
//暫停函數(shù)
function stop () {
window.clearInterval(int);
}
</script>
</body>

</html>

requestAnimationFrame版

上文中提到vant的CutDown組件,主要就是利用 Date.now() 會(huì)自己走的原理,結(jié)合 requestAnimationFrame 去做時(shí)間計(jì)算;那么正向計(jì)時(shí)器則是利用了 requestAnimationFrame 回調(diào)函數(shù)的參數(shù)去做時(shí)間計(jì)算,從而實(shí)現(xiàn)毫秒級(jí)的計(jì)時(shí)器。

「window.requestAnimationFrame()」 告訴瀏覽器——你希望執(zhí)行一個(gè)動(dòng)畫(huà),并且要求瀏覽器在下次重繪之前調(diào)用指定的回調(diào)函數(shù)更新動(dòng)畫(huà)。該方法需要傳入一個(gè)回調(diào)函數(shù)作為參數(shù),該回調(diào)函數(shù)會(huì)在瀏覽器下一次重繪之前執(zhí)行,當(dāng)你準(zhǔn)備更新動(dòng)畫(huà)時(shí)你應(yīng)該調(diào)用此方法。這將使瀏覽器在下一次重繪之前調(diào)用你傳入給該方法的動(dòng)畫(huà)函數(shù) (即你的回調(diào)函數(shù))。


「注意:」 若你想在瀏覽器下次重繪之前繼續(xù)更新下一幀動(dòng)畫(huà),那么回調(diào)函數(shù)自身必須再次調(diào)用 window.requestAnimationFrame()

MDN requestAnimationFrame

「參數(shù)」

  • callback?下一次重繪之前更新動(dòng)畫(huà)幀所調(diào)用的函數(shù) (即上面所說(shuō)的回調(diào)函數(shù))。該回調(diào)函數(shù)會(huì)被傳入DOMHighResTimeStamp參數(shù),該參數(shù)與performance.now()的返回值相同,它表示requestAnimationFrame() 開(kāi)始去執(zhí)行回調(diào)函數(shù)的時(shí)刻。

「返回值」

一個(gè) long 整數(shù),請(qǐng)求 ID,是回調(diào)列表中唯一的標(biāo)識(shí)。是個(gè)非零值,沒(méi)別的意義。你可以傳這個(gè)值給 window.cancelAnimationFrame() 以取消回調(diào)函數(shù)。

測(cè)試版

通過(guò) requestAnimationFrame API可以知道,回調(diào)函數(shù)中的參數(shù)就是一個(gè) DOMHighResTimeStamp參數(shù),該參數(shù)與performance.now()的返回值相同,它表示requestAnimationFrame() 開(kāi)始去執(zhí)行回調(diào)函數(shù)的時(shí)刻。

那我們直接使用該值不就可以了嗎?試試看:

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" cnotallow="IE=edge">
<meta name="viewport" cnotallow="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>

<body>
<div id="app">hello world</div>
<div id="status">這里顯示倒計(jì)時(shí)狀態(tài)</div>
<button class="start">開(kāi)始</button>

<br />

<script>
const render = (time) => {
document.querySelector("#status").innerHTML = Math.floor(time) / 1000
}

const useCountUp = () {
let rafId;
let endTime;

const step = (timestamp) => {
console.log('timestamp', timestamp)
render(timestamp)
rafId = window.requestAnimationFrame(step)
}

const start = () {
rafId = window.requestAnimationFrame(step)
}

return {
start,
}
}

const { start } = useCountUp();

document.querySelector('.start').addEventListener('click', () => {
start()
})

</script>
</body>

</html>

效果如下:

圖片

測(cè)試版

雖然比較簡(jiǎn)陋,但是并沒(méi)有出現(xiàn) setInterval版 的bug,接下來(lái)在一步步優(yōu)化。

簡(jiǎn)易版

我們加上格式化時(shí)間的函數(shù) parseTime() 和 parseFormat(), 代碼如下:

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" cnotallow="IE=edge">
<meta name="viewport" cnotallow="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>

<body>
<div id="app">hello world</div>
<div id="status">這里顯示倒計(jì)時(shí)狀態(tài)</div>
<button class="start">開(kāi)始</button>

<br />

<script>
/**
* @description: 補(bǔ)0操作
* @param {*} num
* @param {*} targetLength
* @return {*}
*/
function padZero (num, targetLength = 2) {
let str = num + ''

while (str.length < targetLength) {
str = '0' + str
}

return str
}

/**
* @description: 解析時(shí)間
* @param {*} time
* @return {*}
*/
function parseTime (time) {
const SECOND = 1000
const MINUTE = 60 * SECOND
const HOUR = 60 * MINUTE
const DAY = 24 * HOUR

const days = Math.floor(time / DAY)
const hours = Math.floor((time % DAY) / HOUR)
const minutes = Math.floor((time % HOUR) / MINUTE)
const seconds = Math.floor((time % MINUTE) / SECOND)
const milliseconds = Math.floor(time % SECOND)

return {
total: time,
days,
hours,
minutes,
seconds,
milliseconds,
}
}


/**
* @description: 格式化時(shí)間
* @param {*} format
* @param {*} currentTime
* @return {*}
*/
function parseFormat (format, currentTime) {
const { days } = currentTime
let { hours, minutes, seconds, milliseconds } = currentTime

if (format.includes('DD')) {
format = format.replace('DD', padZero(days))
} else {
hours += days * 24
}

if (format.includes('HH')) {
format = format.replace('HH', padZero(hours))
} else {
minutes += hours * 60
}

if (format.includes('mm')) {
format = format.replace('mm', padZero(minutes))
} else {
seconds += minutes * 60
}

if (format.includes('ss')) {
format = format.replace('ss', padZero(seconds))
} else {
milliseconds += seconds * 1000
}

if (format.includes('S')) {
const ms = padZero(milliseconds, 3)

if (format.includes('SSS')) {
format = format.replace('SSS', ms)
} else if (format.includes('SS')) {
format = format.replace('SS', ms.slice(0, 2))
} else {
format = format.replace('S', ms.charAt(0))
}
}

return format
}


/**
* @description: 渲染時(shí)間
* @param {*} time
* @return {*}
*/
const render = (time) => {
time = parseFormat('HH:mm:ss:SSS', parseTime(time))
document.querySelector("#status").innerHTML = time
}


const useCountUp = () {
let rafId;
let endTime;

const step = (timestamp) => {
console.log('timestamp', timestamp)
// render(timestamp)
rafId = window.requestAnimationFrame(step)
}

const start = () {
rafId = window.requestAnimationFrame(step)
}

return {
start,
}
}

const { start } = useCountUp();

document.querySelector('.start').addEventListener('click', () => {
start()
})

</script>
</body>

</html>

效果如下:

圖片

簡(jiǎn)易版

又看到了我們熟悉的時(shí)間格式啦, 格式化的方法也是來(lái)源于vant的CutDown組件中的格式化代碼!

格式化雖然是完成了,但是怎么去停止呢?能不能支持暫停、繼續(xù)、重置呢?

接下來(lái)繼續(xù)完善。

進(jìn)階版

我們直接通過(guò) window.cancelAnimationFrame() 去取消回調(diào)函數(shù)即可!在 useCountUp函數(shù)中添加一下 pause 即可!

const pause = () {
if (rafId) {
window.cancelAnimationFrame(rafId)
}
}

效果如下:

圖片

進(jìn)階版

不少的小伙伴已經(jīng)發(fā)現(xiàn),停止雖然是沒(méi)問(wèn)題了,當(dāng)再次點(diǎn)擊開(kāi)始的時(shí)候,時(shí)間怎么不對(duì)了?有瑕疵!

因?yàn)槲覀兩偎阊a(bǔ)時(shí)時(shí)間,做如下修改,添加startTime 、 stopTime 和  goOn 方法:

const useCountUp = () {
let rafId;
let startTime;
let stopTime;


const step = (timestamp) => {
console.log('timestamp', timestamp)
render(timestamp - startTime)
rafId = window.requestAnimationFrame(step)
}

const start = () {
startTime = performance.now()
rafId = window.requestAnimationFrame(step)
}

const pause = () {
stopTime = performance.now()
if (rafId) {
window.cancelAnimationFrame(rafId)
}
}

const goOn = () {
startTime += performance.now() - stopTime
rafId = window.requestAnimationFrame(step)
}

return {
start,
pause,
goOn
}
}

這里基本上已經(jīng)完成了暫停和繼續(xù)的功能了,但是仍是有些bug的,可以多次點(diǎn)擊繼續(xù)試試?? 。

完整版

接下來(lái),我們來(lái)修復(fù)上述的bug,方法:添加一個(gè)變量來(lái)表示當(dāng)前計(jì)時(shí)器的狀態(tài)。

在增加幾個(gè)新功能:

  • 添加 重置 方法: 其實(shí)我們只需要調(diào)用一下暫停,在清理一下時(shí)間即可
  • 支持 配置:比如 正香計(jì)時(shí)的時(shí)間, 計(jì)時(shí)結(jié)束的函數(shù)

核心代碼如下,其他部分代碼不變:

const useCountUp = (options) => {
let rafId, startTime, stopTime, curentTime, counting = false

const step = (timestamp) => {
curentTime = timestamp - startTime
render(curentTime)
options.onChange?.(curentTime);

if (options.time) {
if (Math.floor(curentTime) < options.time) {
rafId = window.requestAnimationFrame(step)
} else {
pause()
options.onFinish?.()
}
} else {
rafId = window.requestAnimationFrame(step)
}

}

const start = () {
// 計(jì)時(shí)中 或者 已經(jīng)開(kāi)始過(guò)計(jì)時(shí)想要重新開(kāi)始計(jì)時(shí),應(yīng)該先點(diǎn)擊一下 重置 再開(kāi)始計(jì)時(shí)
if (counting || curentTime) {
return
}
counting = true
startTime = performance.now()
rafId = window.requestAnimationFrame(step)
}

const pause = () {
// 已經(jīng)暫停后,屏蔽掉點(diǎn)擊
if (!counting) {
return
}
counting = false
stopTime = performance.now()
if (rafId) {
window.cancelAnimationFrame(rafId)
}
}

const goOn = () {
// 已經(jīng)在計(jì)時(shí)中,屏蔽掉點(diǎn)擊
if (counting) {
return
}
counting = true
startTime += performance.now() - stopTime
rafId = window.requestAnimationFrame(step)
}

const reset = () {
pause()
curentTime = 0
startTime = 0
stopTime = 0
render(0)
}

return {
start,
pause,
goOn,
reset
}
}

const { start, pause, goOn, reset } = useCountUp({
time: 3 * 1000,
onChange: current console.log('change', current),
onFinish: () console.log('finish'),
});

document.querySelector('.start').addEventListener('click', () => {
start()
})

document.querySelector('.pause').addEventListener('click', () => {
pause()
})

document.querySelector('.goOn').addEventListener('click', () => {
goOn()
})

document.querySelector('.reset').addEventListener('click', () => {
reset()
})

到此基本上就是實(shí)現(xiàn)了一個(gè)毫秒級(jí)的正向計(jì)時(shí)器!

vue版

只是對(duì)js的邏輯進(jìn)行了一些封裝

代碼:https://github.com/SuYxh/timer-demo

預(yù)覽:https://suyxh.github.io/timer-demo/

總結(jié)

正向毫秒級(jí)計(jì)時(shí)器主要就是利用了window.requestAnimationFrame的回調(diào)函數(shù)的參數(shù)為DOMHighResTimeStamp,且與performance.now()的返回值相同;在實(shí)現(xiàn)暫停、繼續(xù)時(shí),需要計(jì)算一下補(bǔ)時(shí)時(shí)間。

責(zé)任編輯:武曉燕 來(lái)源: 大轉(zhuǎn)轉(zhuǎn)FE
相關(guān)推薦

2013-05-23 16:01:47

Android開(kāi)發(fā)移動(dòng)開(kāi)發(fā)Chronometer

2023-04-17 09:08:27

CSS計(jì)時(shí)器

2012-05-08 13:58:37

SharePoint

2011-05-31 16:50:35

Android 線程

2021-11-26 00:04:20

Go計(jì)時(shí)器重構(gòu)

2011-09-08 14:01:01

Android Wid實(shí)例

2013-03-25 10:03:35

網(wǎng)絡(luò)優(yōu)化網(wǎng)絡(luò)抑制快速認(rèn)知網(wǎng)絡(luò)

2022-06-28 15:29:56

Python編程語(yǔ)言計(jì)時(shí)器

2020-06-11 08:48:49

JavaScript開(kāi)發(fā)技術(shù)

2023-12-11 09:50:35

Linux定時(shí)器

2010-01-05 15:00:30

.NET Framew

2010-01-25 11:29:33

Android計(jì)時(shí)器

2022-06-23 07:23:34

自定義組件計(jì)時(shí)器

2020-03-10 09:42:04

JavaScript前端線程

2021-01-18 09:39:35

室內(nèi)定位技術(shù)物聯(lián)網(wǎng)

2021-12-07 11:30:32

Go煮蛋計(jì)時(shí)器

2019-12-24 16:52:22

Go語(yǔ)言騰訊TM函數(shù)

2022-06-30 16:10:26

Python計(jì)時(shí)器裝飾器

2011-04-21 10:49:28

Linux時(shí)間定時(shí)器

2024-07-18 08:46:58

.NET輕量級(jí)計(jì)時(shí)器測(cè)量代碼塊
點(diǎn)贊
收藏

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

色成人综合网| 成人午夜影院在线观看| 日韩精品成人一区二区在线观看| 992在线观看| 天天干,天天操,天天射| 99精品视频精品精品视频| 亚洲国产欧美日韩另类综合| 国产男女猛烈无遮挡91| 成年人在线观看av| 欧美videossex| 99热在线成人| 日韩欧美www| 自拍偷拍99| 欧美性猛交xxxx乱大交hd| 欧美日韩一区二区三区四区不卡 | 欧美日韩免费做爰视频| 97欧美成人| 91网站在线播放| 国外色69视频在线观看| 男人添女人荫蒂国产| 久久77777| 激情深爱一区二区| 中文字幕在线国产精品| 三级在线视频观看| 国产一区精品| 欧美aaaaa成人免费观看视频| 亚洲四色影视在线观看| 色欲av无码一区二区人妻| 日本xxxx人| 亚洲美女91| 91精品国产综合久久福利| 免费看av软件| 国产视频手机在线| 国产精品啊啊啊| 精品国产a毛片| 欧美成人高潮一二区在线看| 午夜视频福利在线观看| 毛片一区二区| 中文字幕亚洲精品| 精品人妻一区二区三区香蕉| 欧美黑人疯狂性受xxxxx野外| 久久久欧美精品sm网站| 国产精品极品尤物在线观看 | 欧美日韩在线二区| 欧美在线不卡一区| 亚洲图片在线观看| 国产一区二区三区四区视频| 一本一本久久a久久综合精品| 日韩欧美一二三区| 57pao国产成永久免费视频| 国产婷婷视频在线| 国产精品人妖ts系列视频| 国产精品自产拍在线观| 中文字幕免费观看| 色婷婷一区二区三区| 欧美乱妇23p| 亚洲精品无码国产| 福利成人在线观看| 国产精品 欧美精品| 91国产高清在线| 欧美福利第一页| 久久精品一级| 色综合亚洲欧洲| 老汉色影院首页| 四虎影视精品成人| 久久99精品国产麻豆不卡| 久久久久亚洲精品国产| 久久精品第一页| 国产一区二区三区91| 91精品国产一区二区| 在线黄色免费看| 欧美特黄不卡| 亚洲第一精品自拍| 欧美午夜aaaaaa免费视频| av在线播放网| 国产一区激情在线| 欧美一级视频一区二区| 精品无码一区二区三区蜜臀| 久久99精品国产自在现线| 欧美亚洲一区二区三区四区| 91视频免费版污| 四虎国产精品免费久久5151| 欧美一卡2卡三卡4卡5免费| 国产调教打屁股xxxx网站| 国产精品白丝av嫩草影院| 精品1区2区3区| 国产精品网站免费| japanese23hdxxxx日韩| 欧美四级电影网| 日本亚洲一区二区三区| 素人啪啪色综合| 天天综合网 天天综合色| 国产盗摄视频在线观看| 阿v视频在线观看| 亚洲精品免费在线| 亚洲综合欧美日韩| а√天堂8资源在线官网| 国产欧美精品一区aⅴ影院| 精品国产乱码久久久久软件| www日本高清视频| 久久福利视频一区二区| 99热99热| 国产av精国产传媒| 国产乱码精品一区二区三区忘忧草 | 欧美日韩不卡在线| 欧美一区二区中文字幕| 视频一区在线免费看| 日韩一区二区免费在线电影| 国产精品自拍视频在线| 动漫视频在线一区| 日韩中文视频免费在线观看| 日韩视频在线观看免费视频| 亚洲国产国产| 亚洲人av在线影院| 免费在线一级片| 日韩高清在线不卡| 日本久久久久亚洲中字幕| www欧美在线| 性欧美长视频| 国产成人久久精品| 亚洲精品国产欧美在线观看| 日韩av电影天堂| 国产精品免费看久久久香蕉| 黄色一区二区视频| www.色精品| 久久久久久九九九九| 午夜黄色小视频| 亚洲欧美日韩中文播放 | 亚洲一区二区中文| 97久久人国产精品婷婷| 激情欧美一区二区三区在线观看| 欧美lavv| 欧美被日视频| 一级特黄大欧美久久久| 亚洲 欧美 日韩 国产综合 在线| 四虎影视成人精品国库在线观看| 亚洲欧美日本另类| 久久婷婷五月综合| 亚洲女同在线| 精品国产91亚洲一区二区三区www 精品国产_亚洲人成在线 | 亚洲精品电影网站| japanese在线观看| 亚洲女娇小黑人粗硬| 久久久爽爽爽美女图片| 成人av一区二区三区在线观看| 中文字幕亚洲精品在线观看| 人妻激情另类乱人伦人妻| av伦理在线| 91精品福利在线| 国产精品嫩草影院8vv8| 精品久久久久久久久久久下田| 欧美有码在线观看视频| 深夜福利视频在线免费观看| 久久综合资源网| 亚洲国产一区二区三区在线播| 成人日韩欧美| 欧美一区二区三区影视| 欧美做爰爽爽爽爽爽爽| 日韩亚洲在线| 国产一区福利视频| 午夜激情在线观看| 亚洲高清三级视频| 亚洲香蕉中文网| 欧美肥老太太性生活| 久久久之久亚州精品露出| 亚洲av无码一区二区乱子伦| 国产亚洲精品资源在线26u| 久久天天东北熟女毛茸茸| 亚洲天堂导航| 欧美日韩一级二级| 亚洲色图100p| 国产一区不卡精品| 免费人成在线观看视频播放| 国产福利资源一区| 欧美性资源免费| 在线免费黄色| 欧美一区二区高清| 日本高清www免费视频| 久久 天天综合| 9191国产视频| 秋霞影院一区二区三区| 国产精品第三页| 曰本三级在线| 欧美高清dvd| 国产成人无码aa精品一区| 99麻豆久久久国产精品免费| 日韩精品一区二区三区色欲av| 中文字幕视频精品一区二区三区| 伊人久久久久久久久久| 天堂网一区二区三区| 日本一区二区成人| 色综合av综合无码综合网站| 中文字幕一区二区三区中文字幕 | 国产成人免费高清视频| 欧美性生活一级片| 国产精品夜色7777狼人| 国产色婷婷在线| 欧美一区二区视频在线观看 | 亚洲人成久久| 亚洲天堂电影网| 天天久久夜夜| 97人人模人人爽人人喊中文字| av免费观看网址| 欧美午夜精品在线| aa片在线观看视频在线播放| 久久精品理论片| 亚洲精品一区二区三区四区五区 | 成人影院入口| 欧美成人精品一区二区| 国产精品久久欧美久久一区| 亚洲3atv精品一区二区三区| 一级黄色电影片| 欧美三级第一页| av在线亚洲男人的天堂| 伊人久久高清| 中文字幕日韩av| 免费av一级片| 69av一区二区三区| 国模无码国产精品视频| 国产亚洲欧洲一区高清在线观看| 韩国三级hd中文字幕有哪些| 欧美三级视频| 亚洲一卡二卡| 欧美美女视频| 欧美凹凸一区二区三区视频| 秋霞一区二区| 国产+人+亚洲| 超碰免费公开在线| 主播福利视频一区| 欧美另类自拍| 欧美日韩精品久久久| 伊人手机在线视频| 亚洲1区2区3区视频| 久久久国产成人| av电影在线观看完整版一区二区| 涩多多在线观看| 精品av久久久久电影| 欧美在线播放一区| 2020国产精品小视频| 欧美日本高清视频| 天天综合天天综合| 欧美不卡一区二区三区| 国产综合精品视频| 婷婷久久综合九色综合绿巨人| 久久免费视频99| 亚洲国产日韩在线一区模特| 欧美日韩成人免费观看| 一区二区三区在线观看动漫| 国产高潮国产高潮久久久91 | 成人综合婷婷国产精品久久| 热99这里只有精品| 亚洲激情影院| 久久视频这里有精品| 亚洲免费黄色| 1024av视频| 99热国内精品| 免费观看黄色大片| 欧美xxx在线观看| 欧美日韩在线一二三| 在线播放成人| 成人免费自拍视频| 新版的欧美在线视频| 57pao成人永久免费视频| 欧美黑人粗大| 国产精品美女网站| 国产精品视频一区二区三区综合| 欧洲成人在线观看| 欧美色图天堂| 久久久久久久久国产| 3d成人动漫在线| 色婷婷久久一区二区| 国产三级在线播放| 国内外成人免费激情在线视频| 日韩精品极品| 欧美激情综合亚洲一二区| 国产第一页在线| 国产91|九色| 亚洲精品乱码日韩| 成人情视频高清免费观看电影| 欧美a一欧美| 午夜免费电影一区在线观看| 色橹橹欧美在线观看视频高清 | 亚洲av片在线观看| 尤物tv国产一区| 在线āv视频| 日韩av成人在线观看| 91丨精品丨国产| 精品国产一区二区三区麻豆免费观看完整版 | 亚洲免费小视频| 欧美69xxx| 69av成年福利视频| 日韩一区二区三免费高清在线观看| 999热视频| 亚洲男女网站| 国产一区二区不卡视频| 欧美疯狂party性派对| 国产欧美日韩网站| 亚洲精品在线观看91| 青青草国产精品视频| 美国av一区二区| 99精品一区二区三区无码吞精 | 日本成人三级| 欧美国产三级| 九色91popny| 北条麻妃一区二区三区| 黑人巨大猛交丰满少妇| 久久久久久一二三区| 久久久99精品| 欧美高清视频www夜色资源网| 午夜视频在线免费播放| 九九热在线精品视频| 日韩三级影视| 精品国产91亚洲一区二区三区www| 欧美jizz| 特级丰满少妇一级| 91麻豆精品秘密| 亚洲精品午夜久久久久久久| 午夜久久电影网| 国产老妇伦国产熟女老妇视频| 亚洲欧美另类人妖| 国产一二在线播放| 成人免费视频观看视频| 99久久婷婷这里只有精品| 少妇性l交大片| 久久精品国产99久久6| 久久久久久久久免费看无码| 亚洲午夜在线电影| 久久免费激情视频| 欧美视频完全免费看| 性xxxx18| 91国内在线视频| 国产香蕉精品| 欧美国产日韩激情| 国产91综合一区在线观看| 日本一级片在线播放| 亚洲精品美腿丝袜| 精品国产999久久久免费| 日韩在线视频中文字幕| 欧美97人人模人人爽人人喊视频| 亚洲影院在线看| 亚洲激情久久| 欧美深夜福利视频| 成人精品鲁一区一区二区| 久久人人爽人人爽人人| 欧美一区二区三区啪啪| av网站大全在线| 99视频在线免费观看| 好看不卡的中文字幕| 在线播放av网址| 午夜视频久久久久久| 亚洲人妻一区二区三区| 欧美一级在线亚洲天堂| 最新精品国偷自产在线| 公共露出暴露狂另类av| 精品无码三级在线观看视频| 99久久久免费精品| 91精品久久久久久蜜臀| 调教一区二区| 国产精品久久久久久搜索| 日本激情一区| www国产精品内射老熟女| 99这里只有久久精品视频| 久久黄色精品视频| 亚洲天堂免费视频| 在线观看免费视频你懂的| 成人国产一区二区| 一区二区激情| 伊人网在线视频观看| 亚洲美腿欧美偷拍| 一级片在线免费播放| 色先锋资源久久综合5566| 久久国际精品| 每日在线更新av| 国产精品色在线| 精品人妻少妇AV无码专区| 96精品视频在线| 日韩欧美在线中字| 亚洲欧洲日韩综合| 欧美午夜精品久久久久久浪潮| 午夜在线免费观看视频| av一本久道久久波多野结衣| 亚洲欧美久久| 天海翼在线视频| 日韩成人av在线| av免费在线视| 午夜精品一区二区在线观看的| 国产传媒欧美日韩成人| 精品人妻一区二区三区潮喷在线 | 999久久久国产| 91国在线观看| 中文字幕资源网在线观看| 久久综合毛片| 国产一区二区三区不卡在线观看| 日韩激情在线播放| www.亚洲免费视频| 国产第一亚洲| 成人免费网站入口| 中文字幕一区二区日韩精品绯色| 中文字幕av网站| 中文字幕精品一区二区精品|