javascript實現(xiàn)懸浮跟隨框緩動效果
懸浮跟隨框是我們在網(wǎng)頁中經(jīng)常見到的效果,我們還是使用上一實例中的運動框架去實現(xiàn)。
1、定義一個運動函數(shù),當(dāng)觸發(fā)時調(diào)用,并且傳遞一個目標(biāo)位置作為參數(shù)
2、運動函數(shù)內(nèi)部,調(diào)用定時函數(shù),在定時函數(shù)內(nèi)部,先求出元素位置與目標(biāo)位置的距離差,然后除以一個數(shù)值作為速度(由于距離差一直在縮小,所以速度值也一直在變小,從而達到緩動效果)
3、由于網(wǎng)頁上位置設(shè)置最小單位是1px,所以在步驟二中的運算可能會出現(xiàn)小數(shù)的情況,我們需要對小數(shù)進行處理,否則元素到達的位置總是和目標(biāo)位置有1px的差距。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
?? ?<head>
?? ??? ?<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
?? ??? ?<title>New Web Project</title>
?? ??? ?<style>
?? ??? ??? ?#div1{
?? ??? ??? ??? ?width:100px;
?? ??? ??? ??? ?height:150px;
?? ??? ??? ??? ?background: red;
?? ??? ??? ??? ?border:1px solid #008000;
?? ??? ??? ??? ?right:0px;
?? ??? ??? ??? ?position: absolute;
?? ??? ??? ?}
?? ??? ??? ?#div2{
?? ??? ??? ??? ?width:1920px;
?? ??? ??? ??? ?height:1px;
?? ??? ??? ??? ?background:red;
?? ??? ??? ??? ?
?? ??? ??? ??? ?position: absolute;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ?</style>
?? ??? ?<script>
?? ??? ??? ?window.οnlοad=function(){
?? ??? ??? ??? ?var oDiv=document.getElementById('div1');
?? ??? ??? ??? ?var oDiv1=document.getElementById('div2');
?? ??? ??? ??? ?var timer=null;
?? ??? ??? ??? ?oDiv.style.top=(document.documentElement.clientHeight-oDiv.offsetHeight)/2+document.documentElement.scrollTop+'px';
?? ??? ??? ??? ?window.οnscrοll=function(){
?? ??? ??? ??? ??? ?var scrolltop=document.documentElement.scrollTop || document.body.scrollTop;
?? ??? ??? ??? ??? ?var iTarget=(document.documentElement.clientHeight-oDiv.offsetHeight)/2+scrolltop;
?? ??? ??? ??? ??? ?iTarget=Math.floor(iTarget);
?? ??? ??? ??? ??? ?oDiv1.style.top=iTarget+'px';
?? ??? ??? ??? ??? ?startMove(iTarget);
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?};
?? ??? ??? ??? ?function startMove(itarget){
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?clearInterval(timer);
?? ??? ??? ??? ??? ?timer=setInterval(function(){
?? ??? ??? ??? ??? ??? ?var iDis=itarget-oDiv.offsetTop;
?? ??? ??? ??? ??? ??? ?var speed=iDis/5;
?? ??? ??? ??? ??? ??? ?if(iDis>=0){
?? ??? ??? ??? ??? ??? ??? ?speed=Math.ceil(speed);//當(dāng)speed為小于1的數(shù)時,將它變?yōu)?,從而使元素位置移動一個像素,因為小于1的像素會被近似為0
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?else{
?? ??? ??? ??? ??? ??? ??? ?speed=Math.floor(speed);
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?if(oDiv.offsetTop==itarget)
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?clearInterval(timer);
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?else
?? ??? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ??? ?oDiv.style.top=oDiv.offsetTop+speed+'px';
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?document.title=oDiv.offsetTop;
?? ??? ??? ??? ??? ?},30);
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ?};
?? ??? ?</script>
?? ?</head>
?? ?<body style="height:2000px;">
?? ??? ?<div id="div1">
?? ??? ??? ?
?? ??? ?</div>
?? ??? ?
?? ?</body>
</html>運行結(jié)果圖:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js中document.getElementById(id)的具體用法
本文主要介紹了js中document.getElementById(id)的具體用法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
一定有你會用到的JavaScript一行代碼實用技巧總結(jié)
這篇文章主要為大家介紹了一定有你會用到的JavaScript一行代碼總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07
selenium 反爬蟲之跳過淘寶滑塊驗證功能的實現(xiàn)代碼
這篇文章主要介紹了selenium 反爬蟲之跳過淘寶滑塊驗證功能,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
微信小程序前端通過weixin://wxpay/bizpayurl生成支付二維碼全過程
這篇文章主要給大家介紹了關(guān)于微信小程序前端通過weixin://wxpay/bizpayurl生成支付二維碼的相關(guān)資料,weixin://wxpay/bizpayurl 是一個微信支付的鏈接地址,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-07-07

