<template>
<div class="c-fixed-bottom">
<!-- 空白占位 -->
<div class="c-fixed-bottom__seat" />
<div class="c-fixed-bottom__positioner" :style="customStyle">
<slot></slot>
</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue'
export default Vue.extend({
props: {
customStyle: {
type: Object,
default: () => ({}),
},
},
})
</script>
<style lang="less" scoped>
.c-fixed-bottom {
&__positioner {
background: #fff;
position: fixed;
bottom: 0;
left: 0;
right: 0;
box-shadow: 0 -2px 4px 0 rgba(0, 0, 0, 0.08);
z-index: 99;
border-style: solid;
border-color: #fff;
}
@supports (height: constant(safe-area-inset-top)) {
&__seat {
height: constant(safe-area-inset-bottom); // 兼容 IOS < 11.2
}
&__positioner {
border-bottom-width: constant(safe-area-inset-bottom); // 兼容 IOS < 11.2
}
}
@supports (border-bottom-width: env(safe-area-inset-top)) {
&__seat {
height: env(safe-area-inset-bottom); // 兼容 IOS > 11.2;
}
&__positioner {
border-bottom-width: env(safe-area-inset-bottom); // 兼容 IOS > 11.2;
}
}
}
</style>
在使用时候直接进行:
import FixedBottom from '@/components/fixed-bottom/index.vue'
components: {
FixedBottom,
},
<fixed-bottom> 这里面正常写底部样式就可以 </fixed-bottom>