微信小程序 按鈕固定在頁面底部遮住頁面顯示內容問題

咱們分爲如下部分來解決這個問題:小程序

第一部分:問題的表現是怎麼樣的?微信小程序

第二部分:問題的是如何實現的?微信

第三部分:如何解決問題?xss

 


 

第一部分:問題的表現是怎麼樣的?工具

我設置了頁面有0-99共100個數,可是最後幾個數字被底部固定的按鈕遮擋住了,顯示不全開發工具

 

第二部分:問題的是如何實現的?flex

第一步:首先實現按鈕固定在頁面底部,須要設置按鈕的position爲fixedthis

(注意:文章底部回帖出所有代碼,如下只是針對性的貼出此時正在說明的代碼)spa

index.wxml頁面:.net

<view class='btn-view'>
    <button class='btn'>底部按鈕</button>
</view>

index.wxss頁面:

.btn-view {
  width: 100%;
  padding: 20rpx 0;
  background-color: yellow;
  position: fixed;
  bottom: 0;
  left: 0;
}

.btn {
  width: 90%;
}

實現效果以下圖: 

 

 

第二步:給頁面填充數據

index.js頁面:

var list = []
for (var i = 0; i < 100; i++) {
    list.push(i)
}

this.setData({
    list:list
})

index.wxml頁面:

<view class='list'>
    <view class='li' wx:for='{{list}}' wx:key=''>{{item}}</view>
</view>

 

實現效果以下圖: 

 

結束以後,咱們就會發現,結果會如第一部分展現的那樣,按鈕遮擋住了頁面不部份內容😅...

 

第三部分:如何解決問題?

出現這個問題,我先嚐試給class=list的view添加了margin-bottom屬性,以下

.list {
  margin-bottom: 150rpx;
}

在開發工具上運行,完美解決!But...正如全部的美好都要經歷不止一次的磨難後方才實現同樣,當使用真機(iOS)運行時,問題依舊存在😅...

這個問題微信官網的論壇上也有人提,可是微信官方沒有給出回答(我看到的那個問題沒有回到)

問題還在,怎麼辦呢?

全部的問題都難不倒聰明的開發者😁下面來說講解決辦法:


 

方法一:在class爲list的view下面寫一個透明view,設置這個view的寬和高,以下:

此方法爲投機取巧的作法,可是很好用(偷笑...),誰讓微信小程序官方不給個正解呢!

index.wxml:

<view class='list'>
    <view class='li' wx:for='{{list}}' wx:key=''>{{item}}</view>
</view>
<view class='placeholder-view'></view>
<view class='btn-view'>
    <button class='btn'>底部按鈕</button>
</view>

index.wxss:

.placeholder-view {
  width: 100%;
  height: 150rpx;
}

顯示效果以下:全部內容都展現出來了

 

方法二:解決小程序position: fixed;定位在底部,遮擋頁面內容問題

看到這篇文章有解決,可是這個解決方法是:當頁面內容不足一屏時,按鈕在底部顯示,當內容多餘一屏時,按鈕會在內容下面隨內容一塊兒滾動

雖然說和咱們以前的初衷讓按鈕始終固定在底部有衝突,可是不失爲一種解決辦法,只要領導那邊能經過這種方法(不經過就用方法一,簡單、粗暴、有用)


 

完整代碼:

.wxml:

<view class="container">
  <view class='list'>
    <view class='li' wx:for='{{list}}' wx:key=''>{{item}}</view>
  </view>
  <view class='placeholder-view'></view>
  <view class='btn-view'>
    <button class='btn'>底部按鈕</button>
  </view>
</view>

.wxss:

.container {
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  box-sizing: border-box;
} 

.placeholder-view {
  width: 100%;
  height: 150rpx;
}

.btn-view {
  width: 100%;
  padding: 20rpx 0;
  background-color: yellow;
  position: fixed;
  bottom: 0;
  left: 0;
}

.btn {
  width: 90%;
}

.js:

Page({
  data: {
    list:[]
  },

  onLoad: function () {
    var list = []
    for (var i = 0; i < 100; i++) {
      list.push(i)
    }

    this.setData({
      list:list
    })
  }
})

方法二的代碼稍後整理出來再貼出來(待續...)

相關文章
相關標籤/搜索