整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          深入探討SVG圖標的顏色自定義:currentCol

          深入探討SVG圖標的顏色自定義:currentColor的使用

          要: SVG圖標作為一種矢量圖形格式,在網頁和應用設計中被廣泛使用。然而,在實際應用中,設計師可能會遇到一些關于SVG圖標顏色自定義的問題。本文將探討如何在SVG圖標中使用currentColor屬性,以及如何解決某些圖標不支持currentColor的問題。

          正文:

          SVG圖標有很多優點,例如可縮放性和自定義性。其中,currentColor屬性是CSS中的一個特性,允許SVG圖標繼承其父元素的文本顏色。但是,在實際使用中,可能會遇到一些SVG圖標不支持currentColor的情況。

          1、SVG圖標與currentColor

          currentColor屬性可以使SVG圖標的顏色與周圍文本的顏色保持一致,從而提高圖標和文本的協調性和一致性。但是,并非所有SVG圖標都支持currentColor。

          2、外部源的SVG圖標

          一些SVG圖標可能是由第三方或外部源提供的。這些圖標可能沒有設計為使用currentColor來指定顏色,而是預定義了特定的顏色值或使用了其他方式來指定顏色。

          3、解決不支持currentColor的問題

          當您發現SVG圖標不支持currentColor時,可以考慮直接修改SVG代碼,或使用CSS類或內聯樣式來自定義圖標顏色。同時,查看圖標庫或提供者的文檔,了解其推薦的顏色和樣式自定義方法。

          結論

          在使用SVG圖標時,了解并掌握currentColor以及其他顏色自定義方法是非常必要的。這可以幫助設計師更靈活地使用和自定義SVG圖標,使其更好地融入網頁和應用的設計中。

          在在大數據的帶領下,數據可視化越來越突出,能夠清楚的分析出自己想要的數據,這也是我們現在最求的數據可視化方法,那么實現HTML5的數據可視化方法有哪些?這都是我們值得研究的東西,數據可以給我們帶來敏感的市場未來發展,同時也能夠實時分別不同數據效果。

          HTML5為數據可視化提供了新的實現方法。本文對HTML5在健康數據可視化在PC及部分移動終端上的應用進行研究。使用HTML5中的Canvas和SVG實現的數據可視化方法基于瀏覽器的支持,具有很好的平臺兼容性

          可視化(Visualization)是采用計算機圖形學和圖形處理技術將數據轉換成圖形或者圖像顯示出來的技術。可視化匯集了數據表示、數據處理和決策分析等一系列問題。

          隨著科學技術的不斷發展,海量數據的出現加快了數據可視化技術的發展。很多平臺提供了實現數據可視化的技術,如Flash和Silverlight都提供了相應的繪圖技術,對于基于Web的應用,包含了SVG和Canvas的HTML5提供了新的數據可視化技術。現在主流瀏覽器大部分完成了對HTML5標準的支持,包含IE9、Chrome、FireFox、Safari等,而且現在智能手機以及平板電腦的瀏覽器對HTML5都有很好的支持,同時這些移動終端的日益普及也使基于HTML5的數據可視化跨平臺成為了可能。

          1 相關技術

          HTML5標準是HTML下一個主要的修訂版本,現在仍處于發展階段。其目標是取代1999年所制定的HTML 4.01和XHTML 1.0 標準,以期能在互聯網應用迅速發展的時候,使網絡標準達到符合當代的網絡需求。廣義的HTML5標準實際指的是包括HTML、CSS和JavaScript在內的一套技術組合。HTML5包含了SVG(Scalable Vector Graphics),同時提供了實時二維繪圖技術Canvas。本文就基于SVG和Canvas對數據可視化的實現提出一種可行的方法。

          1.1 SVG

          SVG英文全稱為Scalable Vector Graphics,由W3C制定,其基于可擴展標記語言XML。SVG是用于描述二維矢量圖形的一種圖形格式,由于它是基于XML的一種語言,所以它繼承了XML的跨平臺性和可擴展性。如SVG文檔中可以嵌入其他的XML或者HTML內容,XML或者HTML中可以內嵌SVG,而各個不同的SVG圖形可以方便地組合,構成新的SVG圖形。SVG還具有很多優點,比如很好的可擴充性和交互性。SVG支持無限放大,SVG圖片任意比例的放大不會損害圖片的顯示效果,其他諸如PNG,GIF,BMP,JPEG格式的圖片放大則會影響視覺效果。同時SVG還提供了很好的動畫交互效果,通過定義鼠標事件和鍵盤事件,以及相關的腳本編程就可以實現SVG圖形的動畫效果及交互操作。

          1.2 Canvas

          Canvas最初是由蘋果內部使用自己的Mac OS X WebKit推出,蘋果大力推廣使用HTML5,促進了Canvas的發展和應用,HTML5提供了畫布元素,同時HTML5定義了很多API支持腳本化客戶端繪圖操作,元素本身是沒有任何外觀的,但是它在HTML文章中創建了一個畫板,通過繪圖API可以在畫板中繪制位圖模式的圖形。

          1.3 SVG和Canvas對比

          SVG和Canvas是兩種圖像模式,他們的繪制過程也不相同,所以他們有各自的優缺點。SVG是矢量圖,它通過一顆XML元素樹來實現,使用SVG來繪制圖形,可以很簡單地通過移除增加相應的元素來編輯圖形元素。SVG的矢量特性有時對性能會造成很大的影響,所以SVG的整體性能比Canvas要差。Canvas是位圖,它通過調用API實現繪圖,其API基于Javascript,相對簡潔。但對于Canvas生成的圖片,要更新圖片中的元素就不得不把當前的擦出再重新繪制一遍。

          表1

          2 數據可視化的實現

          基于HTML5的數據可視化的方法是基于數據驅動,采用HTML5提供的API借助瀏覽器的支持,在客戶端實現的繪圖的可視化技術。數據驅動依靠服務器端提供數據,數據源可以采用數據庫,OLAP等,數據預處理為事先定義好的格式,依靠服務器提供的WEB Service,向客戶端傳輸數據。本文采用JSON(Javascript Object Notation)作為數據傳輸格式,這是一種輕量級的數據交換格式,適合服務器與瀏覽器的交互。瀏覽器收到服務器端數據使用HTML5提供的繪圖技術Canvas或SVG渲染出所需圖形,由于圖形繪制是基于瀏覽器,所以這種方法可以跨平臺使用,對于智能手機和平板電腦,只要系統里安裝支持HTML5 Canvas和SVG的瀏覽器就可以繪制圖形。

          2.1 基于SVG的數據驅動可視化工具D3.js

          D3(Data-Driven Documents)是一個基于數據驅動的JavaScript庫,通過使用HTML、SVG和CSS操作網頁元素,同時提供操作各種復雜數據集的方法。D3的很多元素操作都基于css選擇器,它可以選擇網頁元素并在改,刪,增上與數據集保持一致,這個特征和jQuery類似。同時D3還提供了很好的交互的方法,例如動畫,事件處理等。D3做為基于SVG的數據驅動可視化工具,提供了很好的Javascript庫函數用來實現具體的可視化矢量圖形,而它的使用和jQuery一樣,只需在HTML中添加d3.js的外部引用即可。d3.selectAll(“p”).style(“color”, “white”); //這條語句簡單的實現選擇所以HTML中

          并改變字體顏色為白色。

          2.2 數據可視化模型定義

          本文考慮使用工廠模式實現一種數據可視化方法,首先定義數據集對象和數據可視化對象,可視化對象接收數據,完成在瀏覽器中的圖形渲染得到可視化結果。可視化對象由多個模塊構成,考慮到代碼重用性,可以根據可視化圖形的不同定義不同的模塊,模塊分為接收數據和不接收數據兩種,通過對固定模塊的不同組合可以得到多樣的可視化圖形結果。對于不同模塊圖形渲染,可以不局限于使用Canvas或者SVG,考慮到Canvas的性能和SVG的矢量及靈活選擇的特性,可以選擇合適的技術來渲染可視化圖形結果。

          數據集對象需要完成對數據源的預處理,從服務器端返回的數據源是一定格式的JSON數據,數據集對象需要提供特定的API構造成可視化對象可以接受的數據集結果。

          var dataset=new CrossTableDataset();

          dataset.addRowAxis(“姓名”, [“張XX”, “李XX”, “王XX”, “趙XX”], “dimension”);

          dataset.addColumnAxis(“指標”, [“BMI”], “measure”);

          dataset.setData(true, [[25.1,18.5,22.5,32.5]]);

          可視化對象需要不同模塊的組合,常規圖形如曲線圖,餅圖,直方圖等,都需要標題,圖例,所以這種模塊可以定義為固定的一種模塊,同時根據模塊的功能定義相應的模塊,如容器和繪圖模塊;

          Main Container對象負責圖形模塊的布局,如可以將Legend對象的位置放在?Main Container的左邊或者下部,Plot Conta接收數據集對象,渲染成需要的圖形結果,這部分包含數據點的繪制,數據軸的繪制等。

          chartOption={title : {visible : true}}; //設置圖形屬性

          chart=newVizInstance({type:’Column,container:’chart’,

          option:chartOption, data:dataset});

          chart.update({title:{visible :false}}); //更新圖形屬性

          圖形示例化初始化參數定義為一個Object對象,其包含一系列參數,type為圖形種類,container是圖形結果顯示在HTML DOM中位置,通常是一個

          ,option為圖形屬性的設置參數,data是圖形接收的數據集。VizInstance對象同時具有更新圖形屬性的API。

          3 數據可視化在健康分析上的應用

          基于HTML5的數據可視化的方法在健康分析防霾你做一個應用,亞健康是結余健康與疾病之間的狀態,亞健康是一種危險的狀態,所以即使發現自身健康狀況的風險,并作出改善是非常重要的,好的健康分析手段能夠更加即使的給出健康風險的診斷,根據檢測社體體質信息數據,包含BMI(體重身高比)、心肺功能、身體力量、身體平衡性、身體柔韌性等數據,同時采集醫學和生活方式及心理方面的數據,通過數據的橫向和縱向比較可以給出身體狀況分析,通過實踐積累和采集的個體數據增加,會有大量的健康數據,對于這些數據通故宮已經很難做出的比較分析,通過數據可視化借助于圖形化手段,會生成直觀的比較結果。

          4 結論

          本文介紹了HTML5標準中的Canvas和SVG繪圖技術,比較了兩者在數據可視化方面的優缺點,闡述了采用HMTL5繪圖技術實現數據可視化的一種方法,這種方法基于瀏覽器的支持,通過調用HMTL5提供的繪圖API,通過Javascript實現具體的數據可視化圖形的繪制。這種方法可以很好的跨平臺,但同時這種方法由于依賴瀏覽器的支持,在使用上有瀏覽器的限制,例如現在瀏覽器IE8對Canvas和SVG都沒有支持。不過由于HTML5的逐漸成熟,各大主流瀏覽器廠商會逐漸完善對Canvas和SVG的支持。

          學習前端的同學注意了!!!

          學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入前端學習交流群461593224,我們一起學前端!

          需為從Web服務器,外部CDN或第三方Javascript插件中加載資產而為Web項目創建加載動畫的最佳方法之一,就是使用與渲染相同的Web技術在Web應用程序中創建動畫。
          這樣可以確保動畫在你需要時立即顯示,并確保用戶體驗不會因用戶連接速度而受到影響。

          在本教程中,我們將使用HTML和CSS為Web項目制作一個簡單的加載動畫。

          我們追求的最終結果是以下動畫。

          添加以下html模板:

          <div class="svg-loader">
              <svg class="svg-container" height="100" width="100" viewBox="0 0 100 100">
                  <circle class="loader-svg bg" cx="50" cy="50" r="45"></circle>
                  <circle class="loader-svg animate" cx="50" cy="50" r="45"></circle>
              </svg>
          </div>

          從上面的插圖可以明顯看出,動畫模板由兩個圓圈組成,一個圓圈在另一個圓圈的上方,第一個圓圈的厚度大于第二個圓圈的圓圈,兩個圓圈都具有相同的圓周,從而使一個圓圈在另一個圓圈內的錯覺。

          圓內的cx和cy屬性分別是兩個圓的x軸和y軸坐標。他們確保兩個圓以同一坐標為中心。

          添加以下css:

          .svg-loader{
            display:flex;
            position: relative;
            align-content: space-around;
            justify-content: center;
          }
          .loader-svg{
            position: absolute;
            left: 0; right: 0; top: 0; bottom: 0;
            fill: none;
            stroke-width: 5px;
            stroke-linecap: round;
            stroke: rgb(64, 0, 148);
          }
          .loader-svg.bg{
            stroke-width: 8px;
            stroke: rgb(207, 205, 245);
          }

          上面的css確保加載組件位于容器的中心,并確保兩個圓具有不同的筆觸寬度和顏色。

          然后,我們用CSS動畫第二個圓,該圓將位于第一個圓的頂部,以完成加載動畫:

          .animate{
            stroke-dasharray: 242.6;
            animation: fill-animation 1s cubic-bezier(1,1,1,1) 0s infinite;
          }
          
          @keyframes fill-animation{
            0%{
              stroke-dasharray: 40 242.6;
              stroke-dashoffset: 0;
            }
            50%{
              stroke-dasharray: 141.3;
              stroke-dashoffset: 141.3;
            }
            100%{
              stroke-dasharray: 40 242.6;
              stroke-dashoffset: 282.6;
            }
          }

          當我們繪制圓時,它只是一個單點劃線,畫出了從圓頭到圓的形狀輪廓,stroke-dasharray屬性使我們能夠將其分解為點劃線和間隙。我們可以利用此功能來獲得所需的動畫最終結果。

          為了獲得如上所示的平滑動畫效果,我們需要知道圓的圓周,其中圓周=2 x pi x radius。然后,我們使用stroke-dasharray屬性在動畫的不同狀態下繪制最多一個破折號和間隙,以交替改變其大小,同時在添加兩者時保持圓周長度。

          圓半徑為45時,周長為282.6,因此將stroke-dasharray值設置為141.3時,意味著虛線和間隙的值相同,其總和為282.6。

          dashoffset屬性是定義在相關虛線數組的呈現的偏移呈現屬性,該偏移給出到加載動畫的旋轉作用,否則動畫將出現破裂。這就是填充動畫動畫中發生的所有事情。
          我們通過使用.animation類將動畫應用于第二個圓環來確保該動畫無限進行。

          這只是使用SVG和CSS可以制作動畫的基礎,可以進行實驗性和創造性的創作,從而為你的Web項目創建快速且像素完美的加載動畫。

          如果你喜歡這篇文章,請給我點贊,收藏,轉發,這是對我真的很重要

          關注我長期分享前端小技巧


          主站蜘蛛池模板: 国产一区二区三区亚洲综合| 亚洲中文字幕无码一区二区三区| 成人在线观看一区| 麻豆视频一区二区三区| 久草新视频一区二区三区| 91一区二区三区四区五区| 日韩一区二区在线观看视频| 美女视频免费看一区二区| 一区二区三区在线免费看| 一区二区在线播放视频| 国产精品合集一区二区三区| 无码午夜人妻一区二区不卡视频 | 国产成人无码精品一区二区三区| 亚洲蜜芽在线精品一区| 一区二区三区国产| 91一区二区三区| 亚洲国产综合精品中文第一区| 午夜无码视频一区二区三区| 2022年亚洲午夜一区二区福利 | 国产在线视频一区二区三区98| 精品国产一区二区三区久| 3d动漫精品啪啪一区二区免费| 国产午夜精品免费一区二区三区| 无码少妇一区二区三区芒果| 立川理惠在线播放一区| 无码日韩AV一区二区三区| 伊人色综合网一区二区三区| 日韩精品中文字幕无码一区| 91香蕉福利一区二区三区| 亚洲第一区视频在线观看| 影院成人区精品一区二区婷婷丽春院影视| 无码人妻视频一区二区三区| 日韩免费观看一区| 无码国产精品一区二区免费式影视 | 风流老熟女一区二区三区| 国产高清在线精品一区二区三区| 亚洲日韩精品一区二区三区无码 | 亚洲天堂一区二区三区四区| 国产一区二区三区在线看片| 色欲综合一区二区三区| 无码8090精品久久一区|