feat: 修改图片位置
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 704 B |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 214 KiB |
Before Width: | Height: | Size: 388 KiB After Width: | Height: | Size: 388 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
@ -1,2 +1,3 @@
|
||||||
@use "src/rotate";
|
@use "src/rotate";
|
||||||
@use "src/transition";
|
@use "src/transition";
|
||||||
|
@use "src/line-move";
|
|
@ -0,0 +1,18 @@
|
||||||
|
@keyframes line-move {
|
||||||
|
0% {
|
||||||
|
transform: translateX(200%);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translateX(-100%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes line-move-alternate {
|
||||||
|
0% {
|
||||||
|
transform: rotateY(180deg) translateX(100%);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: rotateY(180deg) translateX(-200%);
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,7 +10,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.hover {
|
.hover {
|
||||||
transition: all 0.3s;
|
transition: all 0.4s;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
@mixin view-style-default($sidebar-width,$content-width) {
|
@mixin view-style-default($sidebar-width,$content-width,$item-bg) {
|
||||||
&__sidebar {
|
&__sidebar {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
&-item {
|
&-item {
|
||||||
padding: 9px 15px;
|
padding: 9px 15px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: rgba(14, 95, 255, 0.2);
|
background: $item-bg;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-tag {
|
&-tag {
|
||||||
|
|
|
@ -11,7 +11,7 @@ const route = useRoute();
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
|
|
||||||
onBeforeMount(() => {
|
onBeforeMount(() => {
|
||||||
appStore.setBackground('@/assets/images/common/bg/bg-layout.png');
|
appStore.setBackground('/images/common/bg/bg-layout.png');
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ const useAppStore = defineStore('appStore', {
|
||||||
const href = new URL(background, import.meta.url).href;
|
const href = new URL(background, import.meta.url).href;
|
||||||
this.background = `url(${href})`;
|
this.background = `url(${href})`;
|
||||||
} else {
|
} else {
|
||||||
const href = new URL('@/assets/images/common/bg/bg-layout.png', import.meta.url).href;
|
const href = new URL('/images/common/bg/bg-layout.png', import.meta.url).href;
|
||||||
this.background = `url(${href})`;
|
this.background = `url(${href})`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
import type { Ref } from 'vue';
|
||||||
|
|
||||||
|
import echarts from '@/plugins/echarts';
|
||||||
|
import { debounceChart, graphicLinearGradient } from '@/utils/chart';
|
||||||
|
|
||||||
|
let myChart = null;
|
||||||
|
|
||||||
|
const option = {
|
||||||
|
backgroundColor: 'transparent',
|
||||||
|
grid: { top: '54px', right: '14px', left: '14px', bottom: '24px' },
|
||||||
|
title: {
|
||||||
|
text: '最近12个月税收概览',
|
||||||
|
textStyle: { color: '#fff', fontSize: 22, fontWeight: 'lighter' },
|
||||||
|
},
|
||||||
|
tooltip: {},
|
||||||
|
legend: { show: false },
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
show: true,
|
||||||
|
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
|
||||||
|
// data: category,
|
||||||
|
itemStyle: { color: '#ccc' },
|
||||||
|
splitLine: { show: true, lineStyle: { color: '#333', width: 1, type: 'solid' } },
|
||||||
|
splitArea: { show: false },
|
||||||
|
},
|
||||||
|
yAxis: { show: true, type: 'value', splitLine: { show: false } },
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '金额',
|
||||||
|
type: 'bar',
|
||||||
|
barWidth: 14,
|
||||||
|
itemStyle: {
|
||||||
|
borderRadius: 5,
|
||||||
|
color: graphicLinearGradient('#66FFFF', '#66FFFF33'),
|
||||||
|
},
|
||||||
|
data: [2, 8, 3, 7, 1, 9, 18, 3, 7, 1, 9, 6],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 渲染图表 */
|
||||||
|
export const renderEcharts = (element: Ref<HTMLDivElement>) => {
|
||||||
|
myChart = echarts.init(element.value, null, {
|
||||||
|
renderer: 'svg',
|
||||||
|
devicePixelRatio: window.devicePixelRatio,
|
||||||
|
});
|
||||||
|
|
||||||
|
debounceChart(myChart);
|
||||||
|
|
||||||
|
myChart.setOption(option);
|
||||||
|
};
|
|
@ -9,9 +9,10 @@ let myChart = null;
|
||||||
|
|
||||||
const option = {
|
const option = {
|
||||||
backgroundColor: 'transparent',
|
backgroundColor: 'transparent',
|
||||||
grid: { top: '19%', right: 9, left: 9, bottom: '20%' },
|
grid: { top: '9%', right: 9, left: 9, bottom: '20%' },
|
||||||
tooltip: {},
|
tooltip: {},
|
||||||
legend: {
|
legend: {
|
||||||
|
show: false,
|
||||||
data: [
|
data: [
|
||||||
{ name: '出园', icon: 'rect', itemStyle: { color: '#32C5FF' } },
|
{ name: '出园', icon: 'rect', itemStyle: { color: '#32C5FF' } },
|
||||||
{ name: '入园', icon: 'rect', itemStyle: { color: '#16CEB9' } },
|
{ name: '入园', icon: 'rect', itemStyle: { color: '#16CEB9' } },
|
||||||
|
|
|
@ -1,19 +1,30 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
|
|
||||||
|
import { renderEcharts } from '@/views/big-data/charts/content-bottom';
|
||||||
|
|
||||||
const chart = ref<HTMLDivElement>();
|
const chart = ref<HTMLDivElement>();
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
renderEcharts(chart);
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="content-bottom">
|
<div class="big-data__sidebar-item">
|
||||||
<div ref="chart" />
|
<div ref="chart" class="big-data__sidebar-item-chart" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.content-bottom {
|
.big-data__sidebar-item {
|
||||||
width: 800px;
|
width: 800px;
|
||||||
height: 377px;
|
height: 377px;
|
||||||
background: mediumpurple;
|
|
||||||
|
&-chart {
|
||||||
|
padding: 29px 25px 21px 28px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -3,10 +3,15 @@ import { onMounted, ref } from 'vue';
|
||||||
|
|
||||||
const isActive = ref(true);
|
const isActive = ref(true);
|
||||||
|
|
||||||
onMounted(() => {
|
/** 改变移动状态 */
|
||||||
|
const changeMoveState = () => {
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
isActive.value = !isActive.value;
|
isActive.value = !isActive.value;
|
||||||
}, 2000);
|
}, 2000);
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
changeMoveState();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -18,7 +23,9 @@ onMounted(() => {
|
||||||
alt=""
|
alt=""
|
||||||
src="@/assets/images/big-data/bg/bg-middle-move.png"
|
src="@/assets/images/big-data/bg/bg-middle-move.png"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<h1>工作台</h1>
|
<h1>工作台</h1>
|
||||||
|
|
||||||
<img
|
<img
|
||||||
:class="[isActive ? 'move-bottom' : 'move-top']"
|
:class="[isActive ? 'move-bottom' : 'move-top']"
|
||||||
alt=""
|
alt=""
|
||||||
|
@ -59,26 +66,7 @@ onMounted(() => {
|
||||||
}
|
}
|
||||||
|
|
||||||
.move-bottom {
|
.move-bottom {
|
||||||
animation: 2s linear 0s infinite normal none running line-move-top;
|
animation: 2s linear 0s infinite normal none running line-move-alternate;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes line-move-top {
|
|
||||||
0% {
|
|
||||||
transform: translateX(200%);
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
transform: translateX(-100%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes line-move {
|
|
||||||
0% {
|
|
||||||
transform: rotateY(180deg) translateX(100%);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: rotateY(180deg) translateX(-200%);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
import { getImage } from '@/utils/image';
|
import { getImage } from '@/utils/image';
|
||||||
|
|
||||||
const list = [
|
const list = [
|
||||||
{ title: '员工', img: '../assets/images/big-data/bg/bg-content-top-1.png' },
|
{ title: '员工', img: '/images/big-data/bg-content-top-1.png' },
|
||||||
{ title: '智慧大楼', img: '../assets/images/big-data/bg/bg-content-top-2.png' },
|
{ title: '智慧大楼', img: '/images/big-data/bg-content-top-2.png' },
|
||||||
{ title: '智慧设备', img: '../assets/images/big-data/bg/bg-content-top-3.png' },
|
{ title: '智慧设备', img: '/images/big-data/bg-content-top-3.png' },
|
||||||
{ title: '数据报表', img: '../assets/images/big-data/bg/bg-content-top-4.png' },
|
{ title: '数据报表', img: '/images/big-data/bg-content-top-4.png' },
|
||||||
];
|
];
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import BigDataRight from '@/views/big-data/components/big-data-right/index.vue';
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
|
|
||||||
onBeforeMount(async () => {
|
onBeforeMount(async () => {
|
||||||
appStore.setBackground('@/assets/images/common/bg/bg-secondary.png');
|
appStore.setBackground('/images/common/bg/bg-secondary.png');
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -30,6 +30,6 @@ onBeforeMount(async () => {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
@include view-style-default(530px, 748px);
|
@include view-style-default(530px, 748px, #122953b3);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -1,38 +1,40 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { getImage } from '@/utils/image';
|
|
||||||
|
|
||||||
const list = [
|
const list = [
|
||||||
{
|
{
|
||||||
img: '../assets/images/business-supervision/bg/content/bg-middle-1.png',
|
img: '/images/business-supervision/content/bg-middle-1.png',
|
||||||
title: '员工',
|
title: '员工',
|
||||||
describe: '相关员工',
|
describe: '相关员工',
|
||||||
amount: 365,
|
amount: 365,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
img: '../assets/images/business-supervision/bg/content/bg-middle-2.png',
|
img: '/images/business-supervision/content/bg-middle-2.png',
|
||||||
title: '智慧大楼',
|
title: '智慧大楼',
|
||||||
describe: '区域面积/㎡',
|
describe: '区域面积/㎡',
|
||||||
amount: 365,
|
amount: 365,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
img: '../assets/images/business-supervision/bg/content/bg-middle-3.png',
|
img: '/images/business-supervision/content/bg-middle-3.png',
|
||||||
title: '智慧设备',
|
title: '智慧设备',
|
||||||
describe: '设备总数',
|
describe: '设备总数',
|
||||||
amount: 1123,
|
amount: 1123,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
img: '../assets/images/business-supervision/bg/content/bg-middle-4.png',
|
img: '/images/business-supervision/content/bg-middle-4.png',
|
||||||
title: '数据报表',
|
title: '数据报表',
|
||||||
describe: '报表下载总数',
|
describe: '报表下载总数',
|
||||||
amount: 287,
|
amount: 287,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const getImage = (url) => {
|
||||||
|
return new URL(url, import.meta.url).href;
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<ul class="business-supervision__middle">
|
<ul class="business-supervision__middle">
|
||||||
<li v-for="(item, index) in list" :key="index">
|
<li v-for="(item, index) in list" :key="index">
|
||||||
<img :alt="`bg-middle-${index}`" :src="getImage(item.img)" />
|
<img :src="item.img" alt="" />
|
||||||
<h2>{{ item.title }}</h2>
|
<h2>{{ item.title }}</h2>
|
||||||
<div class="business-supervision__middle-detail">
|
<div class="business-supervision__middle-detail">
|
||||||
<strong>{{ item.amount }}</strong>
|
<strong>{{ item.amount }}</strong>
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
<script lang="tsx" setup>
|
<script lang="tsx" setup>
|
||||||
import { getImage } from '@/utils/image';
|
|
||||||
|
|
||||||
const list = [
|
const list = [
|
||||||
{
|
{
|
||||||
title: '今日出口额 / 万元',
|
title: '今日出口额 / 万元',
|
||||||
|
@ -51,12 +49,7 @@ const contentEl = () => {
|
||||||
))}
|
))}
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
<img
|
<img alt="card-1" src={`/images/business-supervision/content/bg-card-${index + 1}.png`} />
|
||||||
alt="card-1"
|
|
||||||
src={getImage(
|
|
||||||
`../assets/images/business-supervision/bg/content/bg-card-${index + 1}.png`
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</>
|
</>
|
||||||
|
|
|
@ -9,7 +9,7 @@ import BusinessSupervisionRight from '@/views/business-supervision/components/bu
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
|
|
||||||
onBeforeMount(() => {
|
onBeforeMount(() => {
|
||||||
appStore.setBackground('@/assets/images/common/bg/bg-secondary.png');
|
appStore.setBackground('/images/common/bg/bg-secondary.png');
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -30,6 +30,6 @@ onBeforeMount(() => {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
@include view-style-default(530px, 759px);
|
@include view-style-default(530px, 759px, #0e5fff33);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -2,6 +2,14 @@
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
|
const list = [
|
||||||
|
{ title: '智慧停车', image: '/images/welcome/car.png', target: '/smart-park' },
|
||||||
|
{ title: '智慧配送', image: '/images/welcome/distribution.png', target: '/smart-park' },
|
||||||
|
{ title: '智慧渣土', image: '/images/welcome/muck.png', target: '/smart-park' },
|
||||||
|
{ title: '智慧洁城', image: '/images/welcome/clean-city.png', target: '/smart-park' },
|
||||||
|
{ title: '智慧路灯', image: '/images/welcome/lamp.png', target: '/smart-park' },
|
||||||
|
];
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -14,25 +22,9 @@ const router = useRouter();
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<ul class="welcome__content-list">
|
<ul class="welcome__content-list">
|
||||||
<li @click="router.push('/smart-park')">
|
<li v-for="(item, index) in list" :key="index" @click="router.push(item.target)">
|
||||||
<img alt="car" src="@/assets/images/welcome/icon/center/car.png" />
|
<img :src="item.image" alt="distribution" />
|
||||||
<span>智慧停车</span>
|
<span>{{ item.title }}</span>
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<img alt="distribution" src="@/assets/images/welcome/icon/center/distribution.png" />
|
|
||||||
<span>智慧配送</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<img alt="muck" src="@/assets/images/welcome/icon/center/muck.png" />
|
|
||||||
<span>智慧渣土</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<img alt="clean-city" src="@/assets/images/welcome/icon/center/clean-city.png" />
|
|
||||||
<span>智慧洁城</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<img alt="lamp" src="@/assets/images/welcome/icon/center/lamp.png" />
|
|
||||||
<span>智慧路灯</span>
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -48,6 +40,7 @@ const router = useRouter();
|
||||||
|
|
||||||
&-inner {
|
&-inner {
|
||||||
margin: 156px 0 0 0;
|
margin: 156px 0 0 0;
|
||||||
|
animation: flipInY 1s 1.5s;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
p {
|
||||||
|
@ -74,7 +67,6 @@ const router = useRouter();
|
||||||
height: 260px;
|
height: 260px;
|
||||||
|
|
||||||
li {
|
li {
|
||||||
position: relative;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
@ -83,10 +75,7 @@ const router = useRouter();
|
||||||
width: 280px;
|
width: 280px;
|
||||||
height: 260px;
|
height: 260px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
transition: all 1s;
|
||||||
&:nth-child(n):hover {
|
|
||||||
background: linear-gradient(to bottom, #164ec2c9, #1fa3dec9);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:nth-child(1) {
|
&:nth-child(1) {
|
||||||
background: linear-gradient(to bottom, #006efec9, #494affc9);
|
background: linear-gradient(to bottom, #006efec9, #494affc9);
|
||||||
|
@ -108,9 +97,14 @@ const router = useRouter();
|
||||||
background: linear-gradient(to bottom, #0ad1d1c9, #10607cc9);
|
background: linear-gradient(to bottom, #0ad1d1c9, #10607cc9);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&:nth-child(n):hover {
|
||||||
|
background: linear-gradient(to bottom, #164ec2c9, #1fa3dec9);
|
||||||
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
width: 108px;
|
width: 108px;
|
||||||
height: 108px;
|
height: 108px;
|
||||||
|
animation: headShake 2s ease-out alternate infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
|
|
|
@ -16,5 +16,6 @@ import WelcomeFooter from '@/views/welcome/components/welcome-footer.vue';
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background: url('@/assets/images/welcome/bg/bg-particle.png') no-repeat center;
|
background: url('@/assets/images/welcome/bg/bg-particle.png') no-repeat center;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
|
animation: bounceInUp 1s;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|