目录
SVG是向量和声明性的
画布是一个JavaScript图纸API
SVG在DOM中
SVG可访问性
像素的画布
CSS可以与SVG一起玩
组合
露丝·约翰的比较
莎拉·德拉斯纳(Sarah Drasner)的比较
Shirley Wu的比较
SVG是默认选择;画布是备份
包起来
首页 web前端 css教程 何时使用SVG与何时使用帆布

何时使用SVG与何时使用帆布

Apr 14, 2025 am 10:43 AM

何时使用SVG与何时使用帆布

SVG和画布都是可以在网络浏览器中绘制东西的技术,因此它们值得比较和理解一个何时比另一种更合适。即使是对它们的深刻理解也可以选择选择一个非常清楚。

  • 有点平淡的图标?这显然是SVG领土。
  • 类似游戏机的游戏?这显然是帆布领土。

我知道我们还没有涵盖为什么,但是我希望当我们挖掘它时会变得清晰。

SVG是向量和声明性的

如果您知道自己需要矢量艺术,那么SVG就是选择。矢量艺术在视觉上酥脆,并且比JPG(例如JPG)的栅格图形往往更小的文件大小。

这使徽标成为非常常见的SVG用例。 SVG代码可以在HTML中直接进行,就像声明的图纸说明一样:

 <svg viewbox="“">
  <circle cx="“" cy="“" r="“"></circle>
</svg>
登录后复制

如果您非常关心图形的灵活性响应能力,那么SVG就是这样。

画布是一个JavaScript图纸API

您将元素放在HTML中,然后在JavaScript中进行绘图。换句话说,您发出命令来告诉它如何绘制(这比声明性重要)。

 <canvas width="“"> </canvas>
<script>
  var canvas = document.getElementById(&#39;mycanvas&#39;);
  var context = canvas.getContext(&#39;2d&#39;);
  var centerx = canvas.width / 2;
  var Centery = canvas.height / 2;
  var半径= 70;

  context.beginath();
  context.arc(centrx,Centery,Radius,0,2 * Math.pi,false);
  context.fillstyle =&#39;green&#39;;
  context.fill();
</script>
登录后复制

SVG在DOM中

如果您熟悉Click和Mousedown等DOM事件,那么这些事件也可以在SVG中提供。在这方面,

并没有大不相同。
 <svg viewbox="“">
  
  <circle cx="“" cy="“" r="“"></circle>
  
  <script>
    document.queryselector(&#39;circle&#39;)。addeventListener(&#39;click&#39;,e => {
      e.target.Style.fill =“ red”;
    });
  </script>
  
</svg>
登录后复制

SVG可访问性

您可以为画布提供文字替代方案:

 <canvas aria-label="“" hello aria world img> </canvas>
登录后复制

您也可以在SVG中执行此操作,但是由于SVG及其胆量可以在DOM中,因此我们通常认为SVG是您尝试建立可访问的体验时所使用的。在换句话说,您可以构建一个SVG,辅助技术可以访问并找到具有自己的听觉解释等的链接和子元素。

文字也牢固地在SVG领域。 SVG的字面意思具有元素,该元素可访问且视觉上清晰 - 与文字通常模糊的画布不同。

像素的画布

正如您在下面的Sarah Dranser的比较中看到的那样,画布是一种说跳舞,像素,舞蹈的方式! 。这是一种有趣的方式来解释该概念比任何干燥的技术情绪都能做得更好。

高度互动的作品具有很多复杂的细节和梯度,是画布的领域。因此,您会看到用画布构建的游戏比SVG更多的原因,尽管总是有例外(请注意,该游戏的简单矢量y-)。

CSS可以与SVG一起玩

我们上面看到SVG可以在DOM中,JavaScript可以进入那里并做事。这个故事与CSS相似。

 <svg viewbox="“">
  
  <circle cx="“" cy="“" r="“"></circle>
  
  
    圆{填充:蓝色; }
  
  
</svg>
登录后复制

请注意,对于这些示例,我如何将<script>和<syter>块放在<svg>中,这是有效的。但是,假设您已经将SVG从字面上的HTML中放入,则可以将其移出,或者让其他外部CSS和JavaScript做同样的事情。</script>

我们有大量的SVG性质和CSS指南。但是,很高兴知道,SVG仍然可以使用CSS很棒的东西,例如:Hover State和Animation!

组合

从技术上讲,它们并非完全相互排斥。可以将涂成

正如布莱克·鲍恩(Blake Bowen)所证明的那样,您甚至可以将SVG放在帆布上非常清脆!

露丝·约翰的比较

莎拉·德拉斯纳(Sarah Drasner)的比较

从此推文中提出。

DOM/虚拟DOM 帆布
优点
非常适合UI/UX动画 舞蹈,像素,跳舞!
非常适合SVG,这是独立的解决方案 非常适合真正令人印象深刻的3D或身临其境的东西
更容易调试 吨物品的运动
缺点
带很多物体的坦克 更难使访问
因为您必须关心昏迷的方式 开箱即用的分辨率不是独立的
一无所有

Shirley Wu的比较

从此推文中提出。

SVG 帆布
优点 容易开始 非常表现
更容易注册用户交互 易于更新
容易动画
缺点 潜在复杂的DOM 更多工作要开始
不适合大量元素的表现 处理互动的更多工作
必须编写自定义动画

许多人认为场景具有许多物体(如雪莉所说的1,000个)是画布的领土。

SVG是默认选择;画布是备份

强烈的看法,但对我来说感觉很正确:

回答它的一种极为基本的方法是“当您无法使用SVG时使用帆布”(“不能”可能意味着动画数千个对象,单独操纵每个像素等)。换句话说,SVG应该是您的默认选择,可以使用您的备份计划。

- 本杰明·德克(Benjamin de Cock)(@bdc)2019年10月2日

包起来

因此,如果我们重新审视前两个要点……

  • 有点平淡的图标? SVG进入DOM,因此类似于按钮内的图标对SVG很有意义 - 更不用说它可以由CSS控制,并具有常规的JavaScript事件处理程序和其他东西
  • 类似游戏机的游戏?这将有很多动人的元素,复杂的动画和互动,性能注意事项。这些是画布擅长的东西。

但是这里有很多中间立场。作为日常的网页设计师/开发人员,我发现SVG在实际级别上更有用。我不确定我在画布上做过任何生产工作。部分原因是我不知道帆布。我写了一本关于SVG的书,所以我在那方面做了更多的研究,但是我足够知道SVG正在为我的需求做正确的事情。

以上是何时使用SVG与何时使用帆布的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue团队完成了完成,我知道这是一项巨大的努力,而且很长时间。所有新文档也是如此。

您可以从浏览器获得有效的CSS属性值吗? 您可以从浏览器获得有效的CSS属性值吗? Apr 02, 2025 pm 06:17 PM

我有人写了这个非常合法的问题。 Lea只是在博客上介绍了如何从浏览器中获得有效的CSS属性。那样的是这样。

在CI/CD上有点 在CI/CD上有点 Apr 02, 2025 pm 06:21 PM

我说的“网站”比“移动应用程序”更合适,但我喜欢Max Lynch的框架:

在WordPress块编辑器中使用Markdown和本地化 在WordPress块编辑器中使用Markdown和本地化 Apr 02, 2025 am 04:27 AM

如果我们需要直接在WordPress编辑器中向用户显示文档,那么最佳方法是什么?

带有粘性定位的堆叠卡和一点点的杂物 带有粘性定位的堆叠卡和一点点的杂物 Apr 03, 2025 am 10:30 AM

前几天,我发现了科里·金尼文(Corey Ginnivan)网站上的这一点,当您滚动时,彼此之间的卡片堆放集。

比较浏览器的响应式设计 比较浏览器的响应式设计 Apr 02, 2025 pm 06:25 PM

这些桌面应用程序中有许多目标是同时在不同的维度上显示您的网站。因此,例如,您可以写作

如何将CSS网格用于粘头和页脚 如何将CSS网格用于粘头和页脚 Apr 02, 2025 pm 06:29 PM

CSS网格是一系列属性的集合,旨在使布局比以往任何时候都容易。像任何东西一样,那里有一点学习曲线,但是网格是

Google字体可变字体 Google字体可变字体 Apr 09, 2025 am 10:42 AM

我看到Google字体推出了新设计(Tweet)。与上一次大型重新设计相比,这感觉更加迭代。我几乎无法分辨出区别

See all articles