CSS实现3D轮播卡片旋转变形-纵深效果-可视化大屏

文章描述了一个网页设计中使用ECharts库创建动态仪表盘以及集成3D地球效果的案例,展示了如何通过JavaScript实现数据可视化和3D旋转动画。
摘要由CSDN通过智能技术生成
// ---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博客

效果图

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值