态势感知平台-开源生态与贡献价值全景-武汉4项开源数据统计组件抽离
This commit is contained in:
155
src/views/Jyh/ecosystem/components/StatsGlass.vue
Normal file
155
src/views/Jyh/ecosystem/components/StatsGlass.vue
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
<template>
|
||||||
|
<div class="stats-glass-bar">
|
||||||
|
<div class="stat-node">
|
||||||
|
<span class="stat-value">{{ activeDevelopers }}</span>
|
||||||
|
<span class="stat-desc">活跃开发者</span>
|
||||||
|
</div>
|
||||||
|
<div class="stat-separator"></div>
|
||||||
|
<div class="stat-node">
|
||||||
|
<span class="stat-value">{{ openSourceProjects }}</span>
|
||||||
|
<span class="stat-desc">开源项目</span>
|
||||||
|
</div>
|
||||||
|
<div class="stat-separator"></div>
|
||||||
|
<div class="stat-node">
|
||||||
|
<span class="stat-value">{{ openSourceCompanies }}</span>
|
||||||
|
<span class="stat-desc">开源企业</span>
|
||||||
|
</div>
|
||||||
|
<div class="stat-separator"></div>
|
||||||
|
<div class="stat-node">
|
||||||
|
<span class="stat-value">{{ industryValuation }}</span>
|
||||||
|
<span class="stat-desc">产业估值</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { defineProps } from 'vue';
|
||||||
|
|
||||||
|
// 定义props,便于从父组件或API获取数据
|
||||||
|
const props = defineProps({
|
||||||
|
activeDevelopers: {
|
||||||
|
type: String,
|
||||||
|
default: '200万+'
|
||||||
|
},
|
||||||
|
openSourceProjects: {
|
||||||
|
type: String,
|
||||||
|
default: '300万+'
|
||||||
|
},
|
||||||
|
openSourceCompanies: {
|
||||||
|
type: String,
|
||||||
|
default: '500+'
|
||||||
|
},
|
||||||
|
industryValuation: {
|
||||||
|
type: String,
|
||||||
|
default: '2800亿'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.stats-glass-bar {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
/* 布局控制:撑满容器并增加内边距 */
|
||||||
|
width: 100%;
|
||||||
|
padding: 2rem 4rem;
|
||||||
|
//margin: 2rem 0;
|
||||||
|
|
||||||
|
/* 深色玻璃拟态背景 */
|
||||||
|
background: rgba(255, 255, 255, 0.02);
|
||||||
|
backdrop-filter: blur(20px);
|
||||||
|
-webkit-backdrop-filter: blur(20px);
|
||||||
|
|
||||||
|
/* 极细微的边框勾勒 */
|
||||||
|
border-radius: 1rem;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||||
|
|
||||||
|
/* 外阴影与内发光,增加悬浮感 */
|
||||||
|
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.3),
|
||||||
|
inset 0 0 20px rgba(255, 255, 255, 0.02);
|
||||||
|
|
||||||
|
transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-color: rgba(56, 189, 248, 0.4);
|
||||||
|
background: rgba(255, 255, 255, 0.04);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-node {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.75rem;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: scale(1.05);
|
||||||
|
.stat-value {
|
||||||
|
text-shadow: 0 0 25px rgba(56, 189, 248, 0.8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-value {
|
||||||
|
/* 科技感亮蓝渐变 */
|
||||||
|
font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||||
|
font-size: 2.25rem;
|
||||||
|
font-weight: 800;
|
||||||
|
background: linear-gradient(180deg, #fff 0%, #38bdf8 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
|
||||||
|
/* 基础发光效果 */
|
||||||
|
filter: drop-shadow(0 0 10px rgba(56, 189, 248, 0.3));
|
||||||
|
letter-spacing: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-desc {
|
||||||
|
/* 在黑底上使用半透明白色,更有高级感 */
|
||||||
|
color: rgba(255, 255, 255, 0.6);
|
||||||
|
font-size: 0.875rem;
|
||||||
|
font-weight: 500;
|
||||||
|
letter-spacing: 0.1rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-separator {
|
||||||
|
/* 渐隐分割线 */
|
||||||
|
width: 1px;
|
||||||
|
height: 3rem;
|
||||||
|
background: linear-gradient(
|
||||||
|
to bottom,
|
||||||
|
rgba(255, 255, 255, 0),
|
||||||
|
rgba(255, 255, 255, 0.2),
|
||||||
|
rgba(255, 255, 255, 0)
|
||||||
|
);
|
||||||
|
margin: 0 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式适配 */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
.stats-glass-bar {
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
.stat-value {
|
||||||
|
font-size: 1.75rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.stats-glass-bar {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 2rem;
|
||||||
|
}
|
||||||
|
.stat-separator {
|
||||||
|
width: 50%;
|
||||||
|
height: 1px;
|
||||||
|
background: linear-gradient(to right, transparent, rgba(255,255,255,0.2), transparent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -22,28 +22,9 @@
|
|||||||
<!-- </svg>-->
|
<!-- </svg>-->
|
||||||
<!-- <span>汇聚武汉开源力量,共建城市开源生态</span>-->
|
<!-- <span>汇聚武汉开源力量,共建城市开源生态</span>-->
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
|
|
||||||
<!-- 武汉4项核心开源数据统计 -->
|
<!-- 武汉4项核心开源数据统计 -->
|
||||||
<div class="stats-glass-bar">
|
<StatsGlass />
|
||||||
<div class="stat-node">
|
|
||||||
<span class="stat-value">200万+</span>
|
|
||||||
<span class="stat-desc">活跃开发者</span>
|
|
||||||
</div>
|
|
||||||
<div class="stat-separator"></div>
|
|
||||||
<div class="stat-node">
|
|
||||||
<span class="stat-value">300万+</span>
|
|
||||||
<span class="stat-desc">开源项目</span>
|
|
||||||
</div>
|
|
||||||
<div class="stat-separator"></div>
|
|
||||||
<div class="stat-node">
|
|
||||||
<span class="stat-value">500+</span>
|
|
||||||
<span class="stat-desc">开源企业</span>
|
|
||||||
</div>
|
|
||||||
<div class="stat-separator"></div>
|
|
||||||
<div class="stat-node">
|
|
||||||
<span class="stat-value">2800亿</span>
|
|
||||||
<span class="stat-desc">产业估值</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -266,6 +247,7 @@ import InfrastructureCoverageChart from './components/InfrastructureCoverageChar
|
|||||||
import UniversityClubStatsChart from './components/UniversityClubStatsChart.vue'
|
import UniversityClubStatsChart from './components/UniversityClubStatsChart.vue'
|
||||||
import CommunityGovernanceHealthChart from './components/CommunityGovernanceHealthChart.vue'
|
import CommunityGovernanceHealthChart from './components/CommunityGovernanceHealthChart.vue'
|
||||||
import VitalityWaveChart from './components/VitalityWaveChart.vue'
|
import VitalityWaveChart from './components/VitalityWaveChart.vue'
|
||||||
|
import StatsGlass from './components/StatsGlass.vue'
|
||||||
import { usePageResize } from '@/utils/hooks/usePageResize';
|
import { usePageResize } from '@/utils/hooks/usePageResize';
|
||||||
|
|
||||||
// 页面尺寸响应式
|
// 页面尺寸响应式
|
||||||
|
|||||||
Reference in New Issue
Block a user