原生js實(shí)現(xiàn)吸頂效果
實(shí)現(xiàn)思路如下:
1. div初始居普通文檔流中
2. 給window添加scroll事件(可事件節(jié)流),獲取div的offset的top值,滾動(dòng)時(shí)scrollTop值和top比較,當(dāng)?shù)竭_(dá)top時(shí)給div添加一個(gè)fixed的class使其固定
3. 向上滾動(dòng)時(shí)當(dāng)?shù)竭_(dá)div初始top時(shí)則刪除fixed的class,此時(shí)div又回到普通文檔流中
4. fixed樣式非IE6瀏覽器使用position:fixed,IE6使用position:absolute和IE expression
效果圖:

代碼如下:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>無(wú)標(biāo)題文檔</title>
<style>
* {
margin: 0;
padding: 0;
}
#div1 {
width: 100%;
height: 50px;
background: skyblue;
}
</style>
<script>
window.onload = function() {
var oDiv = document.getElementById('div1');
var divT = oDiv.offsetTop;
//console.log(divT);
window.onscroll = function() {
// 獲取當(dāng)前頁(yè)面的滾動(dòng)條縱坐標(biāo)位置 (依次為火狐谷歌、safari、IE678)
var scrollT = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
if (scrollT >= divT) {
if (window.navigator.userAgent.indexOf('MSIE 6.0') != -1) {
// 兼容IE6代碼
oDiv.style.position = 'absolute';
oDiv.style.top = scrollT + 'px';
oDiv.style.left = 0 + 'px';
} else {
// 正常瀏覽器代碼
oDiv.style.position = 'fixed';
oDiv.style.top = 0;
oDiv.style.left = 0;
}
} else
oDiv.style.position = '';
}
}
</script>
</head>
<body>
<div class="all">
以上<br>
以上<br>
以上<br>
以上<br>
以上<br>
以上<br>
以上<br>
<div id="div1"></div>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
啦啦啦啦啦<br>
</div>
</body>
</html>
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
uniapp開(kāi)發(fā)小程序?qū)崿F(xiàn)滑動(dòng)頁(yè)面控制元素的顯示和隱藏效果
這篇文章主要介紹了uniapp開(kāi)發(fā)小程序?qū)崿F(xiàn)滑動(dòng)頁(yè)面控制元素的顯示和隱藏效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
js中的bigint類型轉(zhuǎn)化為json字符串時(shí)報(bào)無(wú)法序列化的問(wèn)題
JSON序列化指將JSON對(duì)象轉(zhuǎn)換為JSON字符串,J實(shí)現(xiàn)方式有兩種:一種是調(diào)用JSON對(duì)象內(nèi)置的stringify()函數(shù),一種是為對(duì)象自定義toJSON()函數(shù),本文重點(diǎn)介紹js中的bigint類型轉(zhuǎn)化為json字符串時(shí)報(bào)無(wú)法序列化的問(wèn)題,感興趣的朋友一起看看吧2024-01-01
小議Function.apply()之二------利用Apply的參數(shù)數(shù)組化來(lái)提高 JavaScript程序性能
小議Function.apply()之二------利用Apply的參數(shù)數(shù)組化來(lái)提高 JavaScript程序性能...2006-11-11
js實(shí)現(xiàn)獲取當(dāng)前時(shí)間是本月第幾周的方法
這篇文章主要介紹了js實(shí)現(xiàn)獲取當(dāng)前時(shí)間是本月第幾周的方法,涉及javascript針對(duì)日期及時(shí)間的相關(guān)操作技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-08-08
javascript移動(dòng)端 電子書(shū) 翻頁(yè)效果實(shí)現(xiàn)代碼
這篇文章主要介紹了javascript移動(dòng)端 電子書(shū) 翻頁(yè)效果實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
利用原生的JavaScript實(shí)現(xiàn)簡(jiǎn)單拼圖游戲
拼圖游戲是我們大家都玩過(guò)的一款小游戲,下面這篇文章主要給大家介紹了關(guān)于如何利用原生的JavaScript實(shí)現(xiàn)簡(jiǎn)單拼圖游戲的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-11-11
微信小程序修改數(shù)組長(zhǎng)度的問(wèn)題的解決
這篇文章主要介紹了微信小程序修改數(shù)組長(zhǎng)度的問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
javascript 數(shù)據(jù)存儲(chǔ)的常用函數(shù)總結(jié)
這篇文章主要介紹了javascript 數(shù)據(jù)存儲(chǔ)的常用函數(shù)總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-06-06

