日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3D标签云/滚动词条

發布時間:2024/1/1 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3D标签云/滚动词条 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

vue:

<!DOCTYPE html> <html> <head><title>svg3D標簽云</title><script src="https://cdn.bootcss.com/vue/2.2.0/vue.min.js"></script> </head> <body> <div id='app' ><svg :width='width' :height='height' @mousemove='listener($event)'><a :href="tag.href" v-for='tag in tags'><text :x='tag.x' :y='tag.y' :font-size='20 * (600/(600-tag.z))' :fill-opacity='((400+tag.z)/600)'>{{tag.text}}</text></a></svg> </div> <script>var app = new Vue({el: '#app',data: {width:700,height:700,tagsNum:20,RADIUS:200,speedX:Math.PI/360,speedY:Math.PI/360,tags: [],colors:[],},computed:{CX(){return this.width/2;},CY(){return this.height/2;}},created(){this.changeColors();//初始化標簽位置let tags=[];for(let i = 0; i < this.tagsNum; i++){let tag = {};let k = -1 + (2 * (i + 1) - 1) / this.tagsNum;let a = Math.acos(k);let b = a * Math.sqrt(this.tagsNum * Math.PI)tag.text = i + 'tag';tag.x = this.CX + this.RADIUS * Math.sin(a) * Math.cos(b);tag.y = this.CY + this.RADIUS * Math.sin(a) * Math.sin(b);tag.z = this.RADIUS * Math.cos(a);tag.href = 'https://imgss.github.io'tags.push(tag)}this.tags = tags;},mounted(){//使球開始旋轉setInterval(()=>{this.rotateX(this.speedX);this.rotateY(this.speedY);}, 17)},methods:{rotateX(speedX){var cos = Math.cos(speedX);var sin = Math.sin(speedX);for(let tag of this.tags){var y1 = (tag.y- this.CY) * cos - tag.z * sin + this.CY;var z1 = tag.z * cos + (tag.y- this.CY) * sin;tag.y = y1;tag.z = z1;}},rotateY(speedY){var cos = Math.cos(speedY);var sin = Math.sin(speedY);for(let tag of this.tags){var x1 = (tag.x - this.CX) * cos - tag.z * sin + this.CX;var z1 = tag.z * cos + (tag.x - this.CX) * sin;tag.x = x1;tag.z = z1;}},listener(event){//響應鼠標移動var x = event.clientX - this.CX;var y = event.clientY - this.CY;this.speedX = x*0.0001>0 ? Math.min(this.RADIUS*0.00002, x*0.0001) : Math.max(-this.RADIUS*0.00002, x*0.0001);this.speedY = y*0.0001>0 ? Math.min(this.RADIUS*0.00002, y*0.0001) : Math.max(-this.RADIUS*0.00002, y*0.0001);},changeColors(){for(var i = 0;i<30;i++){var r = Math.floor(Math.random() * 256);var g = Math.floor(Math.random() * 256);var b = Math.floor(Math.random() * 256);this.colors[i] = "rgb(" + r + ',' + g + ',' + b + ")";}},}}) </script> </body> </html>

no vue:

<!DOCTYPE html> <html> <head><title>svg3D標簽云</title> </head> <body> <svg width='700' height='700'><a href="https://www.baidu.com"><text x='10' y='12'>1222</text></a><text x='100' y='120'>weed</text><text x='120' y='152'>sdcc</text><text x='160' y='222'>dfdf</text><text x='60' y='92'>vbbb</text><text x='160' y='300'>evvv</text><text x='290' y='400'>hhhh</text><text x='633' y='300'>wrgg</text><text x='400' y='500'>ohhh</text><text x='320' y='400'>qvbn</text><text x='480' y='200'>rvbj</text><text x='303' y='120'>eghj</text><text x='100' y='120'>weed</text><text x='120' y='152'>sdcc</text><text x='160' y='222'>dfdf</text><text x='60' y='92'>vbbb</text><text x='160' y='300'>evvv</text><text x='290' y='400'>hhhh</text><text x='633' y='300'>wrgg</text><text x='400' y='500'>ohhh</text><text x='320' y='400'>qvbn</text><text x='480' y='200'>rvbj</text><text x='303' y='120'>eghj</text> </svg> <script>var paper = document.querySelector("svg");//svgtags = document.querySelectorAll('svg text');RADIUS =200,FONTSIZE = RADIUS*0.1,fallLength = 600,//焦距tagArr=[],angleX = Math.PI/300,angleY = Math.PI/300,CX = paper.getAttribute('width')/2,//球心坐標CY = paper.getAttribute('height')/2;//球心坐標function Tag(ele , x , y , z){this.ele = ele;this.x = x;this.y = y;this.z = z;}function init(){var len = tags.lengthfor(var i=0;i<len;i++){var a , b;var k = -1+(2*(i+1)-1)/len;var a = Math.acos(k);var b = a*Math.sqrt(len*Math.PI);// var a = Math.random()*2*Math.PI;// var b = Math.random()*2*Math.PI;var x =CX + RADIUS * Math.sin(a) * Math.cos(b);var y =CY + RADIUS * Math.sin(a) * Math.sin(b);var z = RADIUS * Math.cos(a);var t = new Tag(tags[i] , x , y , z);tags[i].setAttribute('x',x);tags[i].setAttribute('y',y);tags[i].setAttribute('font-size', FONTSIZE * (fallLength/(fallLength-this.z)));tags[i].setAttribute('fill', "rgb("+parseInt(Math.random()*255)+","+parseInt(Math.random()*255)+","+parseInt(Math.random()*255)+")")tagArr.push(t);}}Array.prototype.forEach = function(callback){for(var i=0;i<this.length;i++){callback.call(this[i]);}}function animate(){setInterval(function(){// angleY += Math.PI/300;// angleY = angleX>Math.PI? 0 : angleXrotateX();rotateY();} , 17);}function rotateX(){var cos = Math.cos(angleX);var sin = Math.sin(angleX);tagArr.forEach(function(){var y1 = (this.y-CY) * cos - this.z * sin +CY;var z1 = this.z * cos + (this.y-CY) * sin;this.y = y1;this.z = z1;this.ele.setAttribute('y',this.y)this.ele.setAttribute('font-size', FONTSIZE * (fallLength/(fallLength-this.z)));})}function rotateY(){var cos = Math.cos(angleY);var sin = Math.sin(angleY);tagArr.forEach(function(){var x1 = (this.x-CX) * cos - this.z * sin +CX;var z1 = this.z * cos + (this.x-CX) * sin;this.x = x1;this.z = z1;this.ele.setAttribute('x',this.x)this.ele.setAttribute('font-size', FONTSIZE * (fallLength/(fallLength-this.z)));})}paper.addEventListener("mousemove" , function(event){var x = event.clientX - CX;var y = event.clientY - CY;// angleY = -x* (Math.sqrt(Math.pow(x , 2) + Math.pow(y , 2)) > RADIUS/4 ? 0.0002 : 0.0001);// angleX = -y* (Math.sqrt(Math.pow(x , 2) + Math.pow(y , 2)) > RADIUS/4 ? 0.0002 : 0.0001);angleY = x*0.0001>0 ? Math.min(RADIUS*0.00002,x*0.0001) : Math.max(-RADIUS*0.00002,x*0.0001);angleX = y*0.0001>0 ? Math.min(RADIUS*0.00002,y*0.0001) : Math.max(-RADIUS*0.00002,y*0.0001);});init();animate();</script> </body> </html>

canvas:

https://github.com/goat1000/TagCanvas

原理:

https://www.cnblogs.com/axes/p/3501424.html

參考:

https://github.com/imgss/imgss.github.io/tree/master/demo/svg

總結

以上是生活随笔為你收集整理的3D标签云/滚动词条的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人懂的网站 | 99国产精品国产精品九九 | 深夜影院在线观看 | 亚洲美女偷拍 | 涩涩网站入口 | 老女人人体欣赏a√s | 性感少妇av | 日本一区二区三区电影在线观看 | 国产手机在线播放 | 青草青在线 | 成人涩涩网站 | 久久久久草 | 天天摸天天操天天射 | 日韩视频在线一区 | 久热国产在线 | 中文字幕福利视频 | 日本激情网址 | 日韩女同互慰一区二区 | 久久久久久久黄色 | 亚洲成人av免费 | 国产成人av无码精品 | 涩视频在线观看 | 国产精品高潮av | 国产拍拍视频 | 国产成人精品白浆久久69 | 香港三级日本三级三69 | 久久性生活 | 婷婷射丁香| 国产91精选 | 高清在线一区 | 午夜成人免费视频 | 色婷婷婷婷色 | 丰满人妻综合一区二区三区 | 日本中文有码 | 成人欧美性 | 天堂av资源在线 | 国产网红主播精品av | aaa午夜 | 国产又粗又猛又爽又黄91精品 | 97毛片| 久久久精品免费观看 | 欧美体内谢she精2性欧美 | 性一交一乱一精一晶 | 亚洲精品少妇一区二区 | 明日叶三叶 | 日韩av一区二区在线 | 超碰在线进入 | 特淫毛片 | 91久久精品一区二区三 | 夜晚福利视频 | 欧美午夜精品久久久久久蜜 | 在线免费你懂的 | 国产精品v亚洲精品v日韩精品 | 风流老熟女一区二区三区 | 久色网| 99久 | 精品国产一区二区三区无码 | 色女人综合 | 男同精品| 久久艳片www.17c.com| 夜夜爽日日澡人人添 | 韩国三级免费 | 亚洲精品综合精品自拍 | 欧美日韩一区二区不卡 | 777片理伦片在线观看 | 毛片一级视频 | 久久久久久久极品内射 | www.色日本 | 亚洲清色 | 久久久久久国产精品三区 | 国产精品白浆一区二小说 | 欧美aa一级 | 精品一区二区三区免费 | www.久久国产 | 国产在线午夜 | 日韩黄色精品 | 亚洲天堂网一区 | 久久久久婷| 黑森林av导航 | 吃奶摸下的激烈视频 | 无码人妻丰满熟妇啪啪欧美 | 丝袜熟女一区二区三区 | 小色哥网站 | 国产女人18毛片18精品 | 在哪里看毛片 | 女儿的朋友在线播放 | av老司机在线播放 | 久久国产劲爆∧v内射 | 午夜天堂精品 | 新超碰97 | 公交顶臀绿裙妇女配视频 | 久热精品免费视频 | 日韩在线视频你懂的 | 男人的天堂va | 狼人精品一区二区三区在线 | 亚洲黄色激情视频 | 亚洲免费视频一区 | 无码精品人妻一二三区红粉影视 | 91精品国产91久久久久久吃药 |