一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務(wù)器之家 - 編程語(yǔ)言 - JavaScript - js教程 - javascript實(shí)現(xiàn)固定側(cè)邊欄

javascript實(shí)現(xiàn)固定側(cè)邊欄

2022-01-20 16:36愛(ài)前端的茂茂 js教程

這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)固定側(cè)邊欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

用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

**代碼如下**

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!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)*/
 //被卷曲頭部的大小位置,寫在外面
 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>

演示效果

javascript實(shí)現(xiàn)固定側(cè)邊欄

代碼解釋

這里用到了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í)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/weixin_44029226/article/details/113738657

延伸 · 閱讀

精彩推薦
  • js教程11個(gè)Javascript小技巧幫你提升代碼質(zhì)量(小結(jié))

    11個(gè)Javascript小技巧幫你提升代碼質(zhì)量(小結(jié))

    這篇文章主要介紹了11個(gè)Javascript小技巧幫你提升代碼質(zhì)量(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需...

    alanyf6092021-12-21
  • js教程JS相冊(cè)圖片抖動(dòng)放大展示效果的示例代碼

    JS相冊(cè)圖片抖動(dòng)放大展示效果的示例代碼

    這篇文章主要介紹了JS相冊(cè)圖片抖動(dòng)放大展示效果的示例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下...

    weixin_339631896692022-01-12
  • js教程微信小程序選擇圖片控件

    微信小程序選擇圖片控件

    這篇文章主要為大家詳細(xì)介紹了微信小程序選擇圖片控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

    小雅雅家的小凱凱吖9812022-01-04
  • js教程JavaScript實(shí)現(xiàn)通訊錄功能

    JavaScript實(shí)現(xiàn)通訊錄功能

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)通訊錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

    書寫夢(mèng)想的鉛筆頭5732021-12-20
  • js教程微信小程序?qū)崿F(xiàn)下拉加載更多商品

    微信小程序?qū)崿F(xiàn)下拉加載更多商品

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)下拉加載更多商品,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

    保護(hù)我方豆豆8172021-12-22
  • js教程一個(gè)參數(shù)驗(yàn)證,學(xué)會(huì) Nest.js 的兩大機(jī)制:Pipe、ExceptionFilter

    一個(gè)參數(shù)驗(yàn)證,學(xué)會(huì) Nest.js 的兩大機(jī)制:Pipe、ExceptionFilter

    前端做表單的驗(yàn)證基本不用自己寫,有很多 validation 的庫(kù),大家寫的也比較多了。后端的驗(yàn)證大家可能寫的相對(duì)較少,今天我們就來(lái)學(xué)下后端框架 Nest.js 如...

    神光的編程秘籍10822021-12-28
  • js教程JS中箭頭函數(shù)與this的寫法和理解

    JS中箭頭函數(shù)與this的寫法和理解

    這篇文章主要給大家介紹了關(guān)于JS中箭頭函數(shù)與this的寫法和理解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需...

    limingru10412021-12-31
  • js教程js實(shí)現(xiàn)隨機(jī)點(diǎn)名

    js實(shí)現(xiàn)隨機(jī)點(diǎn)名

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)隨機(jī)點(diǎn)名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下...

    搬磚大法10112022-01-04
主站蜘蛛池模板: 天海翼最新 | 精品视频 九九九 | 国产高清视频网站 | 91制片厂果冻传媒杨柳作品 | 99热这里只有精品国产在热久久 | 欧美激情亚洲 | 啪啪大幂幂被c | 我要看逼 | 99热久久国产精品这里 | 久久婷婷五月综合色精品首页 | 欧美精品一区二区三区久久 | 日b在线 | 国产免费大片 | 91国语精品自产拍在线观看一 | 欧美一级免费看 | 疯狂伦交1一6小说 | 风间由美一区二区播放合集 | 狠狠色婷婷狠狠狠亚洲综合 | 亚洲精品动漫在线观看 | 九九精品视频在线观看九九 | 国产一级片免费观看 | 二次元美女互摸隐私互扒 | 动漫美女人物被黄漫小说 | 91久久线看在观草草青青 | 国产成人综合久久精品红 | 国产日产国无高清码2020 | 男人的j伸到女人的屁股眼 男人吃奶动态图 | 男人的天堂comwww| 久久国产加勒比精品无码 | 教师系列 大桥未久在线 | 2019午夜福合集高清完整版 | 免费看男女做好爽好硬视频 | 日韩一级生活片 | 久久精品国产清白在天天线 | 精品综合久久久久久8888 | 亚洲精品中文字幕第一区 | 亚洲天堂一区二区在线观看 | 日韩在线观看免费 | 成人资源影音先锋久久资源网 | 亚洲天天综合 | 久久伊人免费 |