久久精品国产精品国产精品污,亚洲色成人四虎在线观看,亚洲熟妇无码另类久久久,揉她小豆豆揉到失禁H

  • <acronym id="1hxtt"><label id="1hxtt"></label></acronym>
    <pre id="1hxtt"></pre>
    <pre id="1hxtt"><ruby id="1hxtt"></ruby></pre>

    1. 技術頻道導航
      HTML/CSS
      .NET技術
      IIS技術
      PHP技術
      Js/JQuery
      Photoshop
      Fireworks
      服務器技術
      操作系統
      網站運營

      贊助商

      分類目錄

      贊助商

      最新文章

      搜索

      比較和了解何時使用SVG與何時使用Canvas

      作者:admin    時間:2022-8-11 17:24:40    瀏覽:

      SVG 和 canvas 都是可以在 Web 瀏覽器中繪制內容的技術,因此值得比較和了解什么時候哪個更合適。 在本文中,我們將研究何時使用SVG與何時使用Canvas。

      SVG 是矢量和聲明性的

      如果你需要矢量圖,SVG 將是你的選擇。矢量藝術在視覺上很清晰,并且文件大小往往比 JPG 等光柵圖形小。

      SVG 代碼可以直接放在 HTML 中,就像聲明性繪圖指令:

      <svg viewBox="0 0 100 100">
        <circle cx="10" cy="10" r="10" />
      </svg>

      結果

       

      如果你非常關心圖形的靈活性和響應能力,那么 SVG 就是最好的選擇。

      Canvas 是一個 JavaScript 繪圖 API

      你在 HTML 中放置一個<canvas>元素,然后在 JavaScript 中進行繪圖。換句話說,你發出命令來告訴它如何繪制(這比聲明性更重要)。

      <canvas id="myCanvas" width="578" height="200"></canvas>
      <script>
        var canvas = document.getElementById('myCanvas');
        var context = canvas.getContext('2d');
        var centerX = canvas.width / 2;
        var centerY = canvas.height / 2;
        var radius = 70;

        context.beginPath();
        context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
        context.fillStyle = 'green';
        context.fill();
      </script>

      結果

       

      SVG 在 DOM 中

      如果你熟悉諸如此類的 DOM 事件click,mouseDown,那么這些在 SVG 中也是可用的。在這方面, <circle>與 <div> 并沒有太大的不同。

      <svg viewBox="0 0 100 100">
        
        <circle cx="10" cy="10" r="10" />
        
        <script>
          document.querySelector('circle').addEventListener('click', e => {
            e.target.style.fill = "red";
          });
        </script>
        
      </svg>

      結果

       

      SVG 可訪問性

      你可以使用Canvas替代文本:

      <canvas aria-label="Hello WebKaka" role="img"></canvas>

      你也可以在 SVG 中做到這一點,但由于 SVG 及其內容可以直接在 DOM 中,我們通常認為 SVG 是你嘗試構建可訪問體驗時使用的工具。以另一種方式解釋,你可以構建一個 SVG,輔助技術可以訪問并找到具有自己的聽覺解釋等的鏈接和子元素。

      CSS 可以和 SVG 一起玩

      我們在上面看到 SVG 可以在 DOM 中,而 JavaScript 可以進入其中并做一些事情。

      <svg viewBox="0 0 100 100">
        
        <circle cx="10" cy="10" r="10" />
        
        <style>
          circle { fill: blue; }
        </style>
        
      </svg>

      結果

       

      請注意我如何將<script><style>塊放在<svg>這些示例中,這是有效的。假設你已經將 SVG 直接放入 HTML 中,你可以將它們移出,或者讓其他外部 CSS 和 JavaScript 做同樣的事情。

      CSS 擅長的東西在 SVG 中仍然是可能的,比如:hover狀態和動畫!

      <svg viewBox="0 0 100 100">
        
        <circle cx="50" cy="50" r="50" />
        
        <style>
          circle { fill: blue; animation: pulse 2s alternate infinite; }
          @keyframes pulse {
            100% {
              r: 30;
            }
          }
        </style>
        
        <script>
          document.querySelector('circle').addEventListener('click', e => {
            e.target.style.fill = "red";
          });
        </script>
        
      </svg>

      結果

       

      SVG與Canvas優缺點比較

      下表顯示了SVG與Canvas的優缺點比較。

       SVG與Canvas優缺點比較

      總結

      本文介紹了SVG與Canvas適用于不同的場合。

      • 一個小的純色圖標?SVG 在 DOM 中,所以像按鈕內的圖標這樣的東西對 SVG 來說很有意義——更不用說它可以用 CSS 控制并有常規的 JavaScript 事件處理程序和東西。
      • 類似控制臺的交互式游戲?這將包含大量的移動元素、復雜的動畫和交互以及性能方面的考慮。這些都是canvas擅長的東西。

      作為一個日常的網頁設計師/開發人員,我發現 SVG 在實踐層面上更有用。我不確定我是否曾經在Canvas上做過任何制作工作。 

      相關文章

      標簽: SVG  Canvas  
      x
      • 站長推薦
      久久精品国产精品国产精品污,亚洲色成人四虎在线观看,亚洲熟妇无码另类久久久,揉她小豆豆揉到失禁H