|  |  | 
 |  |  | <template> | 
 |  |  |   <scroll-view class="content-scroll-view-wrapper" :class="{ hasPaddingTop }" :scroll-y="true"> | 
 |  |  |   <scroll-view | 
 |  |  |     class="content-scroll-view-wrapper" | 
 |  |  |     :class="{ hasPaddingTop, isNoWeb: !isWeb || showBgColor }" | 
 |  |  |     :scroll-y="true" | 
 |  |  |   > | 
 |  |  |     <ContentView | 
 |  |  |       :class="['content-scroll-view-wrapper-inner', props.allHeight ? 'all-height' : '']" | 
 |  |  |       :paddingH="paddingH" | 
 |  |  | 
 |  |  |  | 
 |  |  | <script setup lang="ts"> | 
 |  |  | import ContentView from './ContentView.vue'; | 
 |  |  | import { isWeb } from '@/utils/env'; | 
 |  |  |  | 
 |  |  | defineOptions({ | 
 |  |  |   name: 'ContentScrollView', | 
 |  |  | 
 |  |  |   hasPaddingTop?: boolean; | 
 |  |  |   allHeight?: boolean; | 
 |  |  |   paddingH?: boolean; | 
 |  |  |   showBgColor?: boolean; | 
 |  |  | }; | 
 |  |  |  | 
 |  |  | const props = withDefaults(defineProps<Props>(), { | 
 |  |  |   hasPaddingTop: false, | 
 |  |  |   allHeight: false, | 
 |  |  |   paddingH: true, | 
 |  |  |   showBgColor: true, | 
 |  |  | }); | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  | .content-scroll-view-wrapper { | 
 |  |  |   @include listScrollViewWithNoPadding; | 
 |  |  |   background-color: $body-background-color; | 
 |  |  |  | 
 |  |  |   &.isNoWeb { | 
 |  |  |     background-color: $body-background-color; | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   &.hasPaddingTop { | 
 |  |  |     padding-top: 20px; |