導航欄透明漸變效果
實現原理
- 利用position:absolute在導航下定位一個view作為背景漸變使用;
- 通過改變改view的opacity來實現透明漸變。
WXML
<!--pages/scroll/scroll.wxml--> <view style="height:100%;position:fixed;width:100%;"> <scroll-view scroll-y="false" bindscroll="scroll" style="height:100%;"> <view class="page-group"> <view class="page-group-position" style="opacity:{{scrollTop / 400 > 0.9 ? 0.9 : scrollTop / 400}}"></view> <view class="page-nav-list"><text>首頁</text></view> <view class="page-nav-list"><text>活動</text></view> <view class="page-nav-list"><text>菜單</text></view> <view class="page-nav-list"><text>我的</text></view> </view> <view class="page-banner"> banner </view> <view class="goods-list"> goods-list1 </view> <view class="goods-list list2"> goods-list2 </view> <view class="goods-list list3"> goods-list3 </view> <view class="goods-list list4"> goods-list4 </view> </scroll-view> </view>
WXSS
.page-banner{height: 500rpx;background-color: greenyellow;padding: 20rpx;color:#fff;padding-top: 100rpx;}
.page-group{ display: table; width: 100%; table-layout: fixed; position: fixed; top: 0; left: 0; z-index: 10; }
.page-group-position{ width: 100%; height: 100%; position: absolute; top: 0; left: 0; background-color: blueviolet; opacity: 0; z-index: -1; }
.page-nav-list{ padding:30rpx 0 ; display: table-cell; text-align: center; width: 100%; color: #fff; }
.goods-list{ height: 500rpx; background-color: green; padding: 20rpx; color:#fff; }
.list2{background-color: blue;}
.list3{background-color: yellow;}
.list4{background-color: red;}
JS
Page({
data: {
scrollTop: null
},
//滾動條監聽
scroll: function (e) {
this.setData({ scrollTop: e.detail.scrollTop })
},
})
總結:
1. 需要scroll-view組件配合使用才能獲取scrollTop;
2. scrollTop / 400 > 0.9,這里400的距離是根據需求改變,0.9是背景最后的半透明值,可以根據頁面調節。