| New file | 
 |  |  | 
 |  |  | .shadow-warp { | 
 |  |  |     position: relative; | 
 |  |  |     box-shadow: 0 0 10upx rgba(0, 0, 0, 0.1); | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .shadow-warp:before, | 
 |  |  | .shadow-warp:after { | 
 |  |  |     position: absolute; | 
 |  |  |     content: ""; | 
 |  |  |     top: 20upx; | 
 |  |  |     bottom: 30upx; | 
 |  |  |     left: 20upx; | 
 |  |  |     width: 50%; | 
 |  |  |     box-shadow: 0 30upx 20upx rgba(0, 0, 0, 0.2); | 
 |  |  |     transform: rotate(-3deg); | 
 |  |  |     z-index: -1; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | .shadow-warp:after { | 
 |  |  |     right: 20upx; | 
 |  |  |     left: auto; | 
 |  |  |     transform: rotate(3deg); | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | <template> | 
 |  |  |     <view> | 
 |  |  |         <view class="cu-custom" :style="[{height:CustomBar + 'px'}]"> | 
 |  |  |             <view class="cu-bar fixed" :style="style" :class="[bgImage!=''?'none-bg text-white bg-img':'',bgColor]"> | 
 |  |  |                 <view class="action" @tap="BackPage" v-if="isBack"> | 
 |  |  |                     <text class="cuIcon-back"></text> | 
 |  |  |                     <slot name="backText"></slot> | 
 |  |  |                 </view> | 
 |  |  |                 <view class="content" :style="[{top:StatusBar + 'px'}]"> | 
 |  |  |                     <slot name="content"></slot> | 
 |  |  |                 </view> | 
 |  |  |                 <slot name="right"></slot> | 
 |  |  |             </view> | 
 |  |  |         </view> | 
 |  |  |     </view> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  |     export default { | 
 |  |  |         data() { | 
 |  |  |             return { | 
 |  |  |                 StatusBar: this.StatusBar, | 
 |  |  |                 CustomBar: this.CustomBar | 
 |  |  |             }; | 
 |  |  |         }, | 
 |  |  |         name: 'cu-custom', | 
 |  |  |         computed: { | 
 |  |  |             style() { | 
 |  |  |                 var StatusBar= this.StatusBar; | 
 |  |  |                 var CustomBar= this.CustomBar; | 
 |  |  |                 var bgImage = this.bgImage; | 
 |  |  |                 var style = `height:${CustomBar}px;padding-top:${StatusBar}px;`; | 
 |  |  |                 if (this.bgImage) { | 
 |  |  |                     style = `${style}background-image:url(${bgImage});`; | 
 |  |  |                 } | 
 |  |  |                 return style | 
 |  |  |             } | 
 |  |  |         }, | 
 |  |  |         props: { | 
 |  |  |             bgColor: { | 
 |  |  |                 type: String, | 
 |  |  |                 default: '' | 
 |  |  |             }, | 
 |  |  |             isBack: { | 
 |  |  |                 type: [Boolean, String], | 
 |  |  |                 default: false | 
 |  |  |             }, | 
 |  |  |             bgImage: { | 
 |  |  |                 type: String, | 
 |  |  |                 default: '' | 
 |  |  |             }, | 
 |  |  |         }, | 
 |  |  |         methods: { | 
 |  |  |             BackPage() { | 
 |  |  |                 uni.navigateBack({ | 
 |  |  |                     delta: 1 | 
 |  |  |                 }); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style> | 
 |  |  |  | 
 |  |  | </style> |