// ---html
<!-- 左右两侧 -->
<div class="sideListBox sideLeftParBox">
<div class="sideLeftBox">
<div class="sideItemBox">
<div class="titleText">xxx<span>(元)</span></div>
<div class="valText">75</div>
<div class="botLine"></div>
<div class="guageChartBox" id="guageChart1"></div>
<div class="yusuanValText">xxx<span>18</span>%</div>
</div>
<div class="sideItemBox">
<div class="titleText">xxx<span>(%)</span></div>
<div class="valText">52.5</div>
<div class="botLine"></div>
<div class="guageChartBox" id="guageChart2"></div>
<div class="yusuanValText">xxx<span>52.2</span>%</div>
</div>
<div class="sideItemBox">
<div class="titleText">xxx<span>(%)</span></div>
<div class="valText">6.5</div>
<div class="botLine"></div>
<div class="guageChartBox" id="guageChart3"></div>
<div class="yusuanValText">xxx<span>6.2</span>%</div>
</div>
</div>
</div>
<div class="sideListBox sideRightParBox">
<div class="sideRightBox">
<div class="sideItemBox">
<div class="titleText">xxx<span>(元)</span></div>
<div class="valText">90</div>
<div class="botLine"></div>
<div class="guageChartBox" id="guageChart4"></div>
<div class="yusuanValText">xxx<span>90</span>元</div>
</div>
<div class="sideItemBox">
<div class="titleText">xxx<span>(%)</span></div>
<div class="valText">1.9</div>
<div class="botLine"></div>
<div class="guageChartBox" id="guageChart5"></div>
<div class="yusuanValText">xxx<span>1.8</span>%</div>
</div>
<div class="sideItemBox">
<div class="titleText">xxx<span>(%)</span></div>
<div class="valText">16.7</div>
<div class="botLine"></div>
<div class="guageChartBox" id="guageChart6"></div>
<div class="yusuanValText">xxx<span>13</span>%</div>
</div>
</div>
</div>
<!-- 中间卡片 -->
<div class="centerCardListBox">
<div class="childCardBox">
<div class="cardItemBox cardItemBox1"><img src="assets/image/index/center/cenCardBj1.png"></div>
<div class="cardItemBox cardItemBox2""><img src="assets/image/index/center/cenCardBj2.png"></div>
<div class="cardItemBox cardItemBox3")"><img src="assets/image/index/center/cenCardBj3.png"></div>
<div class="cardItemBox cardItemBox4""><img src="assets/image/index/center/cenCardBj4.png"></div>
</div>
</div>
<!-- 3D地球 -->
<div #mapId id="mapIdBox" class="mapBox"></div>
// ---less
//左右两侧
.sideListBox{
text-align: center;
.sideItemBox{
height: 270px;
box-sizing: border-box;
margin-bottom: 12px;
position: relative;
overflow: hidden;
.titleText{
font-size: 28px;
color: #fff;
margin-top: 14px;
span{
font-size: 16px;
margin-left: 8px;
}
}
.valText{
font-family: DigifaceWide;
font-size: 40px;
color: #FFFFFF;
text-shadow: 1px 0 10px #0C3D69;
margin: 5px 0 0;
line-height: 52px;
}
.yusuanValText{
font-size: 20px;
color: #CADCFE;
position: absolute;
bottom: 16px;
width: 100%;
span{
// font-family: DigifaceWide;
margin-left: 5px;
margin-right: 3px;
}
}
.botLine{
width: 80%;
margin: 10px auto;
border-bottom: 1px solid rgba(255,255,255,.1);
}
.slinesChartBox{
width: 100%;
height: 80px;
}
.guageChartBox{
width: 100%;
height: 280px;
position: absolute;
top: 120px;
}
}
}
.sideLeftParBox{
top: 178px;
left: 0;
transform: translate3d(0px, 0px, 0px);
}
.sideLeftBox{
width: 315px;
height: 830px;
background: url("/image/index/center/sideBjLeft.png") no-repeat;
background-size: 100% 100%;
transform: perspective(400px) rotate3d(-2, 20, 0, 8deg);
}
.sideRightParBox{
top: 178px;
right: 0;
transform: translate3d(0px, 0px, 0px);
}
.sideRightBox{
width: 315px;
height: 830px;
background: url("/image/index/center/sideBjRight.png") no-repeat;
background-size: 100% 100%;
transform: perspective(400px) rotate3d(-2, -20, 0, 8deg);
}
//中间卡片
.centerCardListBox{
position: absolute;
left: 355px;
top: 240px;
z-index: 1;
width: 2045px;
height: 420px;
cursor: pointer;
.childCardBox{
position: relative;
display: flex;
height: 100%;
transform: translate3d(0px, 0px, 0px);
.cardItemBox{
position: absolute;
width: 320px;
height: 419px;
img{
width: 100%;
height: 100%;
}
}
.cardItemBox1{
transform: perspective(400px) rotate3d(-2, 20, 0, 8deg);
left: 0;
}
.cardItemBox2{
height: 380px;
transform: perspective(800px) rotate3d(-2, 20, 0, 8deg);
left: 340px;
top: 20px;
}
.cardItemBox3{
height: 380px;
transform: perspective(800px) rotate3d(-2, -20, 0, 8deg);
right: 340px;
top: 20px;
}
.cardItemBox4{
transform: perspective(400px) rotate3d(-2, -20, 0, 8deg);
right: 0;
}
}
}
//3D地球
.mapBox{
width: 680px;
height: 680px;
position: absolute;
z-index: 1;
left: 1038px;
top: 325px;
pointer-events: none;
}
// ---ts
ngAfterViewInit(){
this.initCardGuegeChart('guageChart1',18)
}
// 仪表盘
initCardGuegeChart(idName,val){
let that = this;
var chartDom = document.getElementById(idName);
var myChart = echarts.init(chartDom);
var option;
var numbers = {"max_achievement":100,"this_achievement":Number(val)};
option = {
tooltip: {
show: false,
},
series: [{
min: 0,
max: numbers.max_achievement,
startAngle: 135,
endAngle: 45,
radius: '80%',
splitNumber: 4, //刻度数量
name: '指标',
type: 'gauge',
axisLabel: { //字体大小和颜色
distance: -12,
textStyle: {
color: "#CADCFE",
fontSize: "12",
}
},
axisLine: { // 坐标轴线
lineStyle: { // 属性lineStyle控制线条样式
color: [
[numbers.this_achievement / numbers.max_achievement, '#4FEAFC'],
[1, '#CADCFE']
],
width: 0
}
},
axisTick: { // 坐标轴小标记
length: 10, // 属性length控制线长
lineStyle: { // 属性lineStyle控制线条样式
color: 'auto',
width: 1
}
},
splitLine: { // 分隔线
length: -10, // 属性length控制线长
lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式
color: 'auto',
width: 2
}
},
pointer: { //仪表盘指针
show: true,
length: '33%',
width: 2, // 指针大小
offsetCenter: [0, -50] ,
itemStyle: {
color: '#4FEAFC',
}
},
// markPoint: {// --- 仪表盘指针圆点
// data: [
// {
// x: '50%',
// y: '90',
// symbol: 'circle',
// symbolSize: 10,
// itemStyle: { color: '#4FEAFC' }
// },
// ],
// },
detail: {
show: false
},
data: [{
value: numbers.this_achievement,
name: '',
itemStyle: {
color: '#4FEAFC',
shadowColor: 'rgba(0, 0, 0, 0.5)',
shadowBlur: 10
}
}]
}]
}
myChart.clear();
myChart.setOption(option);
window.addEventListener("resize", function (ev) {
myChart.resize();
})
}
//(3D地球相关代码地址:threeJs实现3D地球-旋转-自定义贴图-透明发光-CSDN博客)
效果图