利用d3.js實(shí)現(xiàn)蜂巢圖表帶動(dòng)畫(huà)效果
以上是效果圖,本圖表使用d3.js v4制作。圖表主要功能是在六邊形格子中顯示數(shù)據(jù),點(diǎn)擊底部圖標(biāo)可以切換指定格子高亮顯示,圖表可以隨瀏覽器任意縮放。
1.圖表的主體結(jié)構(gòu)是由正六邊形組成,使用d3生成六邊形可以使用d3-hexbin.js,生成六邊形比較方便,只要給定中心點(diǎn)坐標(biāo)和半徑即可生成六邊形路徑,例如:
var r = 10;// 六邊形半徑 var pos = [[5,5],[10,10]]; // 六邊形中心點(diǎn)坐標(biāo)數(shù)組 var hexbin = d3.hexbin() // 使用hexbin.hexagon()即可生成路徑 .radius(r); var bins = hexbin(pos); // 得到生成后的六邊形中心點(diǎn)坐標(biāo)數(shù)組
2.圖表的主體使用了高斯模糊濾鏡,使畫(huà)面表現(xiàn)出發(fā)光效果,背景高亮顏色使用了顏色漸變?yōu)V鏡。在svg中使用濾鏡,必須定義在defs中。
高斯模糊濾鏡:
// 創(chuàng)建defs var defs = svg.append("defs"); // 添加模糊濾鏡 var filterBlur = defs.append('filter') .attr('id', 'filterBlur') .attr('x', -1.2) .attr('y', -1.2) .attr('width', 4) .attr('height', 4); // 添加輔助濾鏡 filterBlur.append('feOffset') .attr('result', 'offOut') .attr('in', 'SourceGraphic') .attr('dx', 0) .attr('dy', 0); // 添加模糊濾鏡 filterBlur.append('feGaussianBlur') .attr('result', 'blurOut') .attr('in', 'SourceGraphic') .attr('stdDeviation', 2); // 添加輔助濾鏡 filterBlur.append('feBlend') .attr('in', 'SourceGraphic') .attr('in2', 'blurOut') .attr('mode', 'multiply');
重點(diǎn)說(shuō)一下最后的feBlend,它的作用是把濾鏡效果和原圖混合起來(lái)。使用濾鏡的話(huà),直接給元素添加style('filter', 'url(#filterBlur)')即可。
背景高亮使用了顏色漸變?yōu)V鏡:
// 添加放射性變換,生成空心填充顏色 var warnBg = defs.append("radialGradient") .attr("id", "bg") .attr('cx', 0.5) .attr('cy', 0.5) .attr('r', 0.5); // 添加顏色 warnBg.append('stop') .attr('offset', 0.5) .attr('style', 'stop-color:rgb(200,200,200);stop-opacity:0.4'); warnBg.append('stop') .attr('offset', 1) .attr('style', 'stop-opacity:1;stop-color:rgb(123,123,123)');
其中涉及到的關(guān)鍵性技術(shù)就是這些,其他方面只要使用通用的d3方法就可實(shí)現(xiàn)。
需要注意的是,程序的結(jié)構(gòu)要預(yù)先規(guī)劃好,最好把主要的功能模塊放在單獨(dú)一個(gè)函數(shù)中,方便調(diào)用和后期修改。
如果大家有什么想法或意見(jiàn)可以交流一下。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
- JS實(shí)現(xiàn)網(wǎng)頁(yè)煙花動(dòng)畫(huà)效果
- JavaScript canvas動(dòng)畫(huà)實(shí)現(xiàn)時(shí)鐘效果
- js通過(guò)循環(huán)多張圖片實(shí)現(xiàn)動(dòng)畫(huà)效果
- JS實(shí)現(xiàn)水平移動(dòng)與垂直移動(dòng)動(dòng)畫(huà)
- p5.js實(shí)現(xiàn)故宮橘貓賞秋圖動(dòng)畫(huà)
- jquery輕量級(jí)數(shù)字動(dòng)畫(huà)插件countUp.js使用詳解
- 利用d3.js制作連線(xiàn)動(dòng)畫(huà)圖與編輯器的方法實(shí)例
- JavaScript變速動(dòng)畫(huà)函數(shù)封裝添加任意多個(gè)屬性
- JS div勻速移動(dòng)動(dòng)畫(huà)與變速移動(dòng)動(dòng)畫(huà)代碼實(shí)例
- JavaScript實(shí)現(xiàn)沿五角星形線(xiàn)擺動(dòng)的小圓實(shí)例詳解
相關(guān)文章
JavaScript正則表達(dá)式替換字符串中圖片地址(img src)的方法
這篇文章主要介紹了JavaScript正則表達(dá)式替換字符串中圖片地址(img src)的方法,結(jié)合實(shí)例形式分析了JS正則替換的常用技巧與注意事項(xiàng),需要的朋友可以參考下2017-01-01JavaScript動(dòng)態(tài)操作select下拉框
這篇文章介紹了JavaScript動(dòng)態(tài)操作select下拉框的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04js實(shí)現(xiàn)復(fù)制功能(多種方法集合)
這篇文章主要介紹了js實(shí)現(xiàn)復(fù)制功能(多種方法集合),需要的朋友可以參考下2018-01-01Ionic3 UI組件之a(chǎn)utocomplete詳解
這篇文章主要為大家詳細(xì)介紹了Ionic3 UI組件之a(chǎn)utocomplete的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06JavaScript實(shí)現(xiàn)簡(jiǎn)單的文本逐字打印效果示例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)單的文本逐字打印效果,涉及javascript結(jié)合時(shí)間函數(shù)動(dòng)態(tài)操作頁(yè)面元素相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-04-04