
3 changed files with 197 additions and 34 deletions
@ -0,0 +1,120 @@ |
|||||
|
<template> |
||||
|
<div class="preview-container"> |
||||
|
<div class="preview_top flex-between"> |
||||
|
<b class="preview-title">实时预览</b> |
||||
|
<div class="toggle-container"> |
||||
|
<div class="toggle-button" v-if="showPc" :class="{ active: activeView === 'desktop' }" |
||||
|
@click="switchView('desktop')"> |
||||
|
电脑端 |
||||
|
</div> |
||||
|
<div class="toggle-button" v-if="showMobile" :class="{ active: activeView === 'mobile' }" |
||||
|
@click="switchView('mobile')"> |
||||
|
手机端 |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="content-container"> |
||||
|
<!-- 电脑端内容 --> |
||||
|
<div v-show="activeView === 'desktop'" class="desktop-view"> |
||||
|
<slot name="desktop"></slot> |
||||
|
</div> |
||||
|
|
||||
|
<!-- 手机端内容 --> |
||||
|
<div v-show="activeView === 'mobile'" class="mobile-view"> |
||||
|
<slot name="mobile"></slot> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'DevicePreview', |
||||
|
props:{ |
||||
|
showMobile:{ |
||||
|
type:Boolean, |
||||
|
default:true |
||||
|
}, |
||||
|
showPc:{ |
||||
|
type:Boolean, |
||||
|
default:true |
||||
|
}, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
activeView: 'desktop' // 默认显示电脑端 |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
switchView(view) { |
||||
|
this.activeView = view; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped> |
||||
|
.preview-container { |
||||
|
max-width: 800px; |
||||
|
min-width: 300px; |
||||
|
margin: 0 auto; |
||||
|
padding: 24px; |
||||
|
border-radius: 4px; |
||||
|
background: #FAFAFA; |
||||
|
} |
||||
|
.preview_top{ |
||||
|
margin-bottom: 20px; |
||||
|
} |
||||
|
|
||||
|
.preview-title { |
||||
|
text-align: center; |
||||
|
color: #1E2226; |
||||
|
} |
||||
|
|
||||
|
.toggle-container { |
||||
|
display: flex; |
||||
|
height: 26px; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
padding: 3px 6px; |
||||
|
border-radius: 4px; |
||||
|
background: #F2F3F5; |
||||
|
} |
||||
|
|
||||
|
.toggle-button { |
||||
|
padding: 1px 12px; |
||||
|
border-radius: 2px; |
||||
|
box-sizing: border-box; |
||||
|
cursor: pointer; |
||||
|
transition: all 0.3s ease; |
||||
|
} |
||||
|
|
||||
|
.toggle-button.active { |
||||
|
color: #006AFF; |
||||
|
background: #FFFFFF; |
||||
|
} |
||||
|
|
||||
|
.toggle-button.active:after { |
||||
|
/* content: ''; |
||||
|
position: absolute; |
||||
|
bottom: -11px; |
||||
|
left: 0; |
||||
|
width: 100%; |
||||
|
height: 2px; |
||||
|
background-color: #1890ff; */ |
||||
|
} |
||||
|
|
||||
|
.content-container { |
||||
|
/* min-height: 300px; |
||||
|
padding: 20px; |
||||
|
border: 2px solid #ffd700; |
||||
|
border-radius: 4px; |
||||
|
background-color: #fff; */ |
||||
|
} |
||||
|
|
||||
|
.desktop-view, |
||||
|
.mobile-view { |
||||
|
width: 100%; |
||||
|
} |
||||
|
</style> |
Loading…
Reference in new issue