fs-container.vue 986 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <template>
  2. <view class="fs-container">
  3. <view class="fs-container-header">
  4. <slot name="header"></slot>
  5. </view>
  6. <view class="fs-container-main" :style="{paddingTop: top + 'px',paddingBottom: bottom + 'px'}">
  7. <slot></slot>
  8. </view>
  9. <view class="fs-container-footer">
  10. <slot name="footer"></slot>
  11. </view>
  12. </view>
  13. </template>
  14. <script>
  15. export default {
  16. name:"fs-container",
  17. data() {
  18. return {
  19. top: 0,
  20. bottom: 0
  21. };
  22. },
  23. mounted() {
  24. uni.createSelectorQuery().in(this).select('.fs-container-header').boundingClientRect(data => {
  25. this.top = data.height
  26. }).exec()
  27. uni.createSelectorQuery().in(this).select('.fs-container-footer').boundingClientRect(data => {
  28. this.bottom = data.height
  29. }).exec()
  30. }
  31. }
  32. </script>
  33. <style lang="scss" scoped>
  34. .fs-container{
  35. &-header{
  36. position: fixed;
  37. top: 0;
  38. left: 0;
  39. right: 0;
  40. z-index: 100;
  41. }
  42. &-footer{
  43. position: fixed;
  44. left: 0;
  45. right: 0;
  46. bottom: 0;
  47. z-index: 100;
  48. }
  49. }
  50. </style>