搜索
首页web前端css教程何时使用SVG与何时使用帆布

何时使用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
两个图像和一个API:我们重新着色产品所需的一切两个图像和一个API:我们重新着色产品所需的一切Apr 15, 2025 am 11:27 AM

我最近找到了一种动态更新任何产品图像的颜色的解决方案。因此,只有一种产品之一,我们可以以不同的方式对其进行着色以显示

每周平台新闻:第三方代码,被动混合内容,连接最慢的国家的影响每周平台新闻:第三方代码,被动混合内容,连接最慢的国家的影响Apr 15, 2025 am 11:19 AM

在本周的综述中,灯塔在第三方脚本上阐明了灯光,不安全的资源将在安全站点上被阻止,许多国家连接速度

托管您自己的非JavaScript分析的选项托管您自己的非JavaScript分析的选项Apr 15, 2025 am 11:09 AM

有很多分析平台可帮助您跟踪网站上的访问者和使用数据。也许最著名的是Google Analytics(广泛使用)

它全部都在头上:管理带有React头盔的React Power Site的文档头它全部都在头上:管理带有React头盔的React Power Site的文档头Apr 15, 2025 am 11:01 AM

文档负责人可能不是网站上最迷人的部分,但是其中所处的内容对于您的网站的成功也一样重要

JavaScript中的Super()是什么?JavaScript中的Super()是什么?Apr 15, 2025 am 10:59 AM

当您看到一些称为super()的JavaScript时,在子类中,您会使用super()调用其父母的构造函数和超级。访问它的

比较不同类型的本机JavaScript弹出窗口比较不同类型的本机JavaScript弹出窗口Apr 15, 2025 am 10:48 AM

JavaScript具有各种内置弹出API,它们显示用于用户交互的特殊UI。著名:

为什么可访问的网站如此难以构建?为什么可访问的网站如此难以构建?Apr 15, 2025 am 10:45 AM

前几天,我与一些前端人们聊天,讲述了为什么这么多公司努力创建可访问的网站。为什么可访问的网站如此艰难

'隐藏”属性显然很弱'隐藏”属性显然很弱Apr 15, 2025 am 10:43 AM

有一个HTML属性,它可以正是您认为应该做的:

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。