<script lang="ts" setup name="DetailBlock"> defineProps({ title: { type: String, required: true, }, }) const slots = useSlots() </script> <template> <div class="detail-main"> <div class="header"> <div class="title"> {{ title }} </div> <div class="btns"> <slot name="btns" /> </div> </div> <div v-if="slots.default" class="content"> <slot /> </div> </div> </template> <style lang="scss" scoped> .detail-main { background-color: #fff; border-radius: 8px; margin-top: 10px; padding-top: 10px; .header { position: relative; height: 40px; align-items: center; flex-direction: column; justify-content: center; display: flex; .title { font-weight: 500; } .btns { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); } } .content { background-color: #fff; padding: 0 10px 20px; margin-top: 10px; } } </style>