vue2移动端布局--固定定位的button被软键盘顶起
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
·
布局时经常用到 position: fixed; 可以将元素固定定位在页面的指定位置,如下图所示:

提交按钮为固定定位,但当页面中有输入框(例如input)时,点击输入时会有软键盘从底部弹起,一旦页面内容高度过高时,提交按钮会覆盖在页面内容上,导致布局混乱,有时还会遮挡住页面内容,影响使用,解决方法如下:
获取屏幕高度,监听resize获取屏幕高度变化
<div class="submitView" v-if="hideShow == true">
<div class="submitBtn">提交</div>
</div>
<style lang="scss">
.submitView{
width: 100%;
padding: 0 0.4rem;
box-sizing: border-box;
position: fixed;
bottom: 0rem;
left: 0;
display: flex;
align-items: center;
justify-content: space-between;
.submitBtn{
width: 3rem;
height: 0.76rem;
background: #00095B;
border-radius: 0.08rem;
margin-bottom: 0.6rem;
font-size: 0.36rem;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
}
}
</style>
export default {
data() {
return {
originalHeight: 0, //屏幕原始高度
screenHeight: 0, //屏幕实时高度
hideShow: true, //按钮是否显示
}
}
},
mounted(){
//获取首次进入页面的原始高度
this.originalHeight = document.documentElement.clientHeight;
//监听页面高度实时变化
window.addEventListener('resize', this.watchResize);
},
watch: {
//监听屏幕高度变化
screenHeight(newHeight) {
this.hideShow = this.originalHeight <= newHeight;
}
},
beforeDestroy() {
// 销毁
window.removeEventListener("resize", this.watchResize);
},
methods:{
//监听的内容--实时变化的窗口高度
watchResize() {
this.screenHeight = document.documentElement.clientHeight;
},
},
此方法可以通过监听屏幕实际高度的变化,决定固定元素是否显示,即当屏幕高度小于原始高度时,隐藏底部按钮,这样就不会影响页面内容的显示与使用了。
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:4 个月前 )
9e887079
[skip ci] 1 年前
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 1 年前
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)