JavaScript、Vue实现大数据大屏展示3D旋转动画效果

效果

最近在写一些数据大屏的时候客户需要做个3D旋转动效的效果,简单整理之后写了一个小demo做下记录,先看一下效果:
在这里插入图片描述
当点击next的时候,整个模块旋转切换到下个菜单,点击prev的时候也可以切换到上一个菜单效果。

开始编写

  1. 首先我们先构建一个大体的dom结构,如下:
    在这里插入图片描述
  2. 编写基本的css样式,
//设置整个模块的大小,以及3D 元素距视图的距离
 .carousel {
            width: 100%;
            height: 600px;
            perspective: 500px;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            align-items: center;
        }
 .carousel figure {
            margin: 0;
            width: 420px;
            transform-style: preserve-3d;
            transition: transform 0.5s;
        }
        
        .carouselItem {
            width: 100%;
            height: 500px;
            box-sizing: border-box;
            cursor: pointer;
            -webkit-box-reflect: below 20px -webkit-linear-gradient(top, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, .5) 100%);
        }
        
        .itemContent {
            width: 100%;
            height: 100%;
            border: 1px solid rgba(0, 180, 220, 0.5);
            box-shadow: 0 0 4vw rgba(9, 46, 148, .3) inset;
            background: linear-gradient(180deg, rgba(9, 46, 148, 0.6), rgba(9, 46, 148, 0.3), rgba(9, 46, 148, 0.3), rgba(9, 46, 148, 0.6));
            border-radius: 4px;
            font-size: 4rem;
            font-weight: bolder;
            color: white;
            display: flex;
            align-items: center;
            justify-content: center;
            position: relative;
        }
        
        .carouselItem:not(:first-of-type) {
            position: absolute;
            left: 0;
            top: 0;
        }
  1. 重点的jq部分,代码如下:
  var figure = $("figure"),
            nav = $("nav"),
            items = $(".carouselItem"),
            n = items.length,
            theta = 2 * Math.PI / n,
            currImage = 0;
        setUpCarousel(n, items.width());

首先我们先获取所有需要的元素,以及设计初始值,并实现setUpCarousel方法

function setUpCarousel(n, s) {
            var apothem = s / (2 * Math.tan(Math.PI / n));
            figure.css('transformOrigin', '50% 50% ' + -apothem + 'px');
            items.css("padding", "40px " + $(".carousel").attr("data-gap") + "px 0");
            for (var i = 1; i < n; i++) {
                items.eq(i).css({
                    'transformOrigin': '50% 50% ' + -apothem + 'px',
                    'transform': 'rotateY(' + i * theta + 'rad)',
                });
            }
            rotateCarousel(currImage);
        }

其中我们通过获取所有的子元素,然后进行计算得出每个子元素需要占用多大的弧度位置,同时我们给父级修改其中心点位,通过获取子元素上面设置data-gap的值设置为padding值,之后给每个子元素都设置rotateY值,之后实现rotateCarousel方法.以及点击前进后退的方法,

 function rotateCarousel(index) {
            figure.css({
                "transform": "rotateX(0deg) rotateY(" + index * -theta + "rad)"
            });
        }
        $(".prev").click(() => {
            currImage--;
            rotateCarousel(currImage);
        })
        $(".next").click(() => {
            currImage++;
            rotateCarousel(currImage);
        })

我们直接修改父级的视角rotateY()即可.

下面补充自动旋转的效果代码:

 var xdeg = 0;
 setInterval(function() {
     xdeg = xdeg + 0.3;
     $('figure').css('transform', "rotateY(" + -xdeg + "deg)");
 }, 20);

附上全部脚本代码,欢迎批评指正.
在这里插入图片描述

@lauyu
关注 关注
  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
vue+js如何实现旋转动画
Missxu1895的博客
05-18 625
我是分为两种方式进行旋转动画显示的,一种是原生js一种是vue+js。 主要的效果如下图显示: 当点击具体的某一块的时候,该元素会旋转到圆盘最前面的中间位置显示,同时要有透视效果,就是远小近大(远处的盒子最小,近处的盒子最大。透明度同理。)第一种方法纯原生,代码如下:(根据代码给出解释) 这种首先给出了一个元素运动的运动轨迹以及动画。主要是既改变自身元素的旋转也改变背景圆盘的旋转。主要是用css完成。 第二种方法是用vue+js 用js代码去控制多个小球的时候运动轨迹
vue展示3D模型 -- vue-3d-model
热门推荐
Rainy_X的博客
08-14 1万+
一、搜集到的网址 3D模型库 three.js WebGL babylonJS ThingJS EverAPI 3D数据可视化库 echarts — 基于Canvas Highcharts —基于SVG d3.js — 基于SVG/Canvas+SVG g2.js — 基于Canvas 二、需求 尝试使用three.js后发现上手不是特别快,后来发现了vue-3d-model组件,能够很简单的展示3D模型 效果图如下 使用原因可看这篇文章 https://www.jianshu.com/p/
基于vue2 echarts3D旋转球体
最新发布
qq_44699269的博客
09-13 386
采用vue2+js实现echarts3D旋转球体的放大、缩小。旋转3D地球是echarts中的一种特殊效果,可以让地球以3D的形式旋转展示
[vue3+js]实现3d旋转效果
weixin_41521961的博客
07-03 616
【代码】[vue3+js]实现3d旋转效果
推荐开源项目:Vue Carousel 3D - 带您领略3D旋转的无限魅力
gitblog_00063的博客
05-16 717
推荐开源项目:Vue Carousel 3D - 带您领略3D旋转的无限魅力 项目地址:https://gitcode.com/gh_mirrors/vu/vue-carousel-3d 项目介绍 Vue Carousel 3D是一个精心打造的Vue.js插件,它为您的Web应用程序提供了引人入胜的3D轮播效果。这个组件库不仅易于使用,而且功能强大,可帮助开发者创造出独特且富有吸引力的用户体验。 ...
three.js + vue 实现物体公转(three.js实现简单动画
m0_65029152的博客
12-01 1840
结合vue和three.js实现物体公转效果
基于Javascript大数据大屏可视化设计源码
04-06
本资源提供了一套基于Javascript大数据大屏可视化设计源码,包含107个文件,其中包括48个JavaScript脚本文件,27个PNG图片文件,以及8个CSS样式文件。此外,还包括5个JSON配置文件,5个EJS模板文件,以及3个HTML...
vue大数据可视化(大屏展示) 模板案例分享 Ps
11-01
大数据可视化的领域中,Vue.js 可以与各种图表库结合,实现大屏展示的数据仪表盘。在这个模板案例中,我们将深入探讨如何使用 Vue.js 进行大数据的可视化呈现。 首先,我们要理解大数据的概念。大数据是指规模...
vue大数据可视化(大屏展示)解决方案
01-08
一个基于 vue、datav、Echart 框架的大数据可视化(大屏展示)模板,最近更新了详细的介绍说明,实现大数据可视化。通过 vue 组件实现数据动态刷新渲染,内部图表可自由替换。部分图表使用 DataV 自带组件,可自由...
Echarts+Vue3.0 大数据可视化项目,大数据可视化大屏系统源码
02-27
Echarts+Vue3.0 大数据可视化项目源码及教程 柱状图基本设置, 柱状图效果实现, 柱状图效果实现2--XAxis,yAxis, 饼状图基本设置, 饼状图效果实现, 折线图基本设置, 折线图效果实现, 折线图堆叠效果, 散点...
js-实现3D炫酷实时时钟翻转动画带倒影特效.rar
07-11
3D炫酷实时时钟翻转动画带倒影特效为您带来实时时钟带晃动动画js特效效果,超炫酷3D实时时钟翻转动画带倒影特效js,秒数随着翻转而翻转,纯js实现时钟翻转动画带带倒影特效。
vue-3d-model::camera:vue.js 3D模型查看器组件
02-06
vue-3d模型 vue.js基于threejs的3D模型查看器组件,受启发 一个展示三维模型的Vue组件,支持模型操作和模型点击事件,能自动缩放模型到合适的大小并校正偏移,支持多种格式的模型。 例 安装 使用npm npm install vue-3d-model --save 或使用脚本标签供全球使用 < script src =" https://unpkg.com/vue-3d-model/dist/vue-3d-model.umd.js " > </ script > 或下载并将其包含在您的html中 用法 < template> < model-obj src = "
Echarts+Vue3.0 大数据可视化项目,大数据可视化大屏系统源码+笔记
04-23
标题:Echarts+Vue3.0 大数据可视化项目构建 Echarts+Vue3.0 大数据可视化项目源码 1、可视化面板布局适配屏幕 2、利用ECharts 实现柱状图展示 核心技术: -基于 flexible.js + rem 智能大屏适配 - VScode cssrem...
vue展示3D模型(glb格式)
qq_42046017的博客
09-04 441
vue展示glb格式模型,可以缩放拖拽查看
Vue展示3d模型
baby_cheerup的专栏
10-27 9685
背景需求:公司系统后台,需要在页面上显示设计师传入的3d模型,并修改3d模型的参数(主要是对应的mtl中的材质图片) 因目前项目是用vue-cli搭建的框架,对比了下网上的资料参考,最后选择了vue-3d-model。 最后调研选用obj,mtl搭配的形式,但这个有个弊端,在模型特别大的时候会显示不出来或加载特别慢,最近也是正在考虑如何嵌入3dmax 暂时还没有好的方案执行???? 难点问题: 1.在引用3d模型,默认情况下,3d模型整体视觉效果暗淡无光,而且光度照不到的地方(底部和背面)是完全黑的
3D相册,拖拽旋转
威士忌荡出の忧伤的博客
10-30 1601
&lt;!doctype html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;title&gt;css3+3D相册&lt;/title&gt; &lt;script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"&amp
vue旋转合成动画
ㅤㅤㅤㅤ
01-06 658
实现:多种不同数量的布局,点击按钮启动旋转动画,在指定时间中间内容开启动画,接收数据回调信息。
vue 使用 three.js 展示3D模型 gltf glb fbx
weixin_44382108的博客
09-08 1808
vue 使用 three.js 展示3D模型 gltf glb fbx
vue项目中实现3D万花筒和3D文字旋转效果
deciduous_leaves的博客
07-17 1391
【代码】vue项目中实现3D万花筒和3D文字旋转效果
VUE3D旋转动画效果怎么实现
05-25
Vue实现 3D 旋转动画效果,可以使用 CSS3 的 `transform` 属性,结合 Vue 的过渡动画实现。 首先,需要在组件的样式中添加 `transform-style: preserve-3d;` 属性,以开启 3D 空间的支持。然后,通过对 `transform` 属性的设置,实现元素的旋转、平移等变换。 下面是一个简单的示例代码: ```html <template> <div class="cube-container"> <div class="cube" :style="{ transform: `rotateX(${rotateX}deg) rotateY(${rotateY}deg)` }" > <div class="face front">Front</div> <div class="face back">Back</div> <div class="face left">Left</div> <div class="face right">Right</div> <div class="face top">Top</div> <div class="face bottom">Bottom</div> </div> </div> </template> <script> export default { data() { return { rotateX: 0, rotateY: 0, }; }, methods: { handleMousemove(e) { const centerX = this.$el.offsetWidth / 2; const centerY = this.$el.offsetHeight / 2; const moveX = (e.clientX - centerX) / centerX; const moveY = (centerY - e.clientY) / centerY; this.rotateX = moveY * 30; this.rotateY = moveX * 30; }, }, }; </script> <style scoped> .cube-container { perspective: 1000px; } .cube { width: 200px; height: 200px; position: relative; transform-style: preserve-3d; transition: transform 0.5s ease; } .cube .face { position: absolute; width: 200px; height: 200px; padding: 20px; background-color: rgba(255, 255, 255, 0.8); line-height: 160px; text-align: center; font-size: 40px; font-weight: bold; box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.2); } .cube .front { transform: translateZ(100px); } .cube .back { transform: translateZ(-100px) rotateY(180deg); } .cube .left { transform: translateX(-100px) rotateY(-90deg); } .cube .right { transform: translateX(100px) rotateY(90deg); } .cube .top { transform: translateY(-100px) rotateX(90deg); } .cube .bottom { transform: translateY(100px) rotateX(-90deg); } </style> ``` 在上面的代码中,我们创建了一个 3D 立方体,并通过 `rotateX` 和 `rotateY` 控制立方体的旋转角度。在 `handleMousemove` 方法中,我们监听鼠标移动事件,并计算出鼠标的相对位置,用来调整旋转角度。 需要注意的是,我们给立方体容器设置了 `transition` 属性,以实现平滑的过渡效果。同时,我们也可以在过渡过程中,添加其他的 CSS 属性变化,以实现更加绚丽的效果。 这只是一个简单的示例,你可以根据自己的需求,调整代码实现更加复杂的 3D 动画效果
13
原创
26
点赞
111
收藏
3380
粉丝
关注
私信
写文章

热门文章

  • vue内解决可视化大屏内百度地图在css transform下缩放位置偏移的问题 7893
  • JavaScript、Vue实现大数据大屏展示3D旋转动画效果 7842
  • Vue打包后加载太慢,访问时间太久,记录项目的整个优化过程 6223
  • vue 使用addRoutes动态添加路由 跳转404路由的问题 5460
  • 关于VUE element-ui中 el-autocomplete输入后出现下拉框出现提示的小技巧 4934

最新评论

  • vue内解决可视化大屏内百度地图在css transform下缩放位置偏移的问题

    @lauyu: 是否没有设置scale缩放

  • vue内解决可视化大屏内百度地图在css transform下缩放位置偏移的问题

    拾叁382: 全屏之后上下左右都有留白

  • JavaScript、Vue实现大数据大屏展示3D旋转动画效果

    Lg_Xian: 博主 有分享吗

  • JavaScript、Vue实现大数据大屏展示3D旋转动画效果

    难度较大: 现在有9个元素 如果有几十个,怎么弄

  • vue内解决可视化大屏内百度地图在css transform下缩放位置偏移的问题

    一个不懂前端的前端: 你好博主,用您了提供的方法 ,坐标还是偏移

最新文章

  • Chatgpt AI聊天实现,技术NodeJs+uni-app+eventsource,流式响应,支持上下文聊天
  • Vue 项目安装依赖报错的情况,node版本不匹配情况
  • axios发送xml文件时,请求一直失败的,进行header配置
2023年3篇
2022年5篇
2021年1篇
2020年6篇

目录

目录

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@lauyu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳坪山网站建设公司西安百度网站优化培南山有什么网站优化廉江外贸网站优化优化网站建设哪家技术好网站优化简历设计网站推广优化外包公司无锡优化网站网站推广优化外包设计方案淄博吉安营销型网站优化营销公司网站怎样优化网站怎么优化怎样河南瓷砖行业网站优化推广方案徐州网站优化推广方式贵港网站排名优化费用鹿泉优化网站企业网站排名优化水准易速达石家庄学习网站优化技术太原网站关键词优化多少钱浙江省网站优化定制北京质量网站优化设计网站优化首页淄博网站的优化网站的优化舒心火4星瓷砖行业网站优化推广有用吗烟台网站优化公司扬州网站优化定做江门网站关键优化长春网站优化电话上城区企业网站优化服务沈阳网站优化电池香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化