修改首页各分辨率下的样式

This commit is contained in:
zhl 2022-01-04 19:36:00 +08:00
parent baf32f0dd3
commit 4114a9b7ac
41 changed files with 835 additions and 194 deletions

View File

@ -5,7 +5,8 @@
<link rel="stylesheet" <link rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Oxanium"> href="https://fonts.googleapis.com/css?family=Oxanium">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
<!-- <meta name="viewport" content="width=device-width,initial-scale=1.0">-->
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title> <title><%= htmlWebpackPlugin.options.title %></title>
<script src="assets/libs/spine-webgl.js"></script> <script src="assets/libs/spine-webgl.js"></script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -1,13 +1,16 @@
<template> <template>
<div class="card"> <div class="card">
<img class="bg-img" src="@/assets/main/p3/bg_card.png"> <img class="bg-img" src="@/assets/main/card/card_border.png">
<div class="anim-border"> <div class="anim-border">
<spine-view class="hero-anim" :data="data" :key="data.id"></spine-view> <spine-view class="hero-anim" :data="data" :key="data.id" v-if="data.type===1"></spine-view>
<img class="corner" src="@/assets/main/p3/bg_card_corner.png"> <img class="card-main-img" :src="require('@/assets/main/card/' + data.skelName+'.png')" v-if="data.type===0"/>
<img class="name-img" :src="require('@/assets/main/card/'+data.name+'.png')">
<div class="info-div"> <div class="info-div">
<img class="name-img" src="@/assets/main/p3/racoon.png"> <img class='buy-icon' src="@/assets/main/card/icon_buy.png"/>
<span class="index-label">#01</span> <div class="price-label"><span>{{data.price}}</span></div>
<span class="price-label">100 USDT</span> </div>
<div class="class-div">
<img :src="require('@/assets/main/card/class_'+data.class+'.png')">
</div> </div>
</div> </div>
</div> </div>
@ -37,11 +40,9 @@ export default class extends Vue {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.card{ @mixin resize($scale) {
position: relative;
}
.bg-img { .bg-img {
width: 297px; width: 297px/$scale;
position: absolute; position: absolute;
left: 0; left: 0;
top: 0; top: 0;
@ -50,57 +51,128 @@ export default class extends Vue {
margin: auto; margin: auto;
} }
.anim-border { .anim-border {
width: 287px; width: 287px/$scale;
position: absolute; position: absolute;
left: 0; left: 0;
top: 0; top: 0;
height: 465px; height: 465px/$scale;
margin-left: 13px; margin-left: 13px/$scale;
overflow: hidden; overflow: hidden;
} }
.hero-anim{
width: 500px/$scale;
height: 700px/$scale;
position: absolute;
left: -100px/$scale;
top: -100px/$scale;
right: 0;
margin-left: auto;
margin-right: auto;
}
.card-main-img {
position: absolute;
bottom: 0;
max-height: 360px/$scale;
top: 0;
left: 0;
right: 0;
margin: auto;
}
.info-div {
background-image: url('~@/assets/main/card/name_bg.png');
width: 297px/$scale;
height: 115px/$scale;
position: absolute;
bottom: 10px/$scale;
left: 0;
right: 0;
display: flex;
flex-direction: row;
align-items: center;
background-size: contain;
background-repeat: no-repeat;
justify-content: space-between;
}
.class-div{
position: absolute;
top: 90px/$scale;
right: 0;
width: 42px/$scale;
height: 42px/$scale;
}
.class-div img {
width: 100%;
}
.name-img {
height: 39px/$scale;
width: auto;
position: absolute;
right: 9px/$scale;
bottom: 100px/$scale;
}
.price-label {
color: black;
height: 29px/$scale;
font-weight: bold;
width: 145px/$scale;
background-image: url('~@/assets/main/card/price_bg.png');
background-size: contain;
background-repeat: no-repeat;
display: flex;
align-items: center;
justify-content: center;
margin-right: 40px/$scale;
margin-bottom: 10px/$scale;
}
.price-label span {
font-size: 20px/$scale;
}
.buy-icon {
width: 44px/$scale;
height: 52px/$scale;
margin-left: 40px/$scale;
margin-bottom: 12px/$scale;
}
}
@media (max-width: 767px) {
@include resize($scale: 1.4);
.price-label {
color: black;
font-size: 16px;
margin-top: 3px;
font-weight: bold;
}
.corner {
display: none;
}
}
@media (min-width: 768px) {
@include resize($scale: 1)
}
@media (max-width: 415px) {
@include resize($scale: 2.0);
.corner {
display: none;
}
}
.card{
position: relative;
}
.corner { .corner {
position: absolute; position: absolute;
right: 0; right: 0;
bottom: 0; bottom: 0;
} }
.hero-anim{
width: 500px;
height: 700px;
position: absolute;
left: -100px;
top: -100px;
right: 0;
margin-left: auto;
margin-right: auto;
}
.info-div {
background-image: url('~@/assets/main//p3/btn_name.png');
width: 270px;
height: 115px;
position: absolute;
bottom: 10px;
left: 0;
right: 0;
margin-right: auto;
margin-left: auto;
display: flex;
flex-direction: column;
align-items: center;
}
.name-img {
height: 39px;
width: auto;
}
.index-label { .index-label {
color: #8FFCEF; color: #8FFCEF;
font-weight: bold; font-weight: bold;
text-shadow: 0 0 10px #8FFCEF,0 0 20px #8FFCEF,0 0 30px #8FFCEF,0 0 40px #8FFCEF; text-shadow: 0 0 10px #8FFCEF,0 0 20px #8FFCEF,0 0 30px #8FFCEF,0 0 40px #8FFCEF;
} }
.price-label {
color: black;
font-size: 24px;
margin-top: 13px;
font-weight: bold;
}
</style> </style>

View File

@ -38,21 +38,116 @@ import { ISpineData } from '@/utils/SpineRender'
}) })
export default class extends Vue { export default class extends Vue {
private heros: ISpineData[] = [ private heros: ISpineData[] = [
{ id: 'hero_n1', skelName: 'pic_hero2', animName: 'animation', repeat: true, scale: 1.4 }, {
{ id: 'hero_n2', skelName: 'pic_hero3', animName: 'animation', repeat: true, scale: 1.4 }, id: 'card_0',
{ id: 'hero_n3', skelName: 'pic_hero9', animName: 'animation', repeat: true, scale: 1.4 }, price: '100 USDT',
{ id: 'hero_n4', skelName: 'pic_hero1', animName: 'animation', repeat: true, scale: 1.4 }, name: 'aoi',
{ id: 'hero_n5', skelName: 'pic_hero10', animName: 'animation', repeat: true, scale: 1.4 } skelName: 'pic_hero3',
] type: 1,
class: 0,
repeat: true,
scale: 2
},
{
id: 'card_1',
price: '100 USDT',
name: 'yamada',
skelName: 'pic_hero2',
type: 1,
class: 0,
repeat: true,
scale: 2
},
{
id: 'card_2',
price: '100 USDT',
name: 'lazar',
skelName: 'pic_hero9',
type: 1,
class: 1,
repeat: true,
scale: 2
},
{
id: 'card_3',
price: '100 USDT',
name: 'hill',
skelName: 'pic_hero1',
type: 1,
class: 2,
repeat: true,
scale: 2
},
{
id: 'card_4',
price: '100 USDT',
name: 'kurosawa',
skelName: 'pic_hero10',
type: 1,
class: 1,
repeat: true,
scale: 2
},
{
id: 'card_5',
price: '100 USDT',
name: 'canoe',
skelName: 'n_canoe',
type: 0,
class: 0,
repeat: true,
scale: 1.4
},
{
id: 'card_6',
price: '100 USDT',
name: 'miffy',
skelName: 'n_miffy',
type: 0,
class: 0,
repeat: true,
scale: 1.4
},
{
id: 'card_7',
price: '100 USDT',
name: 'dragonscale',
skelName: 'n_dragonscale',
type: 0,
class: 2,
repeat: true,
scale: 1.4
},
{
id: 'card_8',
price: '100 USDT',
name: 'astral',
skelName: 'n_astral',
type: 0,
class: 2,
repeat: true,
scale: 1.4
},
{
id: 'card_9',
price: '100 USDT',
name: 'mariana',
skelName: 'n_mariana',
type: 0,
class: 2,
repeat: true,
scale: 1.4
}
];
private cardDatas: ISpineData[][] = [] private cardDatas: ISpineData[][] = [];
private currentPage = 0 private currentPage = 0;
private totalPage = 1 private totalPage = 1;
private pageSize = 4 private pageSize = 4;
private scrollWidth = 100 private scrollWidth = 100;
private scrollLeft = 0 private scrollLeft = 0;
private scrolling = false private scrolling = false;
private scrollTime = 1 private scrollTime = 1;
created() { created() {
let count = 0 let count = 0
@ -63,7 +158,7 @@ export default class extends Vue {
if (count++ < this.pageSize) { if (count++ < this.pageSize) {
datas.push(this.heros[i]) datas.push(this.heros[i])
} else { } else {
count = 0 count = 1
this.cardDatas.push(datas) this.cardDatas.push(datas)
datas = [] datas = []
datas.push(this.heros[i]) datas.push(this.heros[i])
@ -136,58 +231,155 @@ export default class extends Vue {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@mixin resize($scale) {
.nft-list { .nft-list {
position: absolute; position: absolute;
left: 0; left: 0;
right: 0; right: 0;
bottom: 0; bottom: 0;
height: 766px; height: 650px/$scale;
display: flex;
flex-direction: column;
align-items: center;
} }
.list-container { .list-container {
width: 80vw; width: 80vw;
height: 570px; height: 570px/$scale;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
} }
.scroll-content { .scroll-content {
display: flex; display: flex;
position: absolute; position: absolute;
left: 0; left: 0;
top: 0; top: 0;
} }
.card-container { .card-container {
display: flex; display: flex;
width: 80vw; width: 80vw;
justify-content: flex-start;
} }
.card { .card {
width: 320px; width: 320px/$scale;
height: 550px; height: 520px/$scale;
flex: 0 0 auto;
} }
.action-bar { .action-bar {
display: flex; display: flex;
width: 90vw; width: 100vw;
justify-content: space-between; justify-content: space-between;
position: absolute;
left: 0;
right: 0;
bottom: 0;
} }
.right-btn { .right-btn {
transform: rotateY(180deg); transform: rotateY(180deg);
} }
.page-ctrl { .page-ctrl {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.page-icon { .page-icon {
height: 45px; height: 45px/$scale;
width: 221px; width: 221px/$scale;
background-image: url('~@/assets/main/p3/icon_deselect.png'); background-image: url('~@/assets/main/p3/icon_deselect.png');
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
} }
.page-icon.selected { .page-icon.selected {
background-image: url('~@/assets/main/p3/icon_selected.png'); background-image: url('~@/assets/main/p3/icon_selected.png');
} }
}
@media (min-width: 768px) {
@include resize($scale: 1)
}
@media (max-width: 767px) {
@include resize($scale: 1.4);
.card-container {
flex-wrap: wrap;
justify-content: space-between;
}
.action-bar {
bottom: 30vh;
}
.list-container {
height: 100%;
}
.right-btn {
width: 60px;
height: 77px;
}
.left-btn {
width: 60px;
height: 77px;
}
.page-ctrl {
display: none;
}
}
@media (max-width: 415px) {
@include resize($scale: 2.0);
.card-container {
flex-wrap: wrap;
}
.scroll-content {
bottom: 0;
}
.action-bar {
bottom: 30vh;
}
.list-container {
height: 100%;
}
.right-btn {
width: 40px;
height: 55px;
}
.left-btn {
width: 40px;
height: 55px;
}
.page-ctrl {
display: none;
}
}
@media (max-width: 376px) {
@include resize($scale: 2.2);
.card-container {
flex-wrap: wrap;
}
.scroll-content {
bottom: 0;
}
.action-bar {
bottom: 40vh;
}
.list-container {
height: 100%;
}
.right-btn {
width: 40px;
height: 55px;
}
.left-btn {
width: 40px;
height: 55px;
}
.page-ctrl {
display: none;
}
}
</style> </style>

View File

@ -2,9 +2,10 @@
<section id="chip_section" data-anchor="chip"> <section id="chip_section" data-anchor="chip">
<div class="title"> <div class="title">
<img src="@/assets/main/p4/txt_title.png"> <img src="@/assets/main/p4/txt_title.png">
<span class="text">how old are you</span> <span class="text">Earn your NFTs item by playing the game and sell it on the markedplace to make money.</span>
</div> </div>
<img class="main-img" src="@/assets/main/p4/main.png"> <img class="main-img" src="@/assets/main/p4/main.png">
<img class="main-img_2" src="@/assets/main/p4_m/main.png">
</section> </section>
</template> </template>
@ -30,7 +31,7 @@ export default class extends Vue {
} }
.title { .title {
position: absolute; position: absolute;
top: 58px; top: 100px;
left: 0; left: 0;
right: 0; right: 0;
display: flex; display: flex;
@ -44,6 +45,9 @@ export default class extends Vue {
.title .text{ .title .text{
color: white; color: white;
font-size: 28px; font-size: 28px;
margin: 10px 15px;
text-align: center;
text-shadow: 0 0 0.1em #fbc369, 0 0 0.1em #fbc369;
} }
.main-img{ .main-img{
width: 87vw; width: 87vw;
@ -54,4 +58,28 @@ export default class extends Vue {
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
} }
.main-img_2 {
display: none;
}
@media (max-width: 767px) {
.main-img{
display: none;
}
.title img {
width: 281px;
}
.title .text{
font-size: 14px;
}
.main-img_2{
display: block;
width: 90vw;
position: absolute;
left: 0;
right: 0;
bottom: 20vh;
margin-left: auto;
margin-right: auto;
}
}
</style> </style>

View File

@ -2,16 +2,29 @@
<section id="gameplay_section" data-anchor="gameplay"> <section id="gameplay_section" data-anchor="gameplay">
<div class="title"> <div class="title">
<img src="@/assets/main/p2/txt_gameplay.png"> <img src="@/assets/main/p2/txt_gameplay.png">
<span class="tips">hi you ar</span> <span class="tips">Earn your NFTs item by playing the game and sell it on the markedplace to make money.</span>
</div> </div>
<div class="color-view"> <div class="color-view">'
<div class="color-content">
<img class="logo_t" src="@/assets/main/p1/icon_logo_t.png"> <img class="logo_t" src="@/assets/main/p1/icon_logo_t.png">
<img class="logo_b" src="@/assets/main/p2/txt_battle.png"> <img class="logo_b" src="@/assets/main/p2/txt_battle.png">
<span class="text">some thing error</span> <span class="text">Earn your NFTs item by playing the game and sell it on the markedplace to make money.</span>
<img class="watch_btn" src="@/assets/main/p2/btn_watch.png"> <img class="watch_btn" src="@/assets/main/p2/btn_watch.png" @click="showVideo">
</div>
</div> </div>
<spine-view class="hero-anim" :data="hero" :key="hero.id"></spine-view> <spine-view class="hero-anim" :data="hero" :key="hero.id"></spine-view>
<div class="bottom-cover"></div> <div class="bottom-cover"></div>
<div class="video-bg" v-if="videoShow" @click="hideVideo"></div>
<div class="video-div" v-if="videoShow" >
<video
loop
playsinline
crossorigin="anonymous"
autoplay
>
<source :src="videoUrl">
</video>
</div>
</section> </section>
</template> </template>
@ -29,6 +42,16 @@ import SpineView from '@/components/main/SpineView.vue'
}) })
export default class extends Vue { export default class extends Vue {
private hero: ISpineData = { id: 'hero10', skelName: 'pic_hero10', animName: 'animation', repeat: true, scale: 1.2 } private hero: ISpineData = { id: 'hero10', skelName: 'pic_hero10', animName: 'animation', repeat: true, scale: 1.2 }
private videoShow = false
private videoUrl = 'https://cdn.cebg.games/video/v2.mp4'
showVideo() {
this.videoShow = true
}
hideVideo() {
this.videoShow = false
console.log('hide video')
}
} }
</script> </script>
@ -44,7 +67,7 @@ export default class extends Vue {
flex-direction: column; flex-direction: column;
position: absolute; position: absolute;
left: 0; left: 0;
top: 38px; top: 100px;
right: 0; right: 0;
margin: auto; margin: auto;
width: 50vw; width: 50vw;
@ -70,12 +93,16 @@ export default class extends Vue {
right: 0; right: 0;
bottom: 18vh; bottom: 18vh;
position: absolute; position: absolute;
padding-bottom: 77px;
padding-top: 20px;
}
.color-content {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding-bottom: 77px; width: 100%;
padding-top: 20px; height: 80%;
} }
.logo_t { .logo_t {
width: 151px; width: 151px;
@ -111,4 +138,103 @@ export default class extends Vue {
background-image: url('~@/assets/main/p2/bg_bottom.png'); background-image: url('~@/assets/main/p2/bg_bottom.png');
background-repeat: repeat-x; background-repeat: repeat-x;
} }
.video-bg{
width: 100%;
height: 100%;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 14;
}
.video-div {
width: 70vw;
height: 40vw;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
z-index: 15;
}
.video-div video {
width: 100%;
height: 100%;
}
@media (max-width: 767px) {
.title {
top: 60px;
}
.title img {
width: 100%;
}
.hero-anim{
width: 450px;
height: 600px;
left: 10px;
}
.color-view{
width: 100vw;
height: 50vh;
bottom: 8vh;
display: flex;
justify-content: end;
}
.color-content {
width: 50%;
justify-content: flex-start;
}
.logo_t{
width: 90px;
height: 70px;
margin-bottom: 8px;
}
.logo_b {
width: 180px;
height: auto;
margin-bottom: 80px;
}
.watch_btn{
width: 190px;
height: 60px;
margin-top: 100px;
}
.title .tips {
color: white;
font-size: 14px;
text-align: center;
text-shadow: 0 0 0.1em #fbc369, 0 0 0.1em #fbc369;
}
.color-view .text{
color: white;
font-size: 14px;
text-align: center;
text-shadow: 0 0 0.1em #fbc369, 0 0 0.1em #fbc369;
}
.video-div {
width: 100vw;
height: 56vw;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
z-index: 15;
}
}
@media (max-width: 415px) {
.hero-anim{
width: 200px;
height: 500px;
left: 10px;
}
.color-content {
width: 70%;
justify-content: flex-start;
}
}
</style> </style>

View File

@ -35,22 +35,41 @@ export default class extends Vue {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.home_hero{ @mixin resize($scale) {
position: relative;
}
.hero-anim { .hero-anim {
width: 400px; width: 400px/$scale;
height: 800px; height: 700px/$scale;
margin-left: -90px;
margin-right: -90px;
} }
.effect-anim { .effect-anim {
left:0; left:0;
top: 0; top: 0;
margin-left: -80px; margin-left: -10px/$scale;
margin-top: 50px; margin-top: 50px/$scale;
width: 400px; width: 400px/$scale;
height: 800px; height: 700px/$scale;
position: absolute; position: absolute;
} }
}
.home_hero{
position: relative;
}
@media (min-width: 768px) {
@include resize($scale: 1)
}
@media (max-width: 767px) {
@include resize($scale: 1.4);
.hero-anim {
width: 33vw;
height: 44vw;
}
.effect-anim {
left:0;
top: 0;
margin-left: -25vw;
width: 33vw;
}
}
@media (max-width: 415px) {
@include resize($scale: 3)
}
</style> </style>

View File

@ -12,7 +12,7 @@
</div> </div>
<div class="home_right_panel"> <div class="home_right_panel">
<div class="spine-list"> <div class="spine-list">
<home-hero class="hero-anim" v-for="hero in heros" :data="hero" :key="hero.id"></home-hero> <home-hero class="hero-von" v-for="hero in heros" :data="hero" :key="hero.id"></home-hero>
</div> </div>
</div> </div>
</section> </section>
@ -34,10 +34,10 @@ import HomeHero from '@/components/main/HomeHero.vue'
}) })
export default class extends Vue { export default class extends Vue {
private heros: ISpineData[] = [ private heros: ISpineData[] = [
{ id: 'hero1', skelName: 'pic_hero2', animName: 'animation', repeat: true }, { id: 'hero1', skelName: 'pic_hero2', animName: 'animation', repeat: true, scale: 1.1 },
{ id: 'hero2', skelName: 'pic_hero3', animName: 'animation', repeat: true }, { id: 'hero2', skelName: 'pic_hero3', animName: 'animation', repeat: true, scale: 1.1 },
{ id: 'hero3', skelName: 'pic_hero9', animName: 'animation', repeat: true }, { id: 'hero3', skelName: 'pic_hero9', animName: 'animation', repeat: true, scale: 1.1 },
{ id: 'hero4', skelName: 'pic_hero1', animName: 'animation', repeat: true } { id: 'hero4', skelName: 'pic_hero1', animName: 'animation', repeat: true, scale: 1.1 }
] ]
} }
</script> </script>
@ -77,14 +77,48 @@ export default class extends Vue {
position: relative; position: relative;
display: flex; display: flex;
flex-direction: column-reverse; flex-direction: column-reverse;
overflow: hidden;
} }
.spine-list{ .spine-list{
display: flex; display: flex;
justify-content: space-between;
} }
.hero-anim { .hero-von:not(:first-child){
width: 400px; margin-left: -120px;
height: 800px; }
margin-left: -90px;
margin-right: -90px; @media (max-width: 767px) {
#home_section{
flex-direction: column;
align-items: center;
}
.home_left_panel{
width: 100vw;
align-items: center;
margin-top: 20px;
}
.home_right_panel {
width: 100vw;
height: 50vh;
}
.spine-list{
}
.home_left_panel .one_row:first-child{
margin-left: 0;
}
.one_row img {
max-width: 100%;
}
.version_list_panel img{
width: 25vw;
margin-right: 5px;
}
.hero-von:not(:first-child){
margin-left: -100px;
}
}
@media (max-width: 415px) {
} }
</style> </style>

View File

@ -63,8 +63,8 @@ export default class extends Vue {
.centerPart{ .centerPart{
width: 50vw; width: 50vw;
display: grid; display: grid;
grid-template-columns: 33% 33% 33%; grid-template-columns: repeat(3, 33.33%);
grid-template-rows: 80px 80px 80px; grid-template-rows: repeat(3, 80px);
padding-top: 50px; padding-top: 50px;
} }
.link-list a{ .link-list a{
@ -96,4 +96,35 @@ export default class extends Vue {
.community-list a img{ .community-list a img{
width: 50px; width: 50px;
} }
@media (max-width: 767px) {
.footer{
flex-direction: column;
align-items: center;
}
.centerPart{
width: 80vw;
display: grid;
grid-template-rows: repeat(3, 30px);
padding-top: 30px;
}
.community-title {
width: 80vw;
display: flex;
justify-content: center;
}
.rightPart{
width: 80vw;
padding: 20px;
}
}
@media (max-width: 415px) {
.link-list a{
font-size: 14px;
}
}
@media (max-width: 376px) {
.link-list a{
font-size: 12px;
}
}
</style> </style>

View File

@ -1,6 +1,15 @@
<template> <template>
<header class="header fixed"> <header class="header fixed">
<div class="menu-list">
<div class="logo_header"><img src="@/assets/main/p1/icon_logo_t.png"></div> <div class="logo_header"><img src="@/assets/main/p1/icon_logo_t.png"></div>
<div data-menuanchor="home" class="marked_icon">
<a href="/market"><img src="@/assets/main/p1/btn_market.png"></a>
</div>
<div class="menu-icon" @click="toggleDrop">
<img v-if="!dropShow" src="@/assets/main/p1/menu.png">
<img v-if="dropShow" src="@/assets/main/p1/close.png">
</div>
</div>
<div class="menu_fullpage" > <div class="menu_fullpage" >
<ul> <ul>
<li data-menuanchor="home" @click="changeSection" :class="{'active': currentSection === 'home'}"> <li data-menuanchor="home" @click="changeSection" :class="{'active': currentSection === 'home'}">
@ -18,8 +27,24 @@
<li data-menuanchor="chip" @click="changeSection" :class="{'active': currentSection === 'chip'}"> <li data-menuanchor="chip" @click="changeSection" :class="{'active': currentSection === 'chip'}">
<a href="#chip_section"><img src="@/assets/main/p1/btn_chip.png"></a> <a href="#chip_section"><img src="@/assets/main/p1/btn_chip.png"></a>
</li> </li>
<li data-menuanchor="home" > </ul>
<a href="/market"><img src="@/assets/main/p1/btn_market.png"></a> </div>
<div class="menu_drop" v-if="dropShow">
<ul>
<li data-menuanchor="home" @click="changeSection" :class="{'active': currentSection === 'home'}">
<a href="#home_section">HOME</a>
</li>
<li data-menuanchor="video" @click="changeSection" :class="{'active': currentSection === 'video'}" >
<a href="#video_section">VIDEO</a>
</li>
<li data-menuanchor="gameplay" @click="changeSection" :class="{'active': currentSection === 'gameplay'}">
<a href="#gameplay_section">GAMEPLAY</a>
</li>
<li data-menuanchor="nft" @click="changeSection" :class="{'active': currentSection === 'nft'}">
<a href="#nft_section">NFT ITEM</a>
</li>
<li data-menuanchor="chip" @click="changeSection" :class="{'active': currentSection === 'chip'}">
<a href="#chip_section">CHIP</a>
</li> </li>
</ul> </ul>
</div> </div>
@ -42,12 +67,18 @@ declare module 'vue/types/vue' {
props: ['currentSection'] props: ['currentSection']
}) })
export default class extends Vue { export default class extends Vue {
private dropShow = false
changeSection(e: PointerEvent) { changeSection(e: PointerEvent) {
this.dropShow = false
const target = e.currentTarget as HTMLElement const target = e.currentTarget as HTMLElement
if (target) { if (target) {
this.$emit('sectionChange', target.dataset.menuanchor) this.$emit('section-change', target.dataset.menuanchor)
} }
} }
toggleDrop() {
this.dropShow = !this.dropShow
}
} }
</script> </script>
@ -57,22 +88,27 @@ export default class extends Vue {
left: 0; left: 0;
right: 0; right: 0;
z-index: 99; z-index: 99;
align-items: center;
justify-content: space-between;
max-width: 1920px; max-width: 1920px;
margin: 0 auto; margin: 0 auto;
background-image: url('~@/assets/main/p1/bg_header.png'); background-image: url('~@/assets/main/p1/bg_header.png');
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
} }
.fixed.header { .fixed.header {
position: fixed; position: fixed;
display: flex; display: flex;
} }
.menu-list {
width: 100vw;
display: flex;
align-items: center;
justify-content: space-between;
}
.logo_header{ .logo_header{
width: 100px; width: 100px;
height: 80px; height: 80px;
margin-left: 8px;
} }
.logo_header img{ .logo_header img{
width: auto; width: auto;
@ -81,7 +117,10 @@ export default class extends Vue {
max-height: 100%; max-height: 100%;
} }
.menu_fullpage{ .menu_fullpage{
width: 100%; width: 50vw;
position: absolute;
top: 0;
right: 280px;
display: flex; display: flex;
-webkit-box-align: center; -webkit-box-align: center;
justify-content: flex-end; justify-content: flex-end;
@ -95,7 +134,8 @@ export default class extends Vue {
lign-items: center; lign-items: center;
list-style: none; list-style: none;
padding-left: 0; padding-left: 0;
margin-bottom: 0; margin-top: 8px;
margin-bottom: 8px;
} }
.menu_fullpage ul li { .menu_fullpage ul li {
padding: 28px 10px 0; padding: 28px 10px 0;
@ -103,12 +143,80 @@ export default class extends Vue {
text-align: -webkit-match-parent; text-align: -webkit-match-parent;
margin-left: 30px; margin-left: 30px;
} }
.menu_fullpage ul li:last-child {
padding-top: 8px;
}
.menu_fullpage ul .active{ .menu_fullpage ul .active{
background-image: url('~@/assets/main/p1/btn_bg.png'); background-image: url('~@/assets/main/p1/btn_bg.png');
background-repeat: repeat-x; background-repeat: repeat-x;
background-position: 0 21px; background-position: 0 17px;
}
.marked_icon {
margin-top: 8px;
}
.menu-icon {
display: none;
}
@media (max-width: 767px) {
.header {
font-size: 11px;
display: block;
}
.logo_header{
width: 50px;
height: 40px;
}
.menu_fullpage{
display: none;
}
.menu_drop {
display: flex;
position: absolute;
top: 50px;
right: 0;
width: 50vw;
background-image: url('~@/assets/main/p1/bg_header.png');
background-repeat: no-repeat;
background-size: 100% 100%;
justify-content: flex-start;
padding-bottom: 20px;
}
.menu_drop ul .active{
background-image: none;
}
.menu_drop ul {
flex-direction: column;
display: flex;
-webkit-box-align: center;
lign-items: center;
list-style: none;
padding-left: 0;
margin-top: 8px;
margin-bottom: 8px;
}
.menu_drop ul li {
padding: 28px 10px 0;
display: list-item;
text-align: -webkit-match-parent;
margin-left: 30px;
color: white;
}
.menu_drop ul li a {
color: white;
text-decoration: none;
font-size: 3vw;
}
.marked_icon{
margin-bottom: 8px;
width: 80vw;
}
.marked_icon img {
width: 160px;
float: right;
}
.menu-icon{
display: inherit;
width: 32px;
height: 32px;
}
} }
</style> </style>

View File

@ -2,7 +2,7 @@
<section id="nft_section" data-anchor="nft"> <section id="nft_section" data-anchor="nft">
<div class="title"> <div class="title">
<img src="@/assets/main/p3/txt_title.png"> <img src="@/assets/main/p3/txt_title.png">
<span class="text">how old are you</span> <span class="text">Earn your NFTs item by playing the game and sell it on the markedplace to make money.</span>
</div> </div>
<card-scroller class="card-scroller"></card-scroller> <card-scroller class="card-scroller"></card-scroller>
</section> </section>
@ -34,7 +34,7 @@ export default class extends Vue {
} }
.title { .title {
position: absolute; position: absolute;
top: 0; top: 100px;
left: 0; left: 0;
right: 0; right: 0;
display: flex; display: flex;
@ -48,13 +48,22 @@ export default class extends Vue {
.title .text{ .title .text{
color: white; color: white;
font-size: 28px; font-size: 28px;
margin: 5px 15px;
text-align: center;
text-shadow: 0 0 0.1em #fbc369, 0 0 0.1em #fbc369;
}
@media (max-width: 767px) {
.title img{
width: 281px;
top: 5vh;
} }
.card-scroller { .card-scroller {
position: absolute; height: 70vh;
left: 0; }
right: 0; .title .text{
bottom: 0; font-size: 14px;
height: 766px; }
} }
</style> </style>

View File

@ -1,5 +1,16 @@
<template> <template>
<section id="video_section" data-anchor="video"></section> <section id="video_section" data-anchor="video">
<video
width="100%"
height="100%"
loop
playsinline
crossorigin="anonymous"
autoplay
>
<source :src="videoUrl">
</video>
</section>
</template> </template>
<script lang="ts"> <script lang="ts">
@ -12,12 +23,13 @@ import { Component, Vue } from 'vue-property-decorator'
} }
}) })
export default class extends Vue { export default class extends Vue {
private videoUrl = 'https://cdn.cebg.games/video/v2.mp4'
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
#video_section { #video_section {
background-image: url('~@/assets/main//p2/bg_p2.png'); background-image: url('~@/assets/main/p2/bg_p2.png');
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
} }

View File

@ -1,9 +1,13 @@
export interface ISpineData { export interface ISpineData {
id: string id: string
skelName: string skelName?: string
animName: string animName?: string
name?: string
repeat: boolean repeat: boolean
scale?: number scale?: number
price?: string
class?: number
type?: number
} }
export class SpineRender { export class SpineRender {
@ -45,8 +49,8 @@ export class SpineRender {
} }
init({ skelName, animName, scale, repeat }: ISpineData) { init({ skelName, animName, scale, repeat }: ISpineData) {
this.skelName = skelName this.skelName = skelName!
this.animName = animName this.animName = animName || 'animation'
this.repeat = repeat this.repeat = repeat
this.scale = scale || this.scale this.scale = scale || this.scale
// Create a simple shader, mesh, model-view-projection matrix and SkeletonRenderer. // Create a simple shader, mesh, model-view-projection matrix and SkeletonRenderer.
@ -95,22 +99,22 @@ export class SpineRender {
animationState.setAnimation(0, initialAnimation, self.repeat) animationState.setAnimation(0, initialAnimation, self.repeat)
animationState.addListener({ animationState.addListener({
start: function(track: spine.TrackEntry) { start: function(track: spine.TrackEntry) {
console.log('Animation on track ' + track.trackIndex + ' started') // console.log('Animation on track ' + track.trackIndex + ' started')
}, },
interrupt: function(track: spine.TrackEntry) { interrupt: function(track: spine.TrackEntry) {
console.log('Animation on track ' + track.trackIndex + ' interrupted') // console.log('Animation on track ' + track.trackIndex + ' interrupted')
}, },
end: function(track: spine.TrackEntry) { end: function(track: spine.TrackEntry) {
console.log('Animation on track ' + track.trackIndex + ' ended') // console.log('Animation on track ' + track.trackIndex + ' ended')
}, },
dispose: function(track: spine.TrackEntry) { dispose: function(track: spine.TrackEntry) {
console.log('Animation on track ' + track.trackIndex + ' disposed') // console.log('Animation on track ' + track.trackIndex + ' disposed')
}, },
complete: function(track: spine.TrackEntry) { complete: function(track: spine.TrackEntry) {
console.log('Animation on track ' + track.trackIndex + ' completed') // console.log('Animation on track ' + track.trackIndex + ' completed')
}, },
event: function(track: spine.TrackEntry, event: spine.Event) { event: function(track: spine.TrackEntry, event: spine.Event) {
console.log('Event on track ' + track.trackIndex + ': ' + JSON.stringify(event)) // console.log('Event on track ' + track.trackIndex + ': ' + JSON.stringify(event))
} }
}) })

View File

@ -2,7 +2,7 @@
<div> <div>
<main-header <main-header
:current-section="section" :current-section="section"
@sectionChange="topMenuClicked" @section-change="topMenuClicked"
></main-header> ></main-header>
<main id="fullpage"> <main id="fullpage">
<home-section ></home-section> <home-section ></home-section>
@ -60,5 +60,10 @@ section{
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
} }
@media (max-width: 767px) {
#fullpage{
width: 100vw;
}
}
</style> </style>