杭州电子商务研究院

将 React 与 SVG 结合使用

2020-10-31 08:00飞浪

介绍

可缩放矢量图形 (SVG) 是一种类似于 XML 的语法,用于在浏览器中显示矢量图形或图像。SVG 生成的矢量图形可以缩放到最大,而不会被栅格化或降低质量。最有趣的是,所有主流浏览器都支持 SVG。在本指南中,您将学习如何使用 SVG 绘制图形(特别是万事达卡徽标)和形状,以及如何将 SVG 图形添加到您的 React 应用程序中。

理解 SVG 语法

如果您熟悉 HTML 或 XML,那么使用 SVG 的语法应该很容易掌握。编写 SVG 元素需要遵循两个严格的准则:

  1. 所有属性都必须放在引号中,无论值的类型如何(字符串或整数),如下所示
      <rect width="100%" fill="purple" ...../>
    
  1. SVG 元素和属性都区分大小写,因此,更改元素或属性的大小写是无效的 SVG。
      // Drawing a rectangle 
<rect width="100%" fill="purple" ...../>

// NOT

<RECT WIDTH="100%" FILL="ORANGE"../>
    

绘制形状

如上所述,您将学习如何使用 SVG 绘制万事达卡徽标。每个 SVG 元素都包裹在一个<svg/>标签中,该标签带有版本和绘图区域的大小。

      <svg version="1.1" baseProfile="full" 
			width="400" height="250" 
			xlmns="http://www/w3/org/2000/svg">
// Content Here
</svg>
    

接下来,添加一个带有黑色背景的矩形。

      <svg version="1.1" baseProfile="full" 
			width="400" height="250" 
			xlmns="http://www/w3/org/2000/svg">
<rect width="100%" height="100%" fill="black"></rect>
</svg>
    

添加两个相交的圆。

      <svg version="1.1" baseProfile="full" 
			width="400" height="250" 
			xlmns="http://www/w3/org/2000/svg">
<circle cx="150" cy="100" r="80" fill="red"></circle>
<circle cx="256" cy="100" r="80" fill="orange"></circle>
</svg>
    

r属性指的是圆的半径。

cx和cy指的是元素在圆的x和y坐标上的位置。

最后,在您的徽标上添加一些文字。

      <svg version="1.1" baseProfile="full" 
			width="400" height="250" 
			xlmns="http://www/w3/org/2000/svg">
<circle cx="150" cy="100" r="80" fill="red"></circle>
<circle cx="256" cy="100" r="80" fill="orange"></circle>
<text x="200" y="219" font-size="20" text-anchor="middle" fill="white">MasterCard</text>
</svg>
    

要查看其外观,请创建一个 HTML 文件并在浏览器中打开它。你真是个天才!尝试进一步调整属性,以更好地了解它们的作用。

设置和应用程序

现在您拥有了世界一流的 SVG 徽标,请在终端中输入以下内容来设置您的 React 应用程序。

      npx create-react-app <YOUR_APP_NAME>
    

您还可以访问https://react.new以在codesandbox.io上获取完全配置的 React 环境。

将 SVG 添加到应用程序

使用 Create React App 渲染 SVG 元素非常简单。为此,请创建一个包含您创建的徽标的 SVG 文件并保存它。在本指南中,我假设您将其保存在svg/ 中。

接下来,将其导入到您的应用程序中,如下所示。

      import React from 'react';
import { ReactComponent as MyLogo } from './assets/logo.svg';

function App(){
	return(
		<div>
				<MyLogo/>
		</div>
	);
}
    

结论

瞧!在本指南中,您学习了如何创建 SVG 元素并将其添加到 React 应用。SVG 的作用远不止创建基本形状。您可以做更多事情,包括渐变和动画。

Mozilla 开发者网络文档对可缩放矢量图形有非常详细的解释。您也可以通过 Twitter 与我联系@DesmondNyamador。

曝光31258浏览1668