Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 欧美精品在线免费,亚洲精品在线第一页,亚洲精品久久精品h成人

          整合營銷服務商

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

          免費咨詢熱線:

          Power BI Desktop中SVG圖標集的引用

          Power BI Desktop中SVG圖標集的引用實踐

          們在做數據可視化的時候,經常會用到圖標,SVG可縮放矢量圖標是最佳選擇,網絡中有很多資源,今天我們介紹建立一個SVG圖標集,查找和引用這個圖標集中的圖標。

          SVG小知識:

          svg是標簽語言,開始與結束要用<svg></svg>標簽包裹起來,我們引用現成的圖標,所以我們不用系統的學習svg的語法,只需要了解最基本的設置就可以了:

          <svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8">
           <path d="M3 0v1h4v5h-4v1h5v-7h-5zm1 2v1h-4v1h4v1l2-1.5-2-1.5z" />
          </svg>
          

          我們只需要三個參數:

          • width:圖標的寬度,數值是絕對大小,可以相對大小用vh
          • height:圖標的高度,數值是絕對大小,可以相對大小用vh
          • fill:圖標的填充顏色,可以用英文名稱,可以是顏色編碼#FD625E
           <svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" fill="#FD625E" viewBox="0 0 8 8">
           <path d="M3 0v1h4v5h-4v1h5v-7h-5zm1 2v1h-4v1h4v1l2-1.5-2-1.5z" />
          </svg> 
          

          做了上述修改:這個圖標就會是一個80*80的紅色的圖標。

          SVG資源

          SVG資源網絡上可以找到很多,推薦這個網站的223個應該夠用了,這個網站是MIT license可以放心使用。

          下載圖標并解壓出svg目錄:

          到這里我們就把準備工作做好了。

          導入SVG圖標

          用Power Query從文件夾導入SVG圖標:

          解碼二進制:

          把二進制解碼成Base64:

          DAX中的準備工作:

          把上面的圖標集加載到Power BI 中,這個時候還不能直接引用SVG圖標,因為我們還需要做一個編碼聲明,才能視圖中顯示出圖標。

          UTF8編碼:"data:image/svg+xml;utf8,"

          另外我們要改變圖標的大小與顏色,這兩個工作可以在Power Query中做,也可以在DAX中做,都可以,就是簡單的文本替換與拼接:

          DAX中更接近我們excel中SUBSTITUTE:

          red=SUBSTITUTE(svg[svg],"width=""8"" height=""8""","width=""80"" height=""80"" fill=""#FD625E""")

          這是大小與顏色的改變。

          同樣可以做綠色、黃色的圖標列

          我們做一列可以直接顯示的utf8的圖標列:

          這樣也看不全啊,是能顯示出圖標,不完整或者太小不清晰,我們要做一個可視化查詢:

          Power BI可視化查詢SVG圖標

          我們用三個視覺對象來查詢SVG圖標

          Chiclet Slicer可以做一個SVG圖標的矩陣列表:

          Image Grid制作一個圖標云:

          Html Viewer制作單個圖標視圖:

          這三個視覺對象都很簡單,設置也很容易:

          稍有不同的是:

          • Html Viewer:引用的列是不用聲明utf8編碼的列
          • 其他兩個視覺對象:引用redutf8列,是utf8編碼的列

          就是說,我們要在Power BI 中引用圖標,大部分時候是要utf8編碼的。

          單個SVG圖標引用

          通過編寫度量值,指向單個圖標:

          我們先找一個要引用的圖標名稱:circle-check.svg

          我們要用綠色的圖標:

          ShowGreen="data:image/svg+xml;utf8,"&

          CALCULATE(SELECTEDVALUE(svg[green]),'svg'[Name]="circle-check.svg")

          我們引用紅色的圖標:

          ShowRed=CALCULATE(SELECTEDVALUE(svg[redutf8]),'svg'[Name]="circle-check.svg")

          應為我們有現成的utf8紅色圖標所以度量值前面就少了"data:image/svg+xml;utf8,"&

          其實這個兩個度量值就代表了這兩個圖標:

          我們可以用image形式單個引用,也可以用在條件格式中引用這兩個圖標:

          有了這個圖標集,你就可以有豐富的圖標可用,可以自定義大小、顏色,做出更出色的可視化作品。

          VG(Scalable Vector Graphics)是一種基于XML的圖像格式,用于定義用于網絡的矢量圖形。與柵格圖像如PNG或JPG不同,SVG圖像在放大或縮小時不會失真,這使得它特別適合于網頁設計和響應式布局。

          SVG的優點包括:

          • 可縮放性:矢量圖形可以無損放大或縮小。
          • 可編輯性:作為XML文件,SVG可以通過文本編輯器進行編輯。
          • 交互性和動畫:可以通過CSS和JavaScript增強SVG的交互性和動畫效果。
          • DOM訪問:SVG元素可以通過DOM API進行訪問和操作。

          如何在HTML中使用SVG?

          SVG可以直接嵌入到HTML頁面中,可以作為一個獨立的文件被引入,或者作為CSS背景圖像使用。

          示例 1:直接嵌入SVG

          <!DOCTYPE html>
          <html lang="zh-CN">
          <head>
              <meta charset="UTF-8">
              <title>SVG 基礎示例</title>
          </head>
          <body>
              <svg width="100" height="100">
                  <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
              </svg>
          </body>
          </html>
          

          在這個例子中,我們創建了一個簡單的SVG圖形,包括一個黃色填充的圓,周圍有一個綠色的邊框。

          示例 2:使用SVG文件

          首先,創建一個SVG文件(例如:rectangle.svg):

          <svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
              <rect width="100" height="50" fill="blue" />
          </svg>
          

          然后,在HTML文件中引用這個SVG文件:

          <!DOCTYPE html>
          <html lang="zh-CN">
          <head>
              <meta charset="UTF-8">
              <title>使用SVG文件</title>
          </head>
          <body>
              <img src="rectangle.svg" alt="藍色矩形" />
          </body>
          </html>
          

          通過<img>標簽,我們引入了一個外部SVG文件。

          示例 3:SVG與CSS和JavaScript交互

          我們可以使用CSS來改變SVG的樣式,也可以使用JavaScript來添加交互功能。

          <!DOCTYPE html>
          <html lang="zh-CN">
          <head>
              <meta charset="UTF-8">
              <title>SVG 與 CSS 和 JavaScript 交互</title>
              <style>
                  #myPolygon {
                      fill: orange;
                      transition: fill 0.5s ease;
                  }
                  #myPolygon:hover {
                      fill: red;
                  }
              </style>
          </head>
          <body>
              <svg width="300" height="200">
                  <polygon id="myPolygon" points="100,10 40,198 190,78 10,78 160,198"
                           onclick="alert('多邊形被點擊!')" />
              </svg>
          
              <script>
                  document.getElementById('myPolygon').addEventListener('click', function() {
                      console.log('多邊形被點擊,并且已經觸發了alert。');
                  });
              </script>
          </body>
          </html>
          

          在這個例子中,我們創建了一個SVG多邊形,通過CSS為其添加了懸停效果,并通過JavaScript為其添加了點擊事件。

          結論

          SVG是一個強大的工具,適用于現代的網頁設計和開發。通過上述例子,我們可以看到SVG在創建可縮放、可交互圖形方面的能力。隨著技術的不斷進步,SVG將繼續在Web設計中扮演重要角色。

          文簡介

          點贊 + 關注 + 收藏=學會了


          技術一直在演變,在網頁中使用 SVG 的方法也層出不窮。每個時期都有對應的最優解。

          所以我打算把我知道的 7種 SVG 的使用方法列舉出來,有備無患~

          如果你還知道其他方法,可以在評論區補充~



          1. 在瀏覽器直接打開

          <?xml version="1.0" ?>
          
          <svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
            <title>雷猴</title>
            <circle cx="50" cy="50" r="50" fill="hotpink"></circle>
          </svg>
          

          xml 是瀏覽器能讀取的格式,但如果希望 svg 能在瀏覽器中渲染出來,需要使用 xmlns 聲明渲染規則。

          所以必須使用 xmlns="http://www.w3.org/2000/svg"。



          2. 內嵌到 HTML 中(推薦???)

          <!DOCTYPE html>
          <html lang="en">
          <head>
            <meta charset="UTF-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>svg demo</title>
          </head>
          <body>
            <div>
              <!-- 內嵌到 HTML 中 -->
              <svg width="100%" height="100%" version="1.1">
                <circle cx="50" cy="50" r="50" fill="hotpink"></circle>
              </svg>
            </div>
          </body>
          </html>
          

          可以看到上面的代碼中,<svg> 標簽并沒有使用 xmlns="http://www.w3.org/2000/svg" 聲明命名空間,這是因為 HTML 5 文檔使用 <!DOCTYPE html> 標記,它允許跳過 SVG 命名空間聲明,HTML 解析器會自動識別 SVG 元素和它的子元素,除了 <foreignObject> 元素的子元素。


          在寫本文時,將 SVG 內嵌到 HTML 中 的做法是最常見的,也是比較推薦的方式之一。

          做特效時,這種使用方式也是比較輕松的。



          3. CSS 背景圖(推薦?)

          <style>
          .svg_bg_img {
            width: 100px;
            height: 100px;
            background: url('./case1.svg') no-repeat;
            background-size: 100px 100px;
          }
          </style>
          
          <div class="svg_bg_img"></div>
          

          SVG 也是一種圖片格式,所以按理說是能當做背景圖來使用的。

          一試,果然可以~



          4. 使用 img 標簽引入(推薦?)

          <img src="./case1.svg" width="100" height="100">
          

          既然 SVG 可以在 CSS 中當背景圖使用,那也可以在 <img> 標簽里使用咯~



          5. 使用 iframe 標簽引入(不推薦?)

          <iframe
            src="./case1.svg"
            width="100"
            height="100"
          ></iframe>
          

          iframe 可以在網頁里再嵌套一個網頁,既然 SVG 可以直接在瀏覽器打開,那使用 <iframe> 引用 SVG 同樣也是可以的。

          需要注意的是,<iframe> 默認是有個邊框樣式的,如果你使用這種方式引入 SVG 可能還需要自己手動調節一下樣式。



          6. 使用 embed 標簽引入(不推薦?)

          <embed
            src="./case1.svg"
            width="100"
            height="100"
          />
          

          <embed> 標簽定義了一個容器,用來嵌入外部應用或者互動程序。它也可以插入各種媒體資源。

          <embed> 標簽已經被標準采用了。但它不能包含任何子內容,因此如果嵌入失敗就沒有備用選項了。所以現階段來看,我不太推薦使用 embed 的方式引入 SVG 。



          7. 使用 object 標簽引入(不推薦?)

          <object
            data="./case1.svg"
            type="image/svg+xml"
            codebase="http://www.adobe.com/svg/viewer/install"
          ></object>
          

          <object> 是通過 data 屬性引入資源的。它可以用于嵌入圖像,類似 <img> ,也可以用于嵌入獨立的 HTML 文檔,類似 <iframe> 。

          使用 <object> 嵌入 SVG 可以讓那些不能直接顯示 SVG 但又有 SVG 插件的老舊瀏覽器展示 SVG。

          需要注意的是,在某些現代瀏覽器中,type 和 codebase 是可以不寫的。

          type 用來聲明當前引入的資源是屬于什么類型。



          總結

          在寫本時,我推薦使用 內嵌到 HTML 的方式來做日常開發。

          其他方式按照你實際需求去使用即可。

          最后的 embed 和 object 這兩種方式可以當做備用方案去使用。



          代碼倉庫

          ?雷猴 SVG



          推薦閱讀

          《Canvas 從入門到勸朋友放棄(圖解版)》

          《Fabric.js 從入門到膨脹》

          《『Three.js』起飛!》

          《console.log也能插圖?。?!》

          《純css實現117個Loading效果》

          《視差特效的原理和實現方法》

          《這18個網站能讓你的頁面背景炫酷起來》


          主站蜘蛛池模板: 香蕉久久av一区二区三区| 亚洲视频在线一区二区三区| 亚洲成在人天堂一区二区| 亚洲熟女www一区二区三区| 国产成人无码AV一区二区| 无码视频一区二区三区| 无码人妻精品一区二区三区东京热 | 精品一区二区三区东京热| 国产精品亚洲综合一区| 日韩AV在线不卡一区二区三区| 一区二区三区视频| 国产成人综合一区精品| 蜜桃无码一区二区三区| 任你躁国语自产一区在| 久久精品国产一区二区三区日韩| 麻豆视传媒一区二区三区| 国偷自产视频一区二区久| 亚洲av色香蕉一区二区三区蜜桃 | 国产主播在线一区| 国产精品福利一区二区久久| 久久综合九九亚洲一区| 日韩精品无码一区二区三区四区 | 国产激情一区二区三区四区| 中文字幕一区二区三匹| 国产精品电影一区| 国产乱码精品一区二区三区四川人| 91在线一区二区| 一色一伦一区二区三区| 日韩美女在线观看一区| 精品福利一区3d动漫| 亚洲国产精品一区二区九九| 一区二区三区精品视频| 国精品无码A区一区二区| 熟女性饥渴一区二区三区| 无码午夜人妻一区二区三区不卡视频| 中文字幕日韩人妻不卡一区 | 国产午夜精品一区二区三区| 农村人乱弄一区二区| 无码视频一区二区三区在线观看 | 竹菊影视欧美日韩一区二区三区四区五区| 97av麻豆蜜桃一区二区|