-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy path23_移动端fixed定位、input被遮挡解决.html
139 lines (130 loc) · 3.68 KB
/
23_移动端fixed定位、input被遮挡解决.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no,minimal-ui" />
<style>
html {
height: 100%;
}
body {
margin: 0;
height: 100%;
}
.Header {
/*将原本的fixed定位转换成absolute定位*/
position: absolute;
height: 50px;
left: 0;
right: 0;
top: 0;
background-color: red;
}
.Footer {
/*将原本的fixed定位转换成absolute定位*/
position: absolute;
height: 34px;
left: 0;
right: 0;
bottom: 0;
background-color: blue;
}
.Main {
/* 内容区main绝对定位,并进行内部滚动 */
position: absolute;
top: 50px;
bottom: 34px;
width: 100%;
/* 使之可以滚动,但滚动不顺滑*/
overflow-y: scroll;
/*添加-webkit-overflow-scrolling让其恢复顺滑的滚动*/
-webkit-overflow-scrolling: touch;
}
ul {
width: 100%;
padding: 0;
margin: 0;
}
</style>
</head>
<body>
<!-- 页面顶部的头部 -->
<div class="Header">header</div>
<!-- 可以滚动的区域 -->
<div class="Main">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
<li>22</li>
<li>23</li>
<li>24</li>
<li>25</li>
<li>26</li>
<li>27</li>
<li>28</li>
<li>29</li>
<li>30</li>
<li>31</li>
<li>32</li>
<li>33</li>
<li>34</li>
<li>35</li>
<li>36</li>
<li>37</li>
<li>38</li>
<li>39</li>
<li>40</li>
<li>41</li>
<li>42</li>
<li>43</li>
<li>44</li>
<li>45</li>
<li>46</li>
<li>47</li>
<li>48</li>
<li>49</li>
<li>50</li>
</ul>
</div>
<!-- 页面底部的footer -->
<div class="Footer">
<input type="text" placeholder="Footer..." id="footer_input" />
<button class="submit">提交</button>
</div>
<script>
// 解决input被键盘遮挡问题
var bfscrolltop = document.body.scrollTop; //获取软键盘唤起前浏览器滚动部分的高度
var oInput = document.querySelector('#footer_input');
var timer = null;
oInput.onfocus = function() { //在这里‘footer_input’是我的底部输入栏的输入框,当它获取焦点时触发事件
timer = setInterval(function() { //设置一个计时器,时间设置与软键盘弹出所需时间相近
document.body.scrollTop = document.body.scrollHeight; //获取焦点后将浏览器内所有内容高度赋给浏览器滚动部分高度
}, 100)
};
oInput.onblur = function() { //设定输入框失去焦点时的事件
clearInterval(timer); //清除计时器
document.body.scrollTop = bfscrolltop; // 将软键盘唤起前的浏览器滚动部分高度重新赋给改变后的高度
};
</script>
</body>
</html>