H5頁面 絕對定位元素被 軟鍵盤彈出時頂起


H5頁面 絕對定位元素被 軟鍵盤彈出時頂起

在h5頁面開發的過程中,我們可能會遇到下面這個問題,當頁面中有輸入框的時候,系統自帶的軟盤會把按鈕擠出原來的位置。那么我們該怎么解決呢?下面列出一下的方法:

一:設置html和body高度,之后將按鈕相對於body定位 (這里的body需要設置高度為100%):

html,body{
    position:relative;
    height:100%;
    min-height:100%;
}
button{
    position:absolute;
    bottom:0;
}

二:利用 css sticky footer 進行頁面的排版

css sticky footer功能介紹:如果頁面內容不夠長的時候,頁腳塊粘貼在視窗底部;如果內容足夠長時,頁腳塊會被內容向下推送。(具體介紹請點擊傳送門

flex布局:傳送門 

 核心樣式代碼:

整個頁面的大容器(如body):

body{
  display:flex;
   flex-direction:column;
  min-height:100vh;
}

  

需要固定的元素,比如視窗底部,如果內容足夠長時,頁腳塊會被內容向下推送。

.footer{
  height: 100px;
}

內容的容器:

.content{
  flex: 1;
}

 

 

我們利用核心代碼寫一個小例子看看效果:

html:

<div class="header">
   header
</div>
<div class="content">
   content
</div>
<div class="footer"> footer </div>

css:

body{
  display:flex;
   flex-direction:column;
  min-height:100vh;
}
.header,.footer{
  width: 100%;
  height: 100px;
  background-color: #ddd;
  color: #fff;
}
.content{
  width: 100%;
  flex: 1;
  background-color: #000;
  color: #fff;
}

  

效果圖:

 

如果我們王content中添加內容,直到溢出:

html:

<div class="content">
       <h1>內容超出容器高度</h1>
       <h1>內容超出容器高度</h1>
       <h1>內容超出容器高度</h1>
       <h1>內容超出容器高度</h1>
       <h1>內容超出容器高度</h1>
       <h1>內容超出容器高度</h1>
       <h1>內容超出容器高度</h1>
       <h1>內容超出容器高度</h1>
        <h1>內容超出容器高度</h1>
       <h1>內容超出容器高度</h1>
        <h1>內容超出容器高度</h1>
        <h1>內容超出容器高度</h1>
        <h1>內容超出容器高度</h1>
        <h1>內容超出容器高度</h1>
        <h1>內容超出容器高度</h1>
        <h1>內容超出容器高度</h1>
    </div>

效果為:

    

 這個時候我們需要的效果就實現了。

 

三:利用~同輩選擇器進行頁面的排版(適用於輸入框和按鈕是同輩元素)

#contents:focus ~ button { display: none }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM