javascript實(shí)現(xiàn)固定側(cè)邊欄
用javascript實(shí)現(xiàn)固定側(cè)邊欄,供大家參考,具體內(nèi)容如下
正在學(xué)習(xí)大前端中,有代碼和思路不規(guī)范不正確的地方往多多包涵,感謝指教
我們?cè)诠淠衬成坛堑臅r(shí)候,或者某些網(wǎng)站的時(shí)候,通常會(huì)遇到有個(gè)東西叫做側(cè)邊欄,這個(gè)東西會(huì)跟隨我們?yōu)g覽器瀏覽長(zhǎng)度來(lái)進(jìn)行變化1,從而實(shí)現(xiàn)相對(duì)窗口的固定位置1
**代碼如下**
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.cm{
position: absolute;
top: 300px;
margin-left: 1150px;
width: 60px;
height: 130px;
background-color: pink;
}
.w{
margin: 10px auto;
width: 80%;
}
.head{
height: 200px;
background-color: blue;
}
.banner{
height: 400px;
background-color: green;
}
.main{
height: 1000px;
background-color: hotpink;
}
span {
display: none;
/*position: absolute;
bottom: 0;*/
}
</style>
</head>
<body>
<div class="cm">
<span class="backTop">返回頂部</span>
</div>
<div class="head w">頭部區(qū)域</div>
<div class="banner w">banner區(qū)域</div>
<div class="main w">主體區(qū)域</div>
<script>
var cm=document.querySelector('.cm')
var banner=document.querySelector('.banner')
/*console.log(banner.offsetTop)*/
//被卷曲頭部的大小位置,寫(xiě)在外面
var bannertop=banner.offsetTop
var cmtop=cm.offsetTop-bannertop
var main=document.querySelector('.main')
var goback=document.querySelector('.backTop')
var maintop=main.offsetTop
document.addEventListener('scroll',function () {
//頁(yè)面被卷去的頭部
/*console.log(window.pageYOffset)*/
//當(dāng)卷曲頭部大于214,側(cè)邊欄改為固定
if (window.pageYOffset>bannertop){
cm.style.position='fixed'
cm.style.top=cmtop+'px'
}else {
cm.style.position='absolute'
cm.style.top='300px'
}
if (window.pageYOffset>maintop){
goback.style.display='block'
}else {
goback.style.display='none'
}
})
</script>
</body>
</html>
演示效果

代碼解釋
這里用到了document的添加事件scroll,瀏覽器滾動(dòng)事件,當(dāng)滾動(dòng)時(shí),觸發(fā)函數(shù)。
這里設(shè)置了一個(gè)變量為bannerTop,是中間那個(gè)綠色模塊頂部距離頁(yè)面最上方的距離,然后定義cmtop這個(gè)變量,cm為側(cè)邊欄到頂部的距離,cmtop=bannerTop-cm.offsetTop。然后判斷頁(yè)面卷曲的長(zhǎng)度是否大于中間那個(gè)模塊距離頂部的距離,意思的頁(yè)面是否劃到中間這個(gè)模塊,如果劃到了中間這個(gè)模塊,那么讓側(cè)邊欄的位置固定,然后側(cè)邊欄距離頂部的距離相應(yīng)改變,這里這個(gè)情況因?yàn)閭?cè)邊欄與中間拿塊是相對(duì)靜止,所以,未卷到中間區(qū)域時(shí),cmtop的值是恒定不變的,當(dāng)卷到中間區(qū)域時(shí),banner。Top的值變?yōu)樨?fù)值,所以cmtop的值在相應(yīng)的增加,并且把這個(gè)增加的值傳給側(cè)邊欄距離頂部的值,這也就出現(xiàn)了劃到中間區(qū)域,側(cè)邊欄相對(duì)靜止的情況。如果沒(méi)有滑倒中間區(qū)域,那么側(cè)邊欄的位置還是默認(rèn)的位置。
然后如果劃到了最后一個(gè)區(qū)域則出現(xiàn)‘回到頂部'這四個(gè)字在側(cè)邊欄上。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 博客側(cè)邊欄模塊跟隨滾動(dòng)條滑動(dòng)固定效果的實(shí)現(xiàn)方法(js+jquery等)
- javascript實(shí)現(xiàn)動(dòng)態(tài)側(cè)邊欄代碼
- javascript 實(shí)現(xiàn)動(dòng)態(tài)側(cè)邊欄實(shí)例詳解
- 利用js編寫(xiě)響應(yīng)式側(cè)邊欄
- JS實(shí)現(xiàn)側(cè)邊欄鼠標(biāo)經(jīng)過(guò)彈出框+緩沖效果
- JavaScript實(shí)現(xiàn)簡(jiǎn)單的隱藏式側(cè)邊欄功能示例
- 基于slideout.js實(shí)現(xiàn)移動(dòng)端側(cè)邊欄滑動(dòng)特效
- JS運(yùn)動(dòng)框架之分享側(cè)邊欄動(dòng)畫(huà)實(shí)例
- JavaScript中實(shí)現(xiàn)無(wú)縫滾動(dòng)、分享到側(cè)邊欄實(shí)例代碼
- js+css實(shí)現(xiàn)全屏側(cè)邊欄
- JS實(shí)現(xiàn)京東商品分類(lèi)側(cè)邊欄
- JS實(shí)現(xiàn)頁(yè)面?zhèn)冗厵谛Ч骄?/a>
相關(guān)文章
SpringMVC restful 注解之@RequestBody進(jìn)行json與object轉(zhuǎn)換
這篇文章主要介紹了SpringMVC restful 注解之@RequestBody進(jìn)行json與object轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2015-12-12
原生js實(shí)現(xiàn)一個(gè)放大鏡效果超詳細(xì)
這篇文章主要介紹了原生js實(shí)現(xiàn)一個(gè)放大鏡效果超詳細(xì),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
JavaScript中如何使用cookie實(shí)現(xiàn)記住密碼功能及cookie相關(guān)函數(shù)介紹
cookie是網(wǎng)站設(shè)計(jì)者放置在客戶(hù)端(瀏覽器)的小文本文件,cookie不僅能夠?qū)崿F(xiàn)保存密碼功能,還可以通過(guò)cookie保存最近瀏覽記錄增加用戶(hù)體驗(yàn)。本文給大家介紹js使用cookie實(shí)現(xiàn)記住密碼功能及cookie相關(guān)函數(shù)講解,感興趣的朋友一起看看吧2016-11-11
第一次動(dòng)手實(shí)現(xiàn)bootstrap table分頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了第一次動(dòng)手實(shí)現(xiàn)bootstrap table分頁(yè)效果的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
layer關(guān)閉當(dāng)前窗口頁(yè)面以及確認(rèn)取消按鈕的方法
今天小編就為大家分享一篇layer關(guān)閉當(dāng)前窗口頁(yè)面以及確認(rèn)取消按鈕的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
bootstrap模態(tài)框遠(yuǎn)程示例代碼分享
這篇文章主要為大家詳細(xì)介紹了bootstrap模態(tài)框遠(yuǎn)程示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
關(guān)于flash遮蓋div浮動(dòng)層的解決方法
關(guān)于flash遮蓋div浮動(dòng)層2010-07-07
js獲取RadioButtonList的Value/Text及選中值等信息實(shí)現(xiàn)代碼
RadioButtonList的Value,Text及選中值等信息想必有很多的朋友都想獲取到,接下來(lái)將為你介紹下如何使用js獲取,代碼很詳細(xì),感興趣的你可以參考下,或許對(duì)你有所幫助2013-03-03

