footer位置的自动适配(主内容不足一屏时显示在最底部,超出一屏时跟随主内容显示)

本文介绍了一种使网页footer在内容不足时固定在屏幕底部,而内容超出屏幕时随内容滚动的方法。通过简单的CSS设置,可以轻松实现这一效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  在项目中常常会遇到这样的问题:页面主要内容不足以铺满一个屏幕的高度,footer下面就会有白块剩余。如下图:

  我们希望实现的效果是,在主要内容不足以铺满整个屏幕的情况下,footer居于屏幕低部显示,使得整个页面占满屏幕。而当主要内容高度大于整个屏幕高度的时候,footer跟随主要内容进行显示。如下图:


  而当主内容超过一屏时,自动跟随显示:


  方法如下。设置CSS:

/*在主要内容不足以铺满整个屏幕的情况下,footer居于屏幕低部显示,
使得整个页面占满屏幕。而当主要内容高度大于整个屏幕高度的时候,
footer跟随主要内容进行显示;*/
html,body{
    height: 100%;
    margin: 0;
    padding: 0;
}
/*需将主区域内容(不包括footer)设置为此class,一般为div*/
.page{
    box-sizing: border-box;/*为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制*/
    min-height: 100%;
    padding-bottom: 25px;
}
footer{
    height: 25px;
    margin-top: -25px;
    opacity: 0.5;
    color: #5E5E5E;
}
/*footer 结束*/

  HTML结构:

<div class="page">  
    主要页面  
</div>  
<footer>底部</footer> 

  需要注意的就是page的padding-bottom、footer的height、margin-top三个值要相对应。

参考资料:https://blog.youkuaiyun.com/u012076852/article/details/53068082

<template> <view class="container"> <!-- 顶部导航栏 --> <u-navbar :title="title" leftIconColor="#fff" placeholder bgColor="#57dc7f" autoBack titleStyle="color:#fff;text-align:center;" :customStyle="navbarStyle" v-if="title" ></u-navbar> <!-- 滚动容器 --> <view class="scroll-wrapper"> <scroll-view scroll-y class="scroll-view" @scrolltolower="$emit('lower')" :style="scrollStyle"> <!-- 部分页面有的背景图 没有title才展示 --> <image class="bgImg" :src="getImgUrl('/statics/img/backImg.png')" mode="widthFix" v-if="isShow"></image> <!-- 内容图 --> <slot></slot> </scroll-view> </view> <!-- 底部插槽 --> <slot name="bottom"></slot> </view> </template> <script> import getImgUrl from '@/mixins/getImgUrl.js'; export default { mixins: [getImgUrl], name: 'common-scroll', props: { title: String, isShow: { type: Boolean, default: false } }, computed: { scrollStyle() { const systemInfo = uni.getSystemInfoSync(); const navBarHeight = this.title ? systemInfo.statusBarHeight + 44 : 0; return { minHeight: `calc(100vh - ${navBarHeight}px)` }; } } }; </script> <style lang="scss" scoped> .container { height: 100vh; display: flex; flex-direction: column; } .scroll-wrapper { flex: 1; min-height: 0; /* 关键:允许内容压缩 */ padding-bottom: env(safe-area-inset-bottom); } .scroll-view { height: 100%; overflow-y: auto; box-sizing: border-box; overflow-anchor: none; /* 防止滚动跳动 */ position: relative; overscroll-behavior-y: contain; .bgImg { width: 100%; height: 600rpx !important; position: absolute; top: 0; left: 0; z-index: -1; } } ::v-deep .u-navbar { z-index: 999; flex-shrink: 0; /* 防止导航栏被压缩 */ } </style> 调整这个代码:vue2+js+uni-app+uview需求我需要个容器:所有的页面都需要包含在这个容器中,有些页面传递title,则需要展示u-navbar,底部有 <slot name="bottom"></slot>是用来放底部按钮的。顶部的navbar和底部的bottom说是不能滚动的,背景为#f5f5f5,中间可以滚动的部分,如果长度没有超出的话,就不能滚动,如果超出了,就滚动。如果没有title,但是有bottom的按钮的话,那就除开bottom后超出的部分 都可滚动,如果都没有的话,那就整个页面超出部分可以滚动。别动我u-navbar的颜色。还有,scroll-wrapper的高度默认是除开u-navbar和bottom以外的部分。如果没有u-navbar,scroll-wrapper的高度就是除开bottom以外的部分,如果都没有就是100vh,滚动部分的高度如果超出100vh,就可以滚动,如果没有超出,就不更滚动!!!
最新发布
07-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值