uniAPP·已封装好的footer和Header,已经作好 导航状态栏、刘海安全区、小程序胶囊安全区、手机底部物理键安全区,没有时自动为空
1【Header】
<template>
<view>
<view class="head-1">
<!-- 小程序按钮安全高度 -->
<view class="head-2 ">
<!-- 一体 -->
<view class="head-3" :style="{height:phoneHeight + 'px;'}"> </view> <!-- 系统状态栏安全高度 -->
<view class="head-4"> </view> <!-- 设置刘海安全高度 -->
<view class="head-5" :style="{height:menuTop}"> </view> <!-- 小程序按钮安全高度 -->
<view style="width: auto;height: auto;padding-top: 24px;"></view>
</view>
<view class="head-view">
<view class="head-Button translate" @tap="headButton()">
<slot name="slot1"></slot><!-- 父组件嵌入1 -->
</view>
<view>
<slot name="slot2"></slot><!-- 父组件嵌入2 -->
</view>
</view>
</view>
<!-- 内容安全区分割-->
<view class="head-hr" :style="{height:phoneHeight+ 'px;'}">
<view class="head-2">
<view class="head-3"> </view>
<view class="head-4"> </view>
<view class="head-5" :style="{height:menuTop}"> </view>
<view style="width: auto;height: auto;padding-top: 28px;"></view>
</view>
<view class="head-view" :style="{height:menuHeight}"> </view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
onInit(){//监听页面初始化
// console.log("onInit ")
},
onLoad(){//监听页面加载
// console.log("onLoad ")
},
onShow(){//监听页面每次显示
// console.log("onShow ")
},
onReady(){//监听页面初次渲染完成
// console.log("onReady")
},
methods: {
},
components: {
}
}
</script>
<style>
/* env 屏幕刘海安全区 */
/* padding-top: env(safe-area-inset-bottom); */
/* padding-top: var(--status-bar-height); */
.head-1 {
width: 100%;
overflow: auto;
/* 置顶浮游定位 */
position: fixed;
padding-top: 2px;
padding-bottom: 5px;
z-index: 999;
background-color: #108080;
}
.head-2 {/* 安全区高度包裹 */
width: 100%;
height: 100%;
}
.head-3 {/* 系统状态栏目安全区 动态高度 */
width: 15%;
float: left;
height:var(--status-bar-height);
/* padding-top:var(--status-bar-height); */
}
.head-4 {/* iPhone刘海安全区 */
width: 25%;
height: env(safe-area-inset-bottom);
float: left;
}
.head-5 {/* 小程序胶囊 动态高度*/
width: 15%;
float: right;
}
.head-hr{
/* 内容安全区 */
width: 100%;
height: auto;
padding-bottom: 38px;
}
.head-view{
width: 100%;
float: left;
}
.head-Button {
float: left;
width: 29px;
height: 28px;
margin-left: 10px;
margin-right: 10px;
/* 弧度 */
border-radius: 48px;
/* 边框 */
border: 1px solid #cccccc;
display: flex;
align-items: center;
justify-content: center;
background-color: #000000;
}
.head-Button image {
width: 23px;
height: 23px;
border-radius: 50px;
/* 弧度 */
}
.rotate :active {
font-weight: bold;
animation: rotate 1s infinite linear;
}
.translate :active {
font-weight: bold;
animation: translate 1s infinite linear;
}
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@keyframes translate {
from {
transform: translateX(-20%);
}
to {
transform: translateX(5%);
}
}
/* ============================================== */
</style>
2【使用说明】(需要先引入组件哦)slot=”slot1″ 是图标 和 slot=”slot2″ 是新内容
<view class="">
<Head>
<image slot="slot1" src="../../static/zuo.png"> </image>
<picker slot="slot2" class="home-picker" @change="PickerLanguage" :range="dataLanguage">
<image src="../../static/language1.png" mode=""> </image>
<label> {{dataLanguage[intLanguage]}} </label>
</picker>
</Head>
</view>3【footer】底部导航(需要先引入组件哦)
<template>
<!-- 需要多少个菜单就添加多少个 会自动自适应 -->
<view class="footer_1">
<view class="footer_1-1" @tap="GetFooter(0)">
<view class="footer_1-1-t">
<image :src="imgurl1"></image>
</view>
<view class="footer_1-1-b" :class="fontcolor1"> 主页 </view>
</view>
<view class="footer_1-1" @tap="GetFooter(1)">
<view class="footer_1-1-t">
<image :src="imgurl2"></image>
</view>
<view class="footer_1-1-b" :class="fontcolor2"> Dig Data </view>
</view>
<view class="footer_1-1" @tap="GetFooter(2)">
<view class="footer_1-1-t">
<image :src="imgurl3"></image>
</view>
<view class="footer_1-1-b" :class="fontcolor3"> Statistics </view>
</view>
<view class="footer_1-1" @tap="GetFooter(3)">
<view class="footer_1-1-t">
<image :src="imgurl4"></image>
</view>
<view class="footer_1-1-b" :class="fontcolor4"> Community </view>
</view>
<view class="footer_1-1" @tap="GetFooter(4)">
<view class="footer_1-1-t">
<image :src="imgurl5"></image>
</view>
<view class="footer_1-1-b" :class="fontcolor5"> 我的 </view>
</view>
</view>
</template>
<script>
// import Home from './home.vue';
export default {
data() {
return {
imgurl1: '/static/home3.png',
imgurl2: '/static/digdata3.png',
imgurl3: '/static/Statistics3.png',
imgurl4: '/static/community3.png',
imgurl5: '/static/my3.png',
fontcolor1: 'font-color-22',
fontcolor2: 'font-color-22',
fontcolor3: 'font-color-22',
fontcolor4: 'font-color-22',
fontcolor5: 'font-color-22',
inFooter: 1,
inFooter2: 0,
}
},
onShow(){
},
methods: {
getSwiper: function(e) {
console.log("footer getSwiper:" + e);
this.GetFooter(e);
},
GetFooter: function(e) {
/* 刷空 */
this.imgurl1 = '/static/home2.png';
this.imgurl2 = '/static/digdata2.png';
this.imgurl3 = '/static/Statistics2.png';
this.imgurl4 = '/static/community2.png';
this.imgurl5 = '/static/my2.png';
this.fontcolor1 = 'font-color-22';
this.fontcolor2 = 'font-color-22';
this.fontcolor3 = 'font-color-22';
this.fontcolor4 = 'font-color-22';
this.fontcolor5 = 'font-color-22';
/* 刷空 */
if (e == 0) {
this.inFooter = 0;
this.imgurl1 = "/static/home1.png";
this.fontcolor1 = 'font-color-00';
} else if (e == 1) {
this.inFooter = 1;
this.imgurl2 = "/static/digdata1.png";
this.fontcolor2 = 'font-color-00';
} else if (e == 2) {
this.inFooter = 2;
this.imgurl3 = "/static/Statistics1.png";
this.fontcolor3 = 'font-color-00';
} else if (e == 3) {
this.inFooter = 3;
this.imgurl4 = "/static/community1.png";
this.fontcolor4 = 'font-color-00';
} else if (e == 4) {
this.inFooter = 4;
this.imgurl5 = "/static/my1.png";
this.fontcolor5 = 'font-color-00';
}
// console.log("点击 inFooter:" + this.inFooter);
/* 向父组件 提交数据 inFooter为方法名 */
this.$emit('putFooter', this.inFooter);
}
},
components: {
}
}
</script>
<style>
.footer_1 {
background-color: #ffffff;
position: fixed;
bottom: 0;
width: 100%;
height: 56px;
/* 关闭切换动画效果 */
duration: 0;
/* 左右上下居中 */
display: flex;
justify-content: center;
align-items: center;
z-index: 1111;
border-top: 1px dashed #999999;
/* solid 实线 dashed 虚线*/
/*
请到 pages.js 里的 "globalStyle"下添加如下代码,
"app-plus":{ "scrollIndicator":"none" } //全局 在APP页面都不显示滚动条
*/
/* 手机底部物理键安全区 */
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
}
.footer_1-1 {
/* 模块 */
margin-top: 3px;
margin-bottom: 2px;
float: left;
width: 100%;
}
.footer_1-1-t {
/* 图标 */
width: 100%;
height: 24px;
/* 定位模块居中 */
display: flex;
justify-content: center;
}
.footer_1-1-t image {
height: 25px;
width: 24px;
}
.footer_1-1-b {
/* 标题 */
width: 100%;
font-size: 12px;
/* 字体大小 */
font-weight: bolder;
/* 字体变粗 */
/* 文本上下居中 */
display: flex;
justify-content: center;
}
.font-color-00 {
color: #000000;
}
.font-color-11 {
color: #666666;
}
.font-color-22 {
color: #808080;
}
</style>
4【这个没有自定义图片,需要自己修改图标地址,因为它不是高频率动态所以不做】