61 lines
1.1 KiB
Vue
61 lines
1.1 KiB
Vue
|
<template>
|
||
|
<section :class="{'preview': !all, 'all': all}">
|
||
|
<code class="language-html">
|
||
|
<slot name="body"></slot>
|
||
|
</code>
|
||
|
<div class="show" @click="() => all = !all">{{ msg }}</div>
|
||
|
</section>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
export default {
|
||
|
data: function () {
|
||
|
return {
|
||
|
all: false
|
||
|
}
|
||
|
},
|
||
|
computed: {
|
||
|
msg () {
|
||
|
return !this.all ? 'unfold' : 'fold'
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style lang="css" scoped>
|
||
|
section code.language-html {
|
||
|
padding: 10px 20px;
|
||
|
margin: 10px 0px;
|
||
|
display: block;
|
||
|
background-color: #333;
|
||
|
color: #fff;
|
||
|
overflow-x: auto;
|
||
|
font-family: Consolas, Monaco, Droid, Sans, Mono, Source, Code, Pro, Menlo, Lucida, Sans, Type, Writer, Ubuntu, Mono;
|
||
|
border-radius: 5px;
|
||
|
white-space: pre;
|
||
|
}
|
||
|
|
||
|
.preview {
|
||
|
position: relative;
|
||
|
height: 150px;
|
||
|
overflow: hidden;
|
||
|
}
|
||
|
|
||
|
.all{
|
||
|
position: relative;
|
||
|
}
|
||
|
|
||
|
.show {
|
||
|
position: absolute;
|
||
|
width: 100%;
|
||
|
text-align: center;
|
||
|
left: 0;
|
||
|
bottom: 0;
|
||
|
line-height: 50px;
|
||
|
height: 50px;
|
||
|
cursor: pointer;
|
||
|
background-color: rgba(255, 255, 255, 0.3);
|
||
|
color: white;
|
||
|
}
|
||
|
</style>
|