146 lines
2.3 KiB
Vue
146 lines
2.3 KiB
Vue
<template>
|
|
<article class="content-page">
|
|
<h1 class="page-heading">{{ heading }}</h1>
|
|
<section class="content-container">
|
|
<div class="content">
|
|
<slot></slot>
|
|
</div>
|
|
</section>
|
|
<div class="background background-container">
|
|
<div class="background background-loading"
|
|
:style="loadingStyle"></div>
|
|
<div class="background background-img"
|
|
:style="backgroundStyle"></div>
|
|
</div>
|
|
</article>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
props: {
|
|
bgLoading: {
|
|
type: String,
|
|
required: false,
|
|
default: function () {
|
|
return 'linear-gradient(to top, orange, green)'
|
|
}
|
|
},
|
|
img: {
|
|
type: String,
|
|
required: false,
|
|
default: function () {
|
|
return 'url(https://via.placeholder.com/1920x1080)'
|
|
}
|
|
},
|
|
heading: {
|
|
type: String,
|
|
required: true
|
|
}
|
|
},
|
|
|
|
data () {
|
|
return {
|
|
}
|
|
},
|
|
|
|
computed: {
|
|
loadingStyle () {
|
|
return {
|
|
background: this.bgLoading
|
|
}
|
|
},
|
|
backgroundStyle () {
|
|
return {
|
|
backgroundImage: this.img
|
|
}
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
}
|
|
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
$z-index-bottom: 5;
|
|
$z-index-top: 10;
|
|
|
|
.content-page {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
height: 100%;
|
|
padding: $site-menu__header-width 0 0 0;
|
|
|
|
@media (min-width: $bp__layout) {
|
|
padding: 0 0 0 $site-menu__header-width;
|
|
}
|
|
|
|
background-color: rgba(black, .1); // TEMP
|
|
}
|
|
|
|
.content-container {
|
|
z-index: $z-index-top;
|
|
position: relative;
|
|
|
|
height: 100%;
|
|
width: 100%;
|
|
|
|
overflow-y: auto;
|
|
overflow-x: hidden;
|
|
|
|
@media (min-width: $bp__layout) {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
}
|
|
}
|
|
|
|
.content {
|
|
position: absolute;
|
|
width: 100%;
|
|
top: 0;
|
|
right: 0;
|
|
|
|
padding: 2rem;
|
|
|
|
@media (min-width: $bp__layout) {
|
|
width: 50%;
|
|
|
|
background-color: rgba(0, 0, 0, .3);
|
|
}
|
|
|
|
color: #fff; // TEMP
|
|
}
|
|
|
|
.background-container {
|
|
z-index: $z-index-bottom
|
|
}
|
|
|
|
.page-heading {
|
|
z-index: $z-index-top;
|
|
position: relative;
|
|
|
|
@media (min-width: $bp__layout) {
|
|
max-width: 50%;
|
|
padding-right: $site-menu__header-width;
|
|
}
|
|
}
|
|
|
|
.background {
|
|
position: absolute;
|
|
width: 100%;
|
|
height: 100%;
|
|
top: 0;
|
|
left: 0;
|
|
}
|
|
|
|
.background-img {
|
|
background-size: cover;
|
|
background-position: center center;
|
|
opacity: .5;
|
|
}
|
|
</style>
|