微信小程序?qū)崿F(xiàn)簡單吸頂效果
本文實例為大家分享了微信小程序?qū)崿F(xiàn)吸頂效果的具體代碼,供大家參考,具體內(nèi)容如下
吸頂效果思路:
1.首先獲取 Tab 欄與頂部的距離;
2.監(jiān)聽頁面滾動事件 onPageScroll,判斷 Tab 欄是否滾動到頂部;
3.當 Tab 欄滾動到頂部時,添加吸頂樣式,實現(xiàn)效果。
Page({ ? data: { ? ? navbarInitTop: 0, //導(dǎo)航欄初始化距頂部的距離 ? ? isFixedTop: false, //是否固定頂部 ? }, ? ? /** ? ?* 生命周期函數(shù)--監(jiān)聽頁面加載 ? ?*/ ? onLoad: function(options) { ? ? }, ? ? /** ? ?* 生命周期函數(shù)--監(jiān)聽頁面顯示 ? ?*/ ? onShow: function() { ? ? var that = this; ? ? if (that.data.navbarInitTop == 0) { ? ? ? //獲取節(jié)點距離頂部的距離 ? ? ? wx.createSelectorQuery().select('#navbar').boundingClientRect(function(rect) { ? ? ? ? if (rect && rect.top > 0) { ? ? ? ? ? var navbarInitTop = parseInt(rect.top); ? ? ? ? ? that.setData({ ? ? ? ? ? ? navbarInitTop: navbarInitTop ? ? ? ? ? }); ? ? ? ? } ? ? ? }).exec(); ? ? ? } ? }, ? ? /** ? ?* 監(jiān)聽頁面滑動事件 ? ?*/ ? onPageScroll: function(e) { ? ? var that = this; ? ? var scrollTop = parseInt(e.scrollTop); //滾動條距離頂部高度 ? ? //判斷'滾動條'滾動的距離 和 '元素在初始時'距頂部的距離進行判斷 ? ? var isSatisfy = scrollTop >= that.data.navbarInitTop ? true : false; ? ? // 只有處于吸頂?shù)呐R界值才會不相等 ? ? if (that.data.isFixedTop === isSatisfy) { ? ? ? return false; ? ? } ? ? ? that.setData({ ? ? ? isFixedTop: isSatisfy ? ? }); ? } })
代碼部分
<view style="width: 90%; height: 300rpx; background: #f0f0f0; margin: 30rpx auto;"></view> <view style="width: 90%; height: 300rpx; background: #f0f0f0; margin: 30rpx auto;"></view> ? <view class="navbar-wrap"> ? <view class="column {{isFixedTop?'fixed':''}}" id="navbar"> ? ? <view class="block active">新品推薦</view> ? ? <view class="block">限時優(yōu)惠</view> ? ? <view class="block">火爆熱搜</view> ? ? <view class="block">猜你喜歡</view> ? </view> ? <!-- 用于吸頂后 占位用的 --> ? <view class="column" wx:if="{{isFixedTop}}"></view> </view> ? <block wx:for="{{20}}" wx:key="list"> ? <view style="width: 100%; height: 120rpx; background: #f0f0f0; margin: 20rpx auto;"></view> </block>
頁面樣式:
view, text { ? box-sizing: border-box; ? -moz-box-sizing: border-box; ? -webkit-box-sizing: border-box; } ? .navbar-wrap { ? width: 100%; } ? .navbar-wrap .column { ? width: 100%; ? height: 80rpx; ? display: flex; ? flex-direction: row; ? align-items: center; ? justify-content: space-around; ? background: #fff; ? border-bottom: solid 1px #eee; ? ? top: 0; ? left: 0; ? z-index: 100; } ? .navbar-wrap .column.fixed { ? position: fixed; } ? /* 以下的代碼不重要 */ ? .navbar-wrap .column .block { ? width: 25%; ? height: 80rpx; ? line-height: 80rpx; ? text-align: center; ? font-size: 30rpx; ? color: #333; ? letter-spacing: 1px; ? position: relative; } ? .navbar-wrap .column .block::after { ? content: ""; ? width: 60%; ? height: 3px; ? border-radius: 2px; ? position: absolute; ? bottom: 0; ? left: 50%; ? transform: translateX(-50%); ? background: transparent; } ? .navbar-wrap .column .block.active { ? color: #1490ce; ? font-weight: bold; } ? .navbar-wrap .column .block.active::after { ? background: linear-gradient(160deg, rgba(8, 220, 230, 0.7) 10%, rgba(0, 140, 255, 0.7) 90%); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Javascript將圖片的絕對路徑轉(zhuǎn)換為base64編碼的方法
這篇文章主要介紹了Javascript將圖片的絕對路徑轉(zhuǎn)換為base64編碼的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01JS實現(xiàn)移動端點擊按鈕復(fù)制文本內(nèi)容
本文通過實例代碼給大家介紹了移動端點擊按鈕復(fù)制文本內(nèi)容 ,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07最簡單的JavaScript驗證整數(shù)、小數(shù)、實數(shù)、有效位小數(shù)正則表達式
這篇文章主要介紹了最簡單的JavaScript驗證整數(shù)、小數(shù)、實數(shù)、有效位小數(shù)正則表達式,其中包含保留1位小數(shù)、保留2位小數(shù)、保留3位小數(shù)等正則,需要的朋友可以參考下2015-04-04極力推薦一款小巧玲瓏的可視化編輯器bootstrap-wysiwyg
這篇文章主要為大家極力推薦一款小巧玲瓏的可視化編輯器bootstrap-wysiwyg,是一款基于jquery和bootstrap的可視化編輯器,感興趣的小伙伴們可以參考一下2016-05-05JavaScript中for..in循環(huán)陷阱介紹
for...in循環(huán)中的循環(huán)計數(shù)器是字符串,而不是數(shù)字它包含當前屬性的名稱或當前數(shù)組元素的索引,下面有個不錯的示例大家可以參考下2013-11-11兼容IE/Firefox/Opera/Safari的檢測頁面裝載完畢的腳本Ext.onReady的實現(xiàn)
其中對于IE的檢測很有意思。 以上代碼,整理自Extjs的腳本,完全可以代替 Ext.onReady使用。2009-07-07