当前位置: 首页 > news >正文

rotate旋转

效果:

代码:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .plane { position: absolute; } .card { height: 100px; width: 70px; border-radius: 10px; position: absolute; } .content { height: 500px; width: 800px; border: 1px solid green; position: absolute; display: flex; justify-content: center; align-items: center; transform: rotateX(-10deg); transform-style: preserve-3d; perspective: 1800px; } .container { height: 600px; transform-style: preserve-3d; width: 900px; perspective: 800px; border: 1px solid red; position: relative; display: flex; justify-content: center; align-items: center; } </style> </head> <body> <div class="container"> <div class="content"> <div class="plane"></div> <div class="card card0"></div> <div class="card card1"></div> <div class="card card2"></div> <div class="card card3"></div> <div class="card card4"></div> </div> </div> <script> const cards = [...document.getElementsByClassName("card")]; const radius = 300 cards.forEach(div => { div.style.backgroundColor = `#${Math.random().toString(16).slice(2,8)}` }) function setPosition(startAngle) { startAngle = startAngle / 180 * Math.PI const count = cards.length const angleDelta = Math.PI * 2 / count const angleArray = new Array(count).fill(0).map((_, index) => { return startAngle + index * angleDelta }) console.log(angleArray); cards.forEach((card,index) => { const transform = angleToCss(angleArray[index]) console.log(transform); card.style.transform = transform }) } function angleToCss(angle) { console.log(angle); angle = angle % (Math.PI * 2) if(angle < 0) { angle += Math.PI * 2 } const x = radius * Math.sin(angle) const z = radius * Math.cos(angle) return `translateX(${x}px) translateZ(${z}px)` } let count = 0 setInterval(()=>{ setPosition(count) count += 1 }, 50) </script> </body> </html>
http://www.jsqmd.com/news/1301018/

相关文章:

  • 2026太原沙发软包硬包怎么选?装修完才明白的区别 - LYL仔仔
  • Linux系统独立安装Python 2.7完整指南:编译配置与虚拟环境管理
  • 广水市智能化菌棒生产线厂家哪家好?2026避坑指南:4个常见坑+5条硬标准 - geo88
  • 2026重庆黄金回收迈入全透明时代!7家合规门店实地测评,山城市民闲置黄金变现参考 - 企业家观察员
  • 终极Linux打印机驱动指南:如何让100+型号打印机在Linux上完美工作
  • 企业内训考试平台怎么选
  • 获取2000+明日方舟高清游戏素材:开源资源库完整指南
  • 基于AT89C52单片机的简易电子琴设计与实现:从原理到实践
  • 不止监测能耗!园区绿色能碳平台帮园区挖掘节能降碳收益
  • 一个人录好的测试用例,团队怎么一起用?
  • 小克重黄金容易被轻视?2026 武汉黄金回收禹竞大小克重一视同仁 - 资讯洞察员
  • VRCT完全指南:5分钟掌握VRChat多语言交流神器
  • 工商营业执照怎么申请注销?工商营业执照注销完整流程是什么? - 信息快递
  • 主流日志收集与管理工具全景解析:分类拆解与企业选型指南 - 互联网科技品牌测评
  • 宝汁们,问卷填小技巧,学会啦记得免费留个小赞赞
  • 国产自动驾驶数据采集完整解决方案解析
  • 2026(新)日照 CMA 甲醛检测机构推荐:衡境测研等 5 家纯检测实验室 - 衡境测研
  • 如何高效配置Windows系统:专业用户的完整优化指南
  • Vue-ECharts 8.0:构建企业级数据可视化应用的终极解决方案
  • 如何让老旧电视焕发新生:MyTV-Android开源电视直播应用终极指南
  • 2026实力之选:上海电路板回收领域值得关注的品牌机构 - 卓企推荐
  • Windows下Python-docx安装指南:从环境配置到问题解决
  • 电商视觉营销:如何用6张主图打造爆款白裙
  • 中大型企业PLM管理系统品牌怎么选?2026年选型指南深度解读
  • 2026苏家屯区聚酯纤维吸音板厂家推荐,吸音棉厂家哪家好?源头厂家选购避坑指南 - geo88
  • ArkTS 进阶之道(26):@LocalStorageLink/@LocalStorageProp 页面级状态绑定边界——为啥双向绑定 vs 单向只读
  • 工频耐压测试仪采购避坑指南 - HVHIPOT
  • 2026莱州屋面防水墙体拆除公司哪家好|天衣防水超长质保 - geo88
  • 095、LLC谐振变换器的常见故障与排除
  • 2026年杭州美甲职业技能提升机构测评:杭州欧曼谛美甲学校好不好?附正规机构选型避坑指南 - 产业观察报