日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PC端和移动端网页特效,fastclick插件,Swiper插件,Bootstrap等框架,本地存储

發布時間:2024/1/1 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PC端和移动端网页特效,fastclick插件,Swiper插件,Bootstrap等框架,本地存储 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

目錄

PC 端網頁特效

元素偏移量 offset 系列

1.offset 系列常用屬性

2.offset 與 style 區別

?3.計算鼠標在盒子內的坐標

4.模態框拖拽

?5.京東商品放大鏡

元素可視區 client 系列

1. client 系列常用屬性

2.flexible.js分析(移動適配rem)

3.立即執行函數

4.像素比和pageshow事件

元素滾動 scroll 系列

1. scroll 系列屬性

?2.被頁面卷去的頭部

3.仿淘寶固定側邊欄

三大系列總結

mouseenter 和mouseover的區別

?動畫函數封裝

1.動畫原理

2.動畫函數簡單封裝

3.動畫函數給不同元素記錄不同定時器

4.緩動動畫

5.緩動動畫多個目標值之間移動

6.動畫函數添加回調函數并封裝到單獨的js文件

常見網頁特效案例

1.網頁輪播圖

2.返回頂部

移動端網頁特效

觸屏事件

1.觸屏事件touch

2.觸摸事件對象(TouchEvent)

3.移動端拖動元素

移動端常見特效

1.移動端輪播圖

2.classList 屬性

移動端常用開發插件

click 延時解決方案:

Swiper 插件的使用(輪播圖)

移動端常用開發框架

Bootstrap 框架

本地存儲

window.sessionStorage

window.localStorage

?記住用戶名


PC 端網頁特效

元素偏移量 offset 系列

offset 翻譯過來就是偏移量, 我們使用 offset 系列相關屬性可以動態的得到該元素的位置(偏移)、大小等。 ?

可以獲得元素距離帶有定位父元素的位置 ?

可以獲得元素自身的大小(寬度高度)

注意: 返回的數值都不帶單位。

1.offset 系列常用屬性

<body><div class="father"><div class="son"></div></div><div class="w"></div><script>// offset 系列var father = document.querySelector('.father');var son = document.querySelector('.son');// 1.可以得到元素的偏移 位置,返回的不帶單位的數值 console.log(father.offsetTop);console.log(father.offsetLeft);// 它以帶有定位的父親為準,如果沒有父親或者父親沒有定位 則以 body 為準console.log(son.offsetLeft);var w = document.querySelector('.w');// 2.可以得到元素的大小:寬度和高度,是包含padding + border + width console.log(w.offsetWidth);console.log(w.offsetHeight);// 3. 返回帶有定位的父親 否則返回的是bodyconsole.log(son.offsetParent); // 返回帶有定位的父親 否則返回的是bodyconsole.log(son.parentNode); // 返回父親 是最近一級的父親 親爸爸 不管父親有沒有定位</script> </body>

2.offset 與 style 區別

?3.計算鼠標在盒子內的坐標

<body><div class="box"></div><script>// 我們在盒子內點擊, 想要得到鼠標距離盒子左右的距離。// 首先得到鼠標在頁面中的坐標( e.pageX, e.pageY)// 其次得到盒子在頁面中的距離(box.offsetLeft, box.offsetTop)// 用鼠標距離頁面的坐標減去盒子在頁面中的距離, 得到 鼠標在盒子內的坐標var box = document.querySelector('.box');box.addEventListener('mousemove', function(e) {// console.log(e.pageX);// console.log(e.pageY);// console.log(box.offsetLeft);var x = e.pageX - this.offsetLeft;var y = e.pageY - this.offsetTop;this.innerHTML = 'x坐標是' + x + ' y坐標是' + y;})</script> </body>

4.模態框拖拽

點擊彈出層, 會彈出模態框, 并且顯示灰色半透明的遮擋層。

點擊關閉按鈕,可以關閉模態框,并且同時關閉灰色半透明遮擋層。

鼠標放到模態框最上面一行,可以按住鼠標拖拽模態框在頁面中移動。

鼠標松開,可以停止拖動模態框移動。

<style>.login-header {width: 100%;text-align: center;height: 30px;font-size: 24px;line-height: 30px;}ul,li,ol,dl,dt,dd,div,p,span,h1,h2,h3,h4,h5,h6,a {padding: 0px;margin: 0px;}.login {display: none;width: 512px;height: 280px;position: fixed;border: #ebebeb solid 1px;left: 50%;top: 50%;background: #ffffff;box-shadow: 0px 0px 20px #ddd;z-index: 9999;transform: translate(-50%, -50%);}.login-title {width: 100%;margin: 10px 0px 0px 0px;text-align: center;line-height: 40px;height: 40px;font-size: 18px;position: relative;cursor: move;}.login-input-content {margin-top: 20px;}.login-button {width: 50%;margin: 30px auto 0px auto;line-height: 40px;font-size: 14px;border: #ebebeb 1px solid;text-align: center;}.login-bg {display: none;width: 100%;height: 100%;position: fixed;top: 0px;left: 0px;background: rgba(0, 0, 0, .3);}a {text-decoration: none;color: #000000;}.login-button a {display: block;}.login-input input.list-input {float: left;line-height: 35px;height: 35px;width: 350px;border: #ebebeb 1px solid;text-indent: 5px;}.login-input {overflow: hidden;margin: 0px 0px 20px 0px;}.login-input label {float: left;width: 90px;padding-right: 10px;text-align: right;line-height: 35px;height: 35px;font-size: 14px;}.login-title span {position: absolute;font-size: 12px;right: -20px;top: -30px;background: #ffffff;border: #ebebeb solid 1px;width: 40px;height: 40px;border-radius: 20px;}</style> </head><body><div class="login-header"><a id="link" href="javascript:;">點擊,彈出登錄框</a></div><div id="login" class="login"><div id="title" class="login-title">登錄會員<span><a id="closeBtn" href="javascript:void(0);" class="close-login">關閉</a></span></div><div class="login-input-content"><div class="login-input"><label>用戶名:</label><input type="text" placeholder="請輸入用戶名" name="info[username]" id="username" class="list-input"></div><div class="login-input"><label>登錄密碼:</label><input type="password" placeholder="請輸入登錄密碼" name="info[password]" id="password" class="list-input"></div></div><div id="loginBtn" class="login-button"><a href="javascript:void(0);" id="login-button-submit">登錄會員</a></div></div><!-- 遮蓋層 --><div id="bg" class="login-bg"></div><script>// 點擊彈出層, 模態框和遮擋層就會顯示出來 display:block;// 點擊關閉按鈕,模態框和遮擋層就會隱藏起來 display:none;// 在頁面中拖拽的原理: 鼠標按下并且移動, 之后松開鼠標// 觸發事件是鼠標按下 mousedown, 鼠標移動mousemove 鼠標松開 mouseup// 拖拽過程: 鼠標移動過程中,獲得最新的值賦值給模態框的left和top值, 這樣模態框可以跟著鼠標走了// 鼠標按下觸發的事件源是 最上面一行,就是 id 為 title // 鼠標的坐標 減去 鼠標在盒子內的坐標, 才是模態框真正的位置。// 鼠標按下,我們要得到鼠標在盒子的坐標。// 鼠標移動,就讓模態框的坐標 設置為 : 鼠標坐標 減去盒子坐標即可,注意移動事件寫到按下事件里面。// 鼠標松開,就停止拖拽,就是可以讓鼠標移動事件解除 // 1. 獲取元素var login = document.querySelector('.login');var mask = document.querySelector('.login-bg');var link = document.querySelector('#link');var closeBtn = document.querySelector('#closeBtn');var title = document.querySelector('#title');// 2. 點擊彈出層這個鏈接 link 讓mask 和login 顯示出來link.addEventListener('click', function() {mask.style.display = 'block';login.style.display = 'block';})// 3. 點擊 closeBtn 就隱藏 mask 和 login closeBtn.addEventListener('click', function() {mask.style.display = 'none';login.style.display = 'none';})// 4. 開始拖拽// (1) 當我們鼠標按下, 就獲得鼠標在盒子內的坐標title.addEventListener('mousedown', function(e) {var x = e.pageX - login.offsetLeft;var y = e.pageY - login.offsetTop;// (2) 鼠標移動的時候,把鼠標在頁面中的坐標,減去 鼠標在盒子內的坐標就是模態框的left和top值document.addEventListener('mousemove', move)function move(e) {login.style.left = e.pageX - x + 'px';login.style.top = e.pageY - y + 'px';}// (3) 鼠標彈起,就讓鼠標移動事件移除document.addEventListener('mouseup', function() {document.removeEventListener('mousemove', move);})})</script> </body>

?5.京東商品放大鏡

整個案例可以分為三個功能模塊

先獲取元素

<div class="preview_img"><img src="upload/s3.png" alt=""><div class="mask"></div><div class="big"><img src="upload/big.jpg" alt="" class="bigImg"></div></div> var preview_img = document.querySelector('.preview_img'); //包括圖片和遮擋層的盒子var mask = document.querySelector('.mask'); //遮擋層var big = document.querySelector('.big'); //旁邊展示圖片的大盒子

(1)鼠標經過小圖片盒子, 黃色的遮擋層 和 大圖片盒子顯示,離開隱藏2個盒子功能

//preview_img包括圖片和遮擋層的盒子//mask遮擋層//big展示圖片的大盒子// 1. 當我們鼠標經過 preview_img 就顯示和隱藏 mask 遮擋層 和 big 大盒子preview_img.addEventListener('mouseover', function() {mask.style.display = 'block';big.style.display = 'block';})preview_img.addEventListener('mouseout', function() {mask.style.display = 'none';big.style.display = 'none';})

(2)黃色的遮擋層跟隨鼠標功能。

(3)移動黃色遮擋層,大圖片跟隨移動功能。

// 2. 鼠標移動的時候,讓黃色的盒子跟著鼠標來走preview_img.addEventListener('mousemove', function(e) {// (1). 先計算出鼠標在盒子內的坐標var x = e.pageX - this.offsetLeft;var y = e.pageY - this.offsetTop;// console.log(x, y);// (2) 減去盒子高度 300的一半 是 150 就是我們mask 的最終 left 和top值了// (3) 我們mask 移動的距離var maskX = x - mask.offsetWidth / 2;var maskY = y - mask.offsetHeight / 2;// (4) 如果x 坐標小于了0 就讓他停在0 的位置// 遮擋層的最大移動距離var maskMax = preview_img.offsetWidth - mask.offsetWidth;if (maskX <= 0) {maskX = 0;} else if (maskX >= maskMax) {maskX = maskMax;}if (maskY <= 0) {maskY = 0;} else if (maskY >= maskMax) {maskY = maskMax;}mask.style.left = maskX + 'px';mask.style.top = maskY + 'px';// 3. 大圖片的移動距離 = 遮擋層移動距離 * 大圖片最大移動距離 / 遮擋層的最大移動距離// 大圖var bigIMg = document.querySelector('.bigImg');// 大圖片最大移動距離var bigMax = bigIMg.offsetWidth - big.offsetWidth;// 大圖片的移動距離 X Yvar bigX = maskX * bigMax / maskMax;var bigY = maskY * bigMax / maskMax;bigIMg.style.left = -bigX + 'px';bigIMg.style.top = -bigY + 'px';})

元素可視區 client 系列

client 翻譯過來就是客戶端,我們使用 client 系列的相關屬性來獲取元素可視區的相關信息。通過 client 系列的相關屬性可以動態的得到該元素的邊框大小、元素大小等

1. client 系列常用屬性

?

2.flexible.js分析(移動適配rem)

(function flexible(window, document) {// 獲取的html 的根元素var docEl = document.documentElement// dpr 物理像素比var dpr = window.devicePixelRatio || 1// adjust body font size 設置我們body 的字體大小function setBodyFontSize() {// 如果頁面中有body 這個元素 就設置body的字體大小if (document.body) {document.body.style.fontSize = (12 * dpr) + 'px'} else {// 如果頁面中沒有body 這個元素,則等著 我們頁面主要的DOM元素加載完畢再去設置body// 的字體大小document.addEventListener('DOMContentLoaded', setBodyFontSize)}}setBodyFontSize();// set 1rem = viewWidth / 10 設置我們html 元素的文字大小function setRemUnit() {var rem = docEl.clientWidth / 10docEl.style.fontSize = rem + 'px'}setRemUnit()// reset rem unit on page resize 當我們頁面尺寸大小發生變化的時候,要重新設置下rem 的大小window.addEventListener('resize', setRemUnit)// pageshow 是我們重新加載頁面觸發的事件window.addEventListener('pageshow', function(e) {// e.persisted 返回的是true 就是說如果這個頁面是從緩存取過來的頁面,也需要從新計算一下rem 的大小if (e.persisted) {setRemUnit()}})// detect 0.5px supports 有些移動端的瀏覽器不支持0.5像素的寫法if (dpr >= 2) {var fakeBody = document.createElement('body')var testElement = document.createElement('div')testElement.style.border = '.5px solid transparent'fakeBody.appendChild(testElement)docEl.appendChild(fakeBody)if (testElement.offsetHeight === 1) {docEl.classList.add('hairlines')}docEl.removeChild(fakeBody)} }(window, document))

3.立即執行函數

主要作用: 創建一個獨立的作用域。 避免了命名沖突問題

<script>// 1.立即執行函數: 不需要調用,立馬能夠自己執行的函數function fn() {console.log(1);}fn();// 2. 寫法 也可以傳遞參數進來// 1.(function() {})() 或者 2. (function(){}());(function(a, b) {console.log(a + b);var num = 10;})(1, 2); // 第二個小括號可以看做是調用函數(function sum(a, b) {console.log(a + b);var num = 10; // 局部變量}(2, 3));// 3. 立即執行函數最大的作用就是 獨立創建了一個作用域, //里面所有的變量都是局部變量 不會有命名沖突的情況</script>

4.像素比和pageshow事件

? ?下面三種情況都會刷新頁面都會觸發 load 事件。

? ? 1.a標簽的超鏈接

? ? 2.F5或者刷新按鈕(強制刷新)

? ? 3.前進后退按鈕

? ? ? ? 但是 火狐中,有個特點,有個“往返緩存”,這個緩存中不僅保存著頁面數據,還保存了DOM和JavaScript的狀態;實際上是將整個頁面都保存在了內存里。

? ? ? ?所以此時后退按鈕不能刷新頁面。

? ? ? ?此時可以使用 pageshow事件來觸發。,這個事件在頁面顯示時觸發,無論頁面是否來自緩存。在重新加載頁面中,pageshow會在load事件觸發后觸發;根據事件對象中的persisted來判斷是否是緩存中的頁面觸發的pageshow事件,注意這個事件給window添加?

<body><script>// console.log(window.devicePixelRatio);window.addEventListener('pageshow', function() {alert(11);})</script><a href="http://www.itcast.cn">鏈接</a> </body>

元素滾動 scroll 系列

1. scroll 系列屬性

?2.被頁面卷去的頭部

如果瀏覽器的高(或寬)度不足以顯示整個頁面時,會自動出現滾動條。當滾動條向下滾動時,頁面上面被隱藏掉的高度,我們就稱為頁面被卷去的頭部。滾動條在滾動時會觸發 onscroll 事件。

<body><div>我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容 我是內容</div><script>// scroll 系列var div = document.querySelector('div');console.log(div.scrollHeight);console.log(div.clientHeight);// scroll滾動事件當我們滾動條發生變化會觸發的事件div.addEventListener('scroll', function() {console.log(div.scrollTop);})</script> </body>

3.仿淘寶固定側邊欄

(1)原先側邊欄是絕對定位

2當頁面滾動到一定位置,側邊欄改為固定定位

(3)頁面繼續滾動,會讓 返回頂部顯示出來

<body><div class="slider-bar"><span class="goBack">返回頂部</span></div><div class="header w">頭部區域</div><div class="banner w">banner區域</div><div class="main w">主體部分</div><script>//1. 獲取元素var sliderbar = document.querySelector('.slider-bar');var banner = document.querySelector('.banner');// banner.offestTop 就是被卷去頭部的大小 一定要寫到滾動的外面var bannerTop = banner.offsetTop// 當我們側邊欄固定定位之后應該變化的數值var sliderbarTop = sliderbar.offsetTop - bannerTop;// 獲取main 主體元素var main = document.querySelector('.main');var goBack = document.querySelector('.goBack');var mainTop = main.offsetTop;// 2. 頁面滾動事件 scrolldocument.addEventListener('scroll', function() {// console.log(11);// window.pageYOffset 頁面被卷去的頭部// console.log(window.pageYOffset);// 3 .當我們頁面被卷去的頭部大于等于了 172 此時 側邊欄就要改為固定定位if (window.pageYOffset >= bannerTop) {sliderbar.style.position = 'fixed';sliderbar.style.top = sliderbarTop + 'px';} else {sliderbar.style.position = 'absolute';sliderbar.style.top = '300px';}// 4. 當我們頁面滾動到main盒子,就顯示 goback模塊if (window.pageYOffset >= mainTop) {goBack.style.display = 'block';} else {goBack.style.display = 'none';}})// 當我們點擊了返回頂部模塊,就讓窗口滾動的頁面的最上方goBack.addEventListener('click', function() {// 里面的x和y 不跟單位的 直接寫數字即可// window.scroll(0, 0);// 因為是窗口滾動 所以對象是windowanimate(window, 0);});// 動畫函數function animate(obj, target, callback) {// console.log(callback); callback = function() {} 調用的時候 callback()// 先清除以前的定時器,只保留當前的一個定時器執行clearInterval(obj.timer);obj.timer = setInterval(function() {// 步長值寫到定時器的里面// 把我們步長值改為整數 不要出現小數的問題// var step = Math.ceil((target - obj.offsetLeft) / 10);var step = (target - window.pageYOffset) / 10;step = step > 0 ? Math.ceil(step) : Math.floor(step);if (window.pageYOffset == target) {// 停止動畫 本質是停止定時器clearInterval(obj.timer);// 回調函數寫到定時器結束里面// if (callback) {// // 調用函數// callback();// }callback && callback();}// 把每次加1 這個步長值改為一個慢慢變小的值 // 步長公式:(目標值 - 現在的位置) / 10// obj.style.left = window.pageYOffset + step + 'px';window.scroll(0, window.pageYOffset + step);}, 15);}</script> </body>

三大系列總結

(1)offset系列 經常用于獲得元素位置 ? ?offsetLeft ?offsetTop

(2)client 經常用于獲取元素大小 ?clientWidth ?clientHeight

(3)scroll 經常用于獲取滾動距離 ?scrollTop ?scrollLeft ?

注意頁面滾動的距離通過 window.pageXOffset ?獲得

mouseenter 和mouseover的區別

?動畫函數封裝

1.動畫原理

<body><div></div><script>// 動畫原理:通過定時器 setInterval() 不斷移動盒子位置。// 1. 獲得盒子當前位置 // 2. 讓盒子在當前位置加上1個移動距離// 3. 利用定時器不斷重復這個操作// 4. 加一個結束定時器的條件// 5. 注意此元素需要添加定位, 才能使用element.style.leftvar div = document.querySelector('div');var timer = setInterval(function() {if (div.offsetLeft >= 400) {// 停止動畫 本質是停止定時器clearInterval(timer);}div.style.left = div.offsetLeft + 1 + 'px';}, 30);</script> </body>

2.動畫函數簡單封裝

注意函數需要傳遞2個參數,動畫對象和移動到的距離。

// 簡單動畫函數封裝obj目標對象 target 目標位置function animate(obj, target) {var timer = setInterval(function() {if (obj.offsetLeft >= target) {// 停止動畫 本質是停止定時器clearInterval(timer);}obj.style.left = obj.offsetLeft + 1 + 'px';}, 30);}var div = document.querySelector('div');var span = document.querySelector('span');// 調用函數animate(div, 300);animate(span, 200);

3.動畫函數給不同元素記錄不同定時器

<body><button>點擊夏雨荷才走</button><div></div><span>夏雨荷</span><script>// var obj = {};// obj.name = 'andy';// 簡單動畫函數封裝obj目標對象 target 目標位置// 給不同的元素指定了不同的定時器function animate(obj, target) {// 當我們不斷的點擊按鈕,這個元素的速度會越來越快,因為開啟了太多的定時器// 解決方案就是 讓我們元素只有一個定時器執行// 先清除以前的定時器,只保留當前的一個定時器執行clearInterval(obj.timer);obj.timer = setInterval(function() {if (obj.offsetLeft >= target) {// 停止動畫 本質是停止定時器clearInterval(obj.timer);}obj.style.left = obj.offsetLeft + 1 + 'px';}, 30);}var div = document.querySelector('div');var span = document.querySelector('span');var btn = document.querySelector('button');// 調用函數animate(div, 300);btn.addEventListener('click', function() {animate(span, 200);})</script> </body>

4.緩動動畫

<body><button>點擊夏雨荷才走</button><span>夏雨荷</span><script>// 緩動動畫函數封裝obj目標對象 target 目標位置// 思路:// 1. 讓盒子每次移動的距離慢慢變小, 速度就會慢慢落下來。// 2. 核心算法:(目標值 - 現在的位置) / 10 做為每次移動的距離 步長// 3. 停止的條件是: 讓當前盒子位置等于目標位置就停止定時器function animate(obj, target) {// 先清除以前的定時器,只保留當前的一個定時器執行clearInterval(obj.timer);obj.timer = setInterval(function() {// 步長值寫到定時器的里面var step = (target - obj.offsetLeft) / 10;if (obj.offsetLeft == target) {// 停止動畫 本質是停止定時器clearInterval(obj.timer);}// 把每次加1 這個步長值改為一個慢慢變小的值 // 步長公式:(目標值 - 現在的位置) / 10obj.style.left = obj.offsetLeft + step + 'px';}, 15);}var span = document.querySelector('span');var btn = document.querySelector('button');btn.addEventListener('click', function() {// 調用函數animate(span, 500);})// 勻速動畫 就是 盒子是當前的位置 + 固定的值 10 // 緩動動畫就是 盒子當前的位置 + 變化的值(目標值 - 現在的位置) / 10)</script> </body>

5.緩動動畫多個目標值之間移動

<style>div {position: absolute;left: 0;width: 100px;height: 100px;background-color: pink;}span {position: absolute;left: 0;top: 200px;display: block;width: 150px;height: 150px;background-color: purple;}</style> </head><body><button class="btn500">點擊夏雨荷到500</button><button class="btn800">點擊夏雨荷到800</button><span>夏雨荷</span><script>// 緩動動畫函數封裝obj目標對象 target 目標位置// 思路:// 1. 讓盒子每次移動的距離慢慢變小, 速度就會慢慢落下來。// 2. 核心算法:(目標值 - 現在的位置) / 10 做為每次移動的距離 步長// 3. 停止的條件是: 讓當前盒子位置等于目標位置就停止定時器function animate(obj, target) {// 先清除以前的定時器,只保留當前的一個定時器執行clearInterval(obj.timer);obj.timer = setInterval(function() {// 步長值寫到定時器的里面// 把我們步長值改為整數 不要出現小數的問題// var step = Math.ceil((target - obj.offsetLeft) / 10);var step = (target - obj.offsetLeft) / 10;step = step > 0 ? Math.ceil(step) : Math.floor(step);if (obj.offsetLeft == target) {// 停止動畫 本質是停止定時器clearInterval(obj.timer);}// 把每次加1 這個步長值改為一個慢慢變小的值 步長公式:(目標值 - 現在的位置) / 10obj.style.left = obj.offsetLeft + step + 'px';}, 15);}var span = document.querySelector('span');var btn500 = document.querySelector('.btn500');var btn800 = document.querySelector('.btn800');btn500.addEventListener('click', function() {// 調用函數animate(span, 500);})btn800.addEventListener('click', function() {// 調用函數animate(span, 800);})// 勻速動畫 就是 盒子是當前的位置 + 固定的值 10 // 緩動動畫就是 盒子當前的位置 + 變化的值(目標值 - 現在的位置) / 10)</script> </body>

6.動畫函數添加回調函數并封裝到單獨的js文件

回調函數原理:函數可以作為一個參數。將這個函數作為參數傳到另一個函數里面,當那個函數執行完之后,再執行傳進去的這個函數,這個過程就叫做回調。

回調函數寫的位置:定時器結束的位置。

animate.js文件

function animate(obj, target, callback) {// console.log(callback); callback = function() {} 調用的時候 callback()// 先清除以前的定時器,只保留當前的一個定時器執行clearInterval(obj.timer);obj.timer = setInterval(function() {// 步長值寫到定時器的里面// 把我們步長值改為整數 不要出現小數的問題// var step = Math.ceil((target - obj.offsetLeft) / 10);var step = (target - obj.offsetLeft) / 10;step = step > 0 ? Math.ceil(step) : Math.floor(step);if (obj.offsetLeft == target) {// 停止動畫 本質是停止定時器clearInterval(obj.timer);// 回調函數寫到定時器結束里面// if (callback) {// // 調用函數// callback();// }callback && callback();}// 把每次加1 這個步長值改為一個慢慢變小的值 步長公式:(目標值 - 現在的位置) / 10obj.style.left = obj.offsetLeft + step + 'px';}, 15); }

常見網頁特效案例

1.網頁輪播圖

功能需求:

1.鼠標經過輪播圖模塊,左右按鈕顯示,離開隱藏左右按鈕。

2.點擊右側按鈕一次,圖片往左播放一張,以此類推, 左側按鈕同理。

3.圖片播放的同時,下面小圓圈模塊跟隨一起變化。

4.點擊小圓圈,可以播放相應圖片。

5.鼠標不經過輪播圖, 輪播圖也會自動播放圖片。

6.鼠標經過,輪播圖模塊, 自動播放停止。

7.節流閥

防止輪播圖按鈕連續點擊造成播放過快。

節流閥目的:當上一個函數動畫內容執行完畢,再去執行下一個函數動畫,讓事件無法連續觸發。 核心實現思路:利用回調函數,添加一個變量來控制,鎖住函數和解鎖函數。 ?

開始設置一個變量 var flag = true;

If(flag) {flag = false; do something} ? ? ? 關閉水龍頭

利用回調函數 動畫執行完畢, flag = true ? ? 打開水龍頭

window.addEventListener('load', function() {// 1. 獲取元素var arrow_l = document.querySelector('.arrow-l');var arrow_r = document.querySelector('.arrow-r');var focus = document.querySelector('.focus');var focusWidth = focus.offsetWidth;// 2. 鼠標經過focus 就顯示隱藏左右按鈕focus.addEventListener('mouseenter', function() {arrow_l.style.display = 'block';arrow_r.style.display = 'block';clearInterval(timer);timer = null; // 清除定時器變量});focus.addEventListener('mouseleave', function() {arrow_l.style.display = 'none';arrow_r.style.display = 'none';timer = setInterval(function() {//手動調用點擊事件arrow_r.click();}, 2000);});// 3. 動態生成小圓圈 有幾張圖片,我就生成幾個小圓圈var ul = focus.querySelector('ul');var ol = focus.querySelector('.circle');// console.log(ul.children.length);for (var i = 0; i < ul.children.length; i++) {// 創建一個小li var li = document.createElement('li');// 記錄當前小圓圈的索引號 通過自定義屬性來做 li.setAttribute('index', i);// 把小li插入到ol 里面ol.appendChild(li);// 4. 小圓圈的排他思想 我們可以直接在生成小圓圈的同時直接綁定點擊事件li.addEventListener('click', function() {// 干掉所有人 把所有的小li 清除 current 類名for (var i = 0; i < ol.children.length; i++) {ol.children[i].className = '';}// 留下我自己 當前的小li 設置current 類名this.className = 'current';// 5. 點擊小圓圈,移動圖片 當然移動的是 ul // ul 的移動距離 小圓圈的索引號 乘以 圖片的寬度 注意是負值// 當我們點擊了某個小li 就拿到當前小li 的索引號var index = this.getAttribute('index');// 當我們點擊了某個小li 就要把這個li 的索引號給 num num = index;// 當我們點擊了某個小li 就要把這個li 的索引號給 circle circle = index;// num = circle = index;console.log(focusWidth);console.log(index);animate(ul, -index * focusWidth);})}// 把ol里面的第一個小li設置類名為 currentol.children[0].className = 'current';// 6. 克隆第一張圖片(li)放到ul 最后面var first = ul.children[0].cloneNode(true);ul.appendChild(first);// 7. 點擊右側按鈕, 圖片滾動一張var num = 0;// circle 控制小圓圈的播放var circle = 0;// flag 節流閥var flag = true;arrow_r.addEventListener('click', function() {if (flag) {flag = false; // 關閉節流閥// 如果走到了最后復制的一張圖片,此時 我們的ul 要快速復原 left 改為 0if (num == ul.children.length - 1) {ul.style.left = 0;num = 0;}num++;animate(ul, -num * focusWidth, function() {flag = true; // 打開節流閥});// 8. 點擊右側按鈕,小圓圈跟隨一起變化 可以再聲明一個變量控制小圓圈的播放circle++;// 如果circle == 4 說明走到最后我們克隆的這張圖片了 我們就復原if (circle == ol.children.length) {circle = 0;}// 調用函數circleChange();}});// 9. 左側按鈕做法arrow_l.addEventListener('click', function() {if (flag) {flag = false;if (num == 0) {num = ul.children.length - 1;ul.style.left = -num * focusWidth + 'px';}num--;animate(ul, -num * focusWidth, function() {flag = true;});// 點擊左側按鈕,小圓圈跟隨一起變化 可以再聲明一個變量控制小圓圈的播放circle--;// 如果circle < 0 說明第一張圖片,則小圓圈要改為第4個小圓圈(3)// if (circle < 0) {// circle = ol.children.length - 1;// }circle = circle < 0 ? ol.children.length - 1 : circle;// 調用函數circleChange();}});function circleChange() {// 先清除其余小圓圈的current類名for (var i = 0; i < ol.children.length; i++) {ol.children[i].className = '';}// 留下當前的小圓圈的current類名ol.children[circle].className = 'current';}// 10. 自動播放輪播圖var timer = setInterval(function() {//手動調用點擊事件arrow_r.click();}, 2000);})

2.返回頂部

滾動窗口至文檔中的特定位置。

window.scroll(x, y)

注意,里面的x和y 不跟單位,直接寫數字

// 當我們點擊了返回頂部模塊,就讓窗口滾動的頁面的最上方goBack.addEventListener('click', function() {// 里面的x和y 不跟單位的 直接寫數字即可// window.scroll(0, 0);// 因為是窗口滾動 所以對象是windowanimate(window, 0);});// 動畫函數function animate(obj, target, callback) {clearInterval(obj.timer);obj.timer = setInterval(function() {var step = (target - window.pageYOffset) / 10;step = step > 0 ? Math.ceil(step) : Math.floor(step);if (window.pageYOffset == target) {// 停止動畫 本質是停止定時器clearInterval(obj.timer);callback && callback();}//移動距離為window.pageYOffset + step + 'px';window.scroll(0, window.pageYOffset + step);}, 15);}

移動端網頁特效

觸屏事件

1.觸屏事件touch

<style>div {width: 100px;height: 100px;background-color: pink;}</style> </head><body><div></div><script>// 1. 獲取元素// 2. 手指觸摸DOM元素事件var div = document.querySelector('div');div.addEventListener('touchstart', function() {console.log('我摸了你');});// 3. 手指在DOM元素身上移動事件div.addEventListener('touchmove', function() {console.log('我繼續摸');});// 4. 手指離開DOM元素事件div.addEventListener('touchend', function() {console.log('輕輕的我走了');});</script> </body>

2.觸摸事件對象(TouchEvent)

<script>// 觸摸事件對象// 1. 獲取元素// 2. 手指觸摸DOM元素事件var div = document.querySelector('div');div.addEventListener('touchstart', function(e) {// console.log(e);// touches 正在觸摸屏幕的所有手指的列表 // targetTouches 正在觸摸當前DOM元素的手指列表// 如果偵聽的是一個DOM元素,他們兩個是一樣的// changedTouches 手指狀態發生了改變的列表 從無到有 或者 從有到無// 因為我們一般都是觸摸元素 所以最經常使用的是 targetTouchesconsole.log(e.targetTouches[0]);// targetTouches[0] 就可以得到正在觸摸dom元素的第一個手指的相關信息//比如 手指的坐標等等});// 3. 手指在DOM元素身上移動事件div.addEventListener('touchmove', function() {});// 4. 手指離開DOM元素事件div.addEventListener('touchend', function(e) {// console.log(e);// 當我們手指離開屏幕的時候,就沒有了 touches 和 targetTouches 列表// 但是會有 changedTouches});</script>

3.移動端拖動元素

<script>// (1) 觸摸元素 touchstart: 獲取手指初始坐標,同時獲得盒子原來的位置// (2) 移動手指 touchmove: 計算手指的滑動距離,并且移動盒子// (3) 離開手指 touchend:var div = document.querySelector('div');var startX = 0; //獲取手指初始坐標var startY = 0;var x = 0; //獲得盒子原來的位置var y = 0;div.addEventListener('touchstart', function(e) {// 獲取手指初始坐標startX = e.targetTouches[0].pageX;startY = e.targetTouches[0].pageY;x = this.offsetLeft;y = this.offsetTop;});div.addEventListener('touchmove', function(e) {// 計算手指的移動距離: 手指移動之后的坐標減去手指初始的坐標var moveX = e.targetTouches[0].pageX - startX;var moveY = e.targetTouches[0].pageY - startY;// 移動我們的盒子 盒子原來的位置 + 手指移動的距離this.style.left = x + moveX + 'px';this.style.top = y + moveY + 'px';e.preventDefault(); // 阻止屏幕滾動的默認行為});</script>

移動端常見特效

1.移動端輪播圖

window.addEventListener('load', function() {// alert(1);// 1. 獲取元素 var focus = document.querySelector('.focus');var ul = focus.children[0];// 獲得focus 的寬度var w = focus.offsetWidth;var ol = focus.children[1];// 2. 利用定時器自動輪播圖圖片var index = 0;var timer = setInterval(function() {index++;// 移動距離=索引號*盒子寬度var translatex = -index * w;// 過渡ul.style.transition = 'all .3s';// 位移ul.style.transform = 'translateX(' + translatex + 'px)';}, 2000);// 等著我們過渡完成之后,再去判斷 監聽過渡完成的事件 transitionend ul.addEventListener('transitionend', function() {// 無縫滾動if (index >= 3) {index = 0;// console.log(index);// 去掉過渡效果 這樣讓我們的ul 快速的跳到目標位置ul.style.transition = 'none';// 利用最新的索引號乘以寬度 去滾動圖片var translatex = -index * w;ul.style.transform = 'translateX(' + translatex + 'px)';} else if (index < 0) {index = 2;ul.style.transition = 'none';// 利用最新的索引號乘以寬度 去滾動圖片var translatex = -index * w;ul.style.transform = 'translateX(' + translatex + 'px)';}// 3. 小圓點跟隨變化// 把ol里面li帶有current類名的選出來去掉類名:用classList.removeol.querySelector('.current').classList.remove('current');// 讓當前索引號 的小li 加上 current:用classList.addol.children[index].classList.add('current');});// 4. 手指滑動輪播圖 // 觸摸元素 touchstart: 獲取手指初始坐標var startX = 0;var moveX = 0; // 后面我們會使用這個移動距離所以要定義一個全局變量var flag = false;ul.addEventListener('touchstart', function(e) {startX = e.targetTouches[0].pageX;// 手指觸摸的時候就停止定時器clearInterval(timer);});// 移動手指 touchmove: 計算手指的滑動距離, 并且移動盒子ul.addEventListener('touchmove', function(e) {// 計算移動距離moveX = e.targetTouches[0].pageX - startX;// 移動盒子: 盒子原來的位置 + 手指移動的距離 var translatex = -index * w + moveX;// 手指拖動的時候,不需要動畫效果所以要取消過渡效果ul.style.transition = 'none';ul.style.transform = 'translateX(' + translatex + 'px)';flag = true; // 如果用戶手指移動過我們再去判斷否則不做判斷效果e.preventDefault(); // 阻止滾動屏幕的行為});// 手指離開 根據移動距離去判斷是回彈還是播放上一張下一張ul.addEventListener('touchend', function(e) {if (flag) {// (1) 如果移動距離大于50像素我們就播放上一張或者下一張if (Math.abs(moveX) > 50) {// 如果是右滑就是 播放上一張 moveX 是正值if (moveX > 0) {index--;} else {// 如果是左滑就是 播放下一張 moveX 是負值index++;}var translatex = -index * w;ul.style.transition = 'all .3s';ul.style.transform = 'translateX(' + translatex + 'px)';} else {// (2) 如果移動距離小于50像素我們就回彈var translatex = -index * w;ul.style.transition = 'all .1s';ul.style.transform = 'translateX(' + translatex + 'px)';}}// 手指離開的時候就重新開啟定時器clearInterval(timer);timer = setInterval(function() {index++;var translatex = -index * w;ul.style.transition = 'all .3s';ul.style.transform = 'translateX(' + translatex + 'px)';}, 2000);});// 返回頂部模塊制作var goBack = document.querySelector('.goBack');var nav = document.querySelector('nav');window.addEventListener('scroll', function() {if (window.pageYOffset >= nav.offsetTop) {goBack.style.display = 'block';} else {goBack.style.display = 'none';}});goBack.addEventListener('click', function() {window.scroll(0, 0);}) })

2.classList 屬性

classList屬性是HTML5新增的一個屬性,返回元素的類名。但是ie10以上版本支持。 該屬性用于在元素中添加,移除及切換 CSS 類。

<style>.bg {background-color: black;}</style> </head><body><div class="one two"></div><button> 開關燈</button><script>// classList 返回元素的類名var div = document.querySelector('div');// console.log(div.classList[1]);// 1. 添加類名 是在后面追加類名不會覆蓋以前的類名 注意前面不需要加.div.classList.add('three');// 2. 刪除類名div.classList.remove('one');// 3. 切換類var btn = document.querySelector('button');btn.addEventListener('click', function() {document.body.classList.toggle('bg');})</script> </body>

移動端常用開發插件

click 延時解決方案:

移動端 click 事件會有 300ms 的延時,原因是移動端屏幕雙擊會縮放(double tap to zoom) 頁面。

?3. 使用插件。 fastclick 插件解決 300ms 延遲。

<style>div {width: 50px;height: 50px;background-color: pink;}</style><script src="fastclick.js"></script> </head><body><div></div><script>if ('addEventListener' in document) {document.addEventListener('DOMContentLoaded', function() {FastClick.attach(document.body);}, false);}var div = document.querySelector('div');div.addEventListener('click', function() {alert(11);})</script> </body>

Swiper 插件的使用(輪播圖)

1.確認插件實現的功能

2.去官網查看使用說明

3.下載插件

4.打開demo實例文件,查看需要引入的相關文件,并且引入

5.復制demo實例文件中的結構html,樣式css以及js代碼

移動端常用開發框架

前端常用的框架有 Bootstrap、Vue、Angular、React 等。既能開發PC端,也能開發移動端

前端常用的移動端插件有 swiper、superslide、iscroll等。

Bootstrap 框架

是一個簡潔、直觀、強悍的前端開發框架,它讓 web 開發更迅速、簡單。 它能開發PC端,也能開發移動端

Bootstrap JS插件使用步驟:

1.引入相關js 文件

2.復制HTML 結構

3.修改對應樣式

4.修改相應JS 參數

本地存儲

特性:

1、數據存儲在用戶瀏覽器中

2、設置、讀取方便、甚至頁面刷新不丟失數據

3、容量較大,sessionStorage約5M、localStorage約20M

4、只能存儲字符串,可以將對象JSON.stringify() 編碼后存儲

  • 要實現從 JSON 字符串轉換為 JS 對象,使用 JSON.parse() 方法
  • 要實現從 JS 對象轉換為 JSON 字符串,使用 JSON.stringify() 方法

window.sessionStorage

?

<body><input type="text"><button class="set">存儲數據</button><button class="get">獲取數據</button><button class="remove">刪除數據</button><button class="del">清空所有數據</button><script>console.log(localStorage.getItem('username'));var ipt = document.querySelector('input');var set = document.querySelector('.set');var get = document.querySelector('.get');var remove = document.querySelector('.remove');var del = document.querySelector('.del');set.addEventListener('click', function() {// 當我們點擊了之后,就可以把表單里面的值存儲起來var val = ipt.value;sessionStorage.setItem('uname', val);sessionStorage.setItem('pwd', val);});get.addEventListener('click', function() {// 當我們點擊了之后,就可以把表單里面的值獲取過來console.log(sessionStorage.getItem('uname'));});remove.addEventListener('click', function() {// sessionStorage.removeItem('uname');});del.addEventListener('click', function() {// 當我們點擊了之后,清除所有的sessionStorage.clear();});</script> </body>

window.localStorage

?記住用戶名

如果勾選記住用戶名, 下次用戶打開瀏覽器,就在文本框里面自動顯示上次登錄的用戶名

<body><input type="text" id="username"> <input type="checkbox" name="" id="remember"> 記住用戶名<script>var username = document.querySelector('#username');var remember = document.querySelector('#remember');if (localStorage.getItem('username')) {username.value = localStorage.getItem('username');remember.checked = true;}remember.addEventListener('change', function() {if (this.checked) {localStorage.setItem('username', username.value)} else {localStorage.removeItem('username');}})</script> </body>

總結

以上是生活随笔為你收集整理的PC端和移动端网页特效,fastclick插件,Swiper插件,Bootstrap等框架,本地存储的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲最新视频在线播放 | 国产成人精品一二三区 | 精品一区二区日韩 | a天堂一码二码专区 | 国产精品九九久久久久久久 | 色资源中文字幕 | 日韩欧美在线播放 | 国外调教视频网站 | 视频 天天草 | 激情综合中文娱乐网 | 中文字幕视频在线播放 | av中文在线观看 | 亚洲91av| 久久国产一区 | 成人免费在线播放视频 | 99精品视频免费在线观看 | 日本婷婷色 | 欧美aaa视频 | 99久久精品无码一区二区毛片 | 久久久久成人精品免费播放动漫 | 成人av亚洲 | 久久99热这里只有精品 | 久久精品一区二区三 | 国产又粗又猛又黄又爽 | 激情久久综合网 | 中文字幕一区二区三 | 最近中文字幕在线播放 | 欧美激情第28页 | 中文字幕国产视频 | 亚洲精品久久久久中文字幕二区 | 97国产大学生情侣白嫩酒店 | 亚洲婷久久| 久久av一区二区三区亚洲 | 亚洲久草网 | 国产精品久久久久婷婷二区次 | 中文一区二区三区在线观看 | 探花视频在线观看免费版 | 日韩成人高清在线 | www日韩视频| 亚洲片在线资源 | 欧美黄色特级片 | 欧美日韩在线观看一区二区三区 | 色综合色综合久久综合频道88 | 国产精品视频免费在线观看 | 色天天综合久久久久综合片 | 久久人人爽av | 福利视频第一页 | 国产亚洲成人网 | 97精品国产97久久久久久 | 97成人资源| 久久在线免费 | 国产精品久久久一区二区三区网站 | 欧美性天天 | 久久五月天综合 | 日日躁夜夜躁xxxxaaaa | 亚洲精品国产自产拍在线观看 | 99九九免费视频 | 国产丝袜| 久草视频免费观 | 成人久久久久久久久久 | 亚洲成av人影院 | 久久xx视频 | 日韩一级电影网站 | 97人人澡人人爽人人模亚洲 | 天天爱天天操 | 中文av网| 中文字幕日韩av | 午夜视频不卡 | 国产一线在线 | 日韩综合在线观看 | 免费一级特黄毛大片 | 久久久久久久久影院 | 国产午夜精品久久久久久久久久 | 九九热精品在线 | 婷婷丁香在线视频 | 香蕉视频91 | 一二三区视频在线 | 国产精品va | 亚洲 精品在线视频 | www在线观看视频 | 国产一区二区免费 | 成人黄色电影免费观看 | 亚洲无人区小视频 | 久久综合偷偷噜噜噜色 | 国内精品久久久久影院男同志 | 婷婷视频 | 成人午夜性影院 | 天天干天天色2020 | 国产一区电影在线观看 | 日日干天天爽 | 国产精品免费在线播放 | 一区二区三区在线视频观看58 | 天天干天天插伊人网 | 成人av一二三区 | 美女黄频视频大全 | 又粗又长又大又爽又黄少妇毛片 | 99视频在线播放 | 成片人卡1卡2卡3手机免费看 | 久草国产精品 | 视频精品一区二区三区 | 久青草视频在线观看 | 国产资源在线免费观看 | 国产午夜一区二区 | 亚洲五月婷婷 | 色偷偷88欧美精品久久久 | 亚洲成人精品 | 91高清完整版在线观看 | 最近中文字幕免费大全 | 99久久久国产免费 | 亚洲h视频在线 | 四虎国产精品免费观看视频优播 | 日韩精品一区二区在线观看 | 91视频在线免费 | 国产在线2020 | 99久久婷婷 | 欧美日韩在线免费观看 | 亚洲三级av | 91最新网址| 免费在线电影网址大全 | 激情视频一区二区三区 | 亚洲少妇激情 | a精品视频 | av久久久 | 欧美日韩高清在线一区 | 国产精品ⅴa有声小说 | 欧美,日韩 | 国产一级电影 | 91麻豆精品国产91久久久更新时间 | 久草视频免费在线观看 | 综合久久影院 | 在线小视频 | 91精品国产乱码在线观看 | 午夜色站 | 91丨九色丨高潮 | 日日干综合| 成人一区二区三区在线 | 中文字幕在线观看一区 | 欧美久久久久久久久久久久久 | 一级a性色生活片久久毛片波多野 | 婷婷av在线| 狠狠操操 | 久草免费福利在线观看 | 亚洲成人xxx | 99久久国产免费,99久久国产免费大片 | 一级a性色生活片久久毛片波多野 | 婷婷免费视频 | 婷婷婷国产在线视频 | 一区二区三区日韩在线观看 | 日韩在线网址 | 国产一区二区精品91 | 国产高清无线码2021 | 欧美一级激情 | 色偷偷av男人天堂 | 国产91精品高清一区二区三区 | 久久综合中文色婷婷 | 超碰在线人人草 | 欧美人交a欧美精品 | 国产精品入口a级 | 国产精品9999久久久久仙踪林 | 99精品在线免费观看 | 日韩在线二区 | 国产亚洲精品美女久久 | 九月婷婷色| 亚洲毛片在线观看. | 成片视频在线观看 | 欧美亚洲另类在线视频 | 成人中文字幕在线观看 | 国产一区二区三区网站 | 国产精品18久久久久久久久 | 久久亚洲福利 | 天天综合导航 | 激情动态 | 亚洲最新精品 | 麻豆你懂的 | 欧美专区国产专区 | 国产一级片视频 | 绯色av一区 | 免费在线观看91 | 国产不卡免费 | 狠狠躁18三区二区一区ai明星 | 久久久国产精品久久久 | 精品在线观看免费 | 伊人天堂久久 | 嫩模bbw搡bbbb搡bbbb | 麻豆精品传媒视频 | 亚洲精品一区二区三区高潮 | 精品在线二区 | 夜夜看av | 九九色在线观看 | 不卡电影一区二区三区 | 黄色免费大全 | 色五月成人 | 午夜黄色| 五月在线视频 | 亚洲综合色丁香婷婷六月图片 | 日韩二区三区在线观看 | 久久久久久久久久久免费 | 精品欧美乱码久久久久久 | 一级a性色生活片久久毛片波多野 | 亚洲免费资源 | 精品国产一区二区三区不卡 | 在线观看成人av | 国产精品久久在线观看 | 午夜精品一区二区三区在线视频 | 日日夜夜网 | 亚洲午夜久久久影院 | 欧美性另类 | av韩国在线 | 午夜精品影院 | 欧美日韩精品国产 | 国产精品丝袜在线 | 天天爱天天操天天干 | 2024国产在线 | 亚洲国产精品va在线看 | 精品久久中文 | 久久久久久久国产精品 | 97在线免费| 在线色亚洲 | 天天操天天操天天操天天操 | 成人久久 | 丁香婷婷在线观看 | 欧美一区影院 | 在线日本看片免费人成视久网 | 91色一区二区三区 | 精品国产一区二区三区男人吃奶 | 久草在线99 | 最近能播放的中文字幕 | 97在线观 | av免费电影网站 | 波多野结衣电影一区 | 成人毛片在线观看视频 | bbbbb女女女女女bbbbb国产 | 97精品在线观看 | 欧美精品久久久久久久久免 | a级成人毛片 | 亚洲成av人影院 | 美女网站在线免费观看 | 97人人澡人人添人人爽超碰 | 久久天堂影院 | 911av视频| 国模吧一区 | 色吊丝在线永久观看最新版本 | 久久久久久免费视频 | 欧美日韩一级在线 | 蜜臀av性久久久久蜜臀av | 99精品免费在线观看 | 午夜在线看 | 久久网页 | 伊人一级 | 五月天网站在线 | 日韩在线观看网址 | 91在线播 | av电影 一区二区 | 在线观看免费观看在线91 | 91亚洲狠狠婷婷综合久久久 | 91爱在线| 精品国精品自拍自在线 | 久久久久久久国产精品 | 操久久网| 日韩午夜大片 | 亚洲乱码在线观看 | 伊人中文字幕在线 | 一区二区中文字幕在线 | 久久久久久久久久久久影院 | 超碰在线成人 | 国产黄色片一级 | 五月综合激情网 | 91福利区一区二区三区 | 99视频+国产日韩欧美 | 97视频人人免费看 | 成人电影毛片 | 国产一区二区精品久久91 | 久久久久久久久久久影视 | 日韩电影在线观看中文字幕 | 精品国产亚洲在线 | 亚洲最大的av网站 | 视频二区| 成人在线播放网站 | 狠狠插天天干 | 狠狠狠狠狠狠狠狠 | 国产在线视频一区 | 欧美日韩国产色综合一二三四 | 免费在线观看黄网站 | 成年人国产在线观看 | 四虎在线影视 | av网站免费在线 | 国产精品国产三级国产aⅴ无密码 | 日日操夜夜操狠狠操 | 久久视频一区 | 午夜精品一区二区三区可下载 | 9999精品免费视频 | 天天色天天操天天爽 | 99视频在线免费看 | 国产精品久久久久亚洲影视 | 天天爽夜夜爽人人爽曰av | 99在线观看 | 中文字幕在线一区观看 | 精品美女在线观看 | 中文乱码视频在线观看 | 国产精品18毛片一区二区 | 99精品亚洲 | 中文字幕一区2区3区 | 国产原厂视频在线观看 | 亚洲2019精品 | 午夜久久久久久久久久影院 | 久久精品免费观看 | 97成人精品区在线播放 | 亚洲一区视频在线播放 | 亚洲二区精品 | 人人超碰97 | 国产 日韩 欧美 中文 在线播放 | 久久精品www人人爽人人 | 亚州国产视频 | 色亚洲网| 日韩电影久久 | 成人国产精品免费 | 在线电影 一区 | 日韩高清精品免费观看 | av免费看网站 | 成人av片免费观看app下载 | 久久乐九色婷婷综合色狠狠182 | 99免费精品视频 | 久精品视频 | 狠狠躁夜夜躁人人爽超碰91 | 午夜三级理论 | 九九在线免费视频 | 亚洲艳情 | 亚洲影院色 | 亚洲精品在 | 伊人中文字幕在线 | 在线观看日韩中文字幕 | 久久久精品免费观看 | 国产高清视频在线免费观看 | 99亚洲天堂| 91福利国产在线观看 | 91av免费观看 | 国产日韩精品一区二区 | 久久久久久在线观看 | 国产a视频免费观看 | 国产极品尤物在线 | 日韩欧美中文 | 免费av一级电影 | 亚洲精品乱码白浆高清久久久久久 | 亚洲精品色婷婷 | 亚洲免费av在线 | 在线色资源 | 国产亚洲人成网站在线观看 | 国产亚洲日| 天天综合在线观看 | 久久这里只有精品23 | 国产中年夫妇高潮精品视频 | 免费国产亚洲视频 | 成人免费视频视频在线观看 免费 | 亚洲精品国精品久久99热 | 黄色影院在线免费观看 | 天堂av在线中文在线 | 国产精品自产拍在线观看 | 国产网站色 | 免费av高清| 麻豆av一区二区三区在线观看 | 日韩精品中字 | 亚洲国产精选 | 在线小视频国产 | 欧美精品乱码久久久久久按摩 | 国产高清av在线播放 | 特级毛片在线 | 五月婷婷中文网 | 成人在线免费视频观看 | 中文字幕一区三区 | 日韩免费在线观看 | 亚洲欧美日韩国产精品一区午夜 | 久热国产视频 | 婷婷久久精品 | 久久免费a | 视频在线在亚洲 | 中文字幕 国产视频 | 亚洲精品免费观看 | 久久99精品久久久久久秒播蜜臀 | 在线观看亚洲 | 日韩在线一级 | 久久精品99国产国产 | 干综合网 | 亚洲国产精品资源 | 超碰人人91 | 欧美精品网站 | av韩国在线 | 999电影免费在线观看2020 | 手机在线观看国产精品 | 国产乱老熟视频网88av | 99精品在线免费视频 | av日韩av | 欧美激情精品久久久久久 | 日日夜夜爱 | 91看片在线看片 | 天堂在线视频免费观看 | 久久婷综合 | 天天综合网天天 | 91精品国产综合久久福利不卡 | 久久久久久久久久久久久国产精品 | 亚洲精品一区二区三区四区高清 | 亚州精品在线视频 | 日韩精品免费一区 | 超碰人人在线观看 | 午夜av免费在线观看 | 免费视频二区 | 狠狠色丁香九九婷婷综合五月 | 国产视频不卡 | 亚州欧美视频 | 亚洲男人天堂2018 | 国产片免费在线观看视频 | 婷五月激情 | 久久精品久久99精品久久 | 国产日产精品一区二区三区四区 | 亚洲精品在线免费播放 | 免费看国产视频 | 永久免费毛片在线观看 | 五月天丁香 | 天天射天天干天天插 | 亚洲精品一区二区三区在线观看 | 欧美一区二视频在线免费观看 | 在线视频观看91 | 国产成人精品一区二区三区福利 | 福利一区在线视频 | 天天爽天天爽天天爽 | 色网站在线看 | 精品一区二区电影 | 久久久蜜桃 | 国产99久久久久 | 在线观看国产日韩欧美 | 免费看久久久 | 欧美成人一区二区 | 99精品免费视频 | 国产麻豆视频网站 | 国产四虎影院 | 日韩高清在线一区二区三区 | 成人网在线免费视频 | 一区二区三区福利 | 国产直播av| 波多野结衣视频一区 | 精品久久久久久亚洲综合网 | 久久午夜电影 | 在线综合 亚洲 欧美在线视频 | 午夜在线日韩 | av线上免费看 | av在线亚洲天堂 | 国产精品第一页在线观看 | 最新中文字幕在线观看视频 | 日韩在线免费看 | 91精品对白一区国产伦 | 高清免费在线视频 | 色综合天天干 | 亚州天堂 | 国产xx视频 | 亚洲视频在线播放 | 一区二区欧美日韩 | 一区二区三区高清在线观看 | www.日日操.com| 天天色天天搞 | 国产一区二区综合 | 中文字幕在线观看亚洲 | 久久精品国产美女 | 天堂av官网 | 欧美福利在线播放 | 超碰97人 | 一区二区三区电影 | 东方av在| a黄色片在线观看 | 国产精品福利av | 国产99久久99热这里精品5 | 97精品视频在线播放 | 亚洲va在线va天堂va偷拍 | 久久免费看片 | 欧美日韩中文字幕综合视频 | 国产成人免费高清 | 久久久久久久99精品免费观看 | 一区中文字幕电影 | 国产精品大片 | 色婷婷免费视频 | 亚洲最新在线视频 | 欧美大jb| 亚洲一区二区视频在线播放 | 91精品国产一区 | 综合色综合色 | 日韩欧美精品一区二区三区经典 | 国产又粗又猛又色 | 午夜视频在线观看一区二区三区 | 怡春院av| 最近中文字幕久久 | 成人一级片视频 | 九九视频网站 | 国产精品黄色在线观看 | 香蕉影院在线 | 国产在线视频在线观看 | 日日操日日 | 久久久久欠精品国产毛片国产毛生 | 亚洲视频分类 | av免费观看网站 | 欧美日韩中文字幕综合视频 | 亚洲视频在线视频 | 亚洲第一中文字幕 | 视频一区二区免费 | 日日夜夜干 | 日韩激情免费视频 | 久久久国产精品一区二区三区 | 久久精品久久精品久久精品 | 免费在线成人av | 91在线观看视频 | 精品一区二区在线免费观看 | 国产黄色av网站 | a级国产片 | 日韩91精品 | 91精品办公室少妇高潮对白 | 日韩精品中文字幕一区二区 | 国产精品国产三级国产 | 天天操夜操视频 | 99r在线播放 | 国产在线a不卡 | 欧美日韩精品综合 | 精品一区二区在线免费观看 | 五月综合色| 日韩精品观看 | 极品中文字幕 | 国产福利一区二区在线 | 久久视频这里有精品 | 日韩欧美成人网 | 欧美福利精品 | 国产永久免费观看 | 2021国产精品视频 | 91精品国产电影 | 免费 在线 中文 日本 | 国产精品18久久久久久vr | 热久久这里只有精品 | 欧美 国产 视频 | 99爱在线 | 亚洲丁香日韩 | 国产裸体视频bbbbb | 日韩专区在线播放 | 一级理论片在线观看 | 最近中文字幕免费 | 粉嫩高清一区二区三区 | 国产特级毛片aaaaaa高清 | 日韩中午字幕 | 欧美综合在线视频 | 久久久久免费网 | av资源免费在线观看 | 在线视频日韩精品 | www色综合 | 亚洲三级在线 | 欧洲精品亚洲精品 | 亚洲日本国产精品 | 粉嫩av一区二区三区四区五区 | 免费视频 三区 | 在线亚州 | 99精品区| 黄色av网站在线观看 | 91看片淫黄大片在线播放 | 成人亚洲精品国产www | 国产精品久久久久一区 | 麻豆播放 | av中文字幕在线播放 | 毛片网在线 | 激情欧美丁香 | 91精品国产综合久久婷婷香蕉 | 久草在线费播放视频 | 视频福利在线观看 | 国产日韩视频在线播放 | 久久免费高清视频 | 三级毛片视频 | 国产91综合一区在线观看 | 毛片网站免费在线观看 | 日韩最新在线视频 | 国产精品a久久久久 | 久久久久久久久久国产精品 | 久久经典国产 | 国产日韩一区在线 | 香蕉影院在线 | 四虎成人精品在永久免费 | 黄色av一区二区 | 91秒拍国产福利一区 | 99在线热播精品免费99热 | 免费污片 | 久久美女视频 | 成人av中文字幕在线观看 | 天堂网在线视频 | 日本中文乱码卡一卡二新区 | 91精品国产福利在线观看 | 免费在线电影网址大全 | 在线小视频国产 | 国产精品久久久久久久久久久久 | 久久久99精品免费观看 | 天天天操操操 | 天天弄天天干 | 久久国产精品电影 | 婷婷爱五月天 | 久久精品成人欧美大片古装 | 久久免费的精品国产v∧ | 久久影院中文字幕 | 日本久久中文字幕 | 亚洲精品国产拍在线 | 国产精品一区二区av日韩在线 | 日韩专区在线播放 | 91免费试看 | 夜夜夜夜夜夜操 | 人人射人人澡 | 久久综合成人 | 久久草网| 久久久国产精品成人免费 | 日韩精品久久久 | 黄色成人毛片 | 最新中文字幕在线资源 | 日本在线视频一区二区三区 | 日韩专区视频 | 亚洲精品乱码久久久久久久久久 | 免费又黄又爽视频 | 色婷婷一 | 久久午夜免费观看 | 91麻豆精品国产91久久久无需广告 | 日韩在线一二三区 | 五月天中文字幕 | 成人午夜毛片 | 国产精品不卡在线播放 | av免费观看高清 | 久久天天躁狠狠躁亚洲综合公司 | 久久久国产精品人人片99精片欧美一 | 伊人影院得得 | 久久国产一区 | 天天天色| 国产一级a毛片视频爆浆 | 91成人国产 | 精品国产1区2区3区 国产欧美精品在线观看 | 色综合天天综合网国产成人网 | 成人在线免费看 | 国产1级毛片 | 六月丁香激情综合 | 91免费高清 | 中文字幕日韩高清 | 91电影福利 | 国产精成人品免费观看 | 久久久久久免费毛片精品 | 国产探花 | 亚洲国产电影在线观看 | 香蕉网在线播放 | 在线观看一区二区视频 | 久久久久麻豆v国产 | 涩涩成人在线 | 欧美日韩另类视频 | 亚洲最大成人网4388xx | 最近中文字幕视频完整版 | 国产探花在线看 | 色综合天天天天做夜夜夜夜做 | 亚洲免费资源 | 国产综合香蕉五月婷在线 | 国产97碰免费视频 | 草久电影 | 97国产在线播放 | 婷婷中文字幕在线观看 | 久草国产精品 | 日本天天色 | 韩国视频一区二区三区 | ,午夜性刺激免费看视频 | 亚洲区另类春色综合小说 | 精品在线视频一区二区三区 | 欧洲成人av | 日韩精品免费在线 | 久久久久成人精品免费播放动漫 | 97电影手机 | 99久久精品日本一区二区免费 | 国产高清无av久久 | 成人a在线观看 | 在线国产小视频 | 成人av在线播放网站 | 国产精品99爱 | 久一久久 | www九九热| 69热国产视频| 婷婷在线看 | 免费av免费观看 | 中文字幕免费观看视频 | 日韩欧美精品在线 | 精品久久国产精品 | 精品999国产| 国产一区欧美在线 | 久久精彩免费视频 | 国产黄免费 | 国产免费久久久久 | 久久视频 | 99r在线播放 | 婷婷久草 | 天天操天天爽天天干 | 一级黄网 | 免费观看成人网 | 欧美一二三区在线观看 | 麻花豆传媒一二三产区 | 91精品国产欧美一区二区成人 | 亚洲电影在线看 | 日日干夜夜骑 | 三级黄色大片在线观看 | 日本久久久精品视频 | 久久视频免费看 | 日韩久久久久久 | www.久热| 久久伊99综合婷婷久久伊 | 免费成人在线网站 | 狠狠狠狠狠狠操 | av在线8 | 一区二区男女 | www.干| 深爱激情婷婷网 | 国产精品激情 | 国产又黄又硬又爽 | 在线成人免费电影 | 99在线精品视频 | 日韩影视在线观看 | 精品一区三区 | 国产精品毛片久久久久久久久久99999999 | 精品久久久久久亚洲综合网站 | 日本中文字幕在线一区 | 欧美日韩不卡在线观看 | 国产色区 | а中文在线天堂 | 福利网址在线观看 | 亚洲欧美日韩精品久久久 | 国产xxxxx在线观看 | 青草视频免费观看 | 97香蕉久久超级碰碰高清版 | 在线免费黄色av | 色爱区综合激月婷婷 | 欧美精品亚洲精品日韩精品 | 免费成人在线观看 | 成人av免费网站 | 狠狠的干狠狠的操 | 欧美淫aaa免费观看 日韩激情免费视频 | 国产精品一区久久久久 | 狠狠综合久久av | 九九久久久久久久久激情 | 成人一区二区在线 | 成人在线观看网址 | 久久y | 蜜臀久久99精品久久久酒店新书 | 久久婷综合 | 天天综合区 | 99免费在线视频 | 99热精品久久 | 免费无遮挡动漫网站 | 婷婷色5月 | 久久久久久国产精品999 | 91麻豆国产福利在线观看 | 久久久亚洲国产精品麻豆综合天堂 | 天天操天天操天天操天天操天天操天天操 | 国产日韩欧美精品在线观看 | 久久激情综合网 | 国产伦精品一区二区三区在线 | 成人av手机在线 | 久久免费视频在线观看6 | 青青久草在线视频 | 操久久免费视频 | 人人插人人澡 | 亚洲精品国产品国语在线 | 91九色视频观看 | 久久国产精品久久精品国产演员表 | 亚洲黄色在线播放 | 中文字幕第一页在线播放 | 欧美人人爱 | 黄污视频网站大全 | 又黄又爽免费视频 | 久久国产精品色av免费看 | 成人黄大片视频在线观看 | 在线看片中文字幕 | 亚洲精品中文字幕视频 | 色香网| 西西人体4444www高清视频 | 久久久精选 | 天天干天天操天天射 | 高清av免费一区中文字幕 | 在线看av的网址 | 有码中文字幕 | 成年人在线视频观看 | 夜夜骑天天操 | 久久久久久久久久免费视频 | 亚洲一区精品二人人爽久久 | 中文字幕在线观看免费高清电影 | 国产一级二级三级在线观看 | a国产精品 | av888av.com| 黄色国产在线观看 | 一区二区精品久久 | 午夜av影院 | 女人高潮特级毛片 | 日日添夜夜添 | 久久黄色美女 | 97精品国产aⅴ | 久久久精品日本 | 免费看v片网站 | 色av网站| 久久一区精品 | 成人99免费视频 | 久久超碰网 | 午夜精品视频福利 | 国产精品午夜av | 成年一级片 | 国产亚洲永久域名 | 精品日韩在线一区 | 黄色一级大片免费看 | 欧美日韩亚洲在线 | 成人免费观看视频大全 | 久久久久高清毛片一级 | 69久久久久久久 | 91黄色在线看 | 在线中文字幕网站 | 在线99 | 黄色在线观看www | 字幕网在线观看 | 天天草天天| 日韩电影一区二区三区 | 久久96国产精品久久99漫画 | 国产麻豆精品免费视频 | 精品国产理论片 | 中文字幕999 | 黄色91在线 | 福利视频一区二区 | 国产丝袜高跟 | 五月天亚洲综合 | 欧美一级欧美一级 | 久久久国产精品免费 | 精品视频国产 | 91成人免费看 | 成人性生交大片免费观看网站 | 久久国产精品一区二区三区 | 久久综合九色综合97_ 久久久 | 国内一区二区视频 | 在线精品亚洲 | 久久er99热精品一区二区 | 九九热免费精品视频 | 粉嫩aⅴ一区二区三区 | 国产黄影院色大全免费 | 日韩在线视频免费观看 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 国产精品久久久久久五月尺 | 中文字幕在线观看免费高清完整版 | 日韩精品欧美精品 | av线上看 | 999视频网站 | 色婷婷中文| 日韩欧美精品在线观看视频 | 国产黄色大全 | 青青久草在线 | 高清在线观看av | 欧美一区二区在线 | 色综合五月| 九九综合久久 | 国产美女精品人人做人人爽 | 国产精品乱码一区二区视频 | 久久综合视频网 | 亚洲aⅴ在线观看 | 日韩一区二区在线免费观看 | 国产美女在线精品免费观看 | 成人免费网站在线观看 | 欧美日韩在线视频免费 | 日韩高清不卡一区二区三区 | 天天搞天天干天天色 | 久久99精品久久久久久三级 | 成人a视频片观看免费 | 久久激情电影 | 国语对白少妇爽91 | 五月婷在线播放 | 国产97av | 涩涩色亚洲一区 | 国产精品视频区 | 五月开心色 | 天天干天天爽 | 国产美女免费视频 | 三级av中文字幕 | 国产中文字幕视频在线观看 | 国产日韩精品欧美 | 日韩免费在线播放 | 久久综合狠狠综合久久激情 | 91成人精品一区在线播放69 | 免费三级骚 | 久久不射电影网 | www.com操| 99在线观看免费视频精品观看 | 少妇高潮流白浆在线观看 | 亚洲永久精品视频 | 人人澡人人添人人爽一区二区 | 六月婷婷久香在线视频 | 人人讲| 在线观看av片 | 美女视频a美女大全免费下载蜜臀 | 狠狠色丁香久久婷婷综合_中 | 奇米先锋 | 日p视频| 亚洲欧美国产日韩在线观看 | 亚洲每日更新 | 欧美综合久久久 | 久久国产精品99精国产 | 免费av大片 | 久久精品96| 91激情视频在线观看 | 欧美精品被 | 久久国产精品久久久 | 日韩在线观看视频网站 | 国产精品久久毛片 | 亚洲成人在线免费 | 中文字幕在线观看视频免费 | 97中文字幕| 日韩欧美在线影院 | 香蕉视频网站在线观看 | 久久精品久久精品久久 | 色吊丝在线永久观看最新版本 | 中文字幕一区二区三区乱码在线 | av在线观 | 在线小视频你懂的 | 九九涩涩av台湾日本热热 | 亚洲砖区区免费 | 久久精品国产一区二区三 | 蜜臀久久99精品久久久久久网站 | 国产尤物一区二区三区 | 91精品导航 | 国产色拍| 中文字幕亚洲精品日韩 | 人人爽人人插 | 国产福利91精品一区 | 视频在线观看91 | 黄色片亚洲 | 日日夜夜精品免费视频 | 九九涩涩av台湾日本热热 | 免费h在线观看 | 久久精品在线视频 | 国产精品夜夜夜一区二区三区尤 | 国产一级片免费播放 | 97超碰人人澡人人爱学生 | 一区二区三区四区精品 | www.色五月.com | 女人18片 | 日韩精品视频在线免费观看 | 狠狠色伊人亚洲综合成人 | www.人人草 | 制服丝袜在线91 | 日日操网 | 色亚洲激情 | 不卡精品视频 | 久草视频99 | 在线观看国产成人av片 | 天天看天天干 | 国产精品观看在线亚洲人成网 | 欧美永久视频 | 波多野结衣资源 | 国产成人av片 | 婷婷伊人综合 | 久久久久久久看片 | 国产精品久久免费看 | 久久久久免费精品国产小说色大师 | 182午夜在线观看 | 国产一区二区三区在线免费观看 | 手机在线看a| 综合色中色 | 免费亚洲黄色 | 黄色一级大片在线免费看产 | 夜添久久精品亚洲国产精品 | 亚洲欧洲国产日韩精品 | 国产专区日韩专区 | 久久字幕 | 天天操夜夜操国产精品 | 久久成视频 | 大荫蒂欧美视频另类xxxx | www操操| 久久久久女教师免费一区 | 99精品欧美一区二区 | 欧美精品一二三 | 国产精品美女久久久久久2018 | 国产在线观看不卡 | 在线观看的a站 | 亚洲日韩中文字幕在线播放 | 国产日本高清 | 亚洲精品国产精品国自产观看 | 美女视频黄色免费 | 亚洲在线成人精品 | 天天摸天天舔天天操 | 97在线免费观看视频 | 一本一本久久a久久精品综合 | 亚洲精品 在线视频 | 国产视频在线免费观看 | 精品96久久久久久中文字幕无 | 狠狠狠色丁香综合久久天下网 | 亚洲视频在线观看 | 九九热在线免费观看 | 亚洲午夜精品福利 | 欧美91视频| 看片一区二区三区 | 在线一二区 | 91视频中文字幕 | 在线观看免费日韩 | 亚洲精品资源在线观看 | а天堂中文最新一区二区三区 | 中文字幕中文 | 国产亚洲视频在线观看 | 久久久精品日本 | 国产精品一区二区三区四 |