React:如何使用 ViewBox 属性

已发表: 2023-02-10

ViewBox 是SVG 元素的一个属性,允许用户控制容器内矢量图形的大小和缩放比例。 在 React 中使用 ViewBox 时,开发人员必须指定容器的尺寸以及 preserveAspectRatio 属性。 preserveAspectRatio 属性确定图形在容器中的大小和位置。 开发人员还可以使用 viewBox 属性控制图形的缩放和平移。

要构建 SVG viewBox,您可以使用 React Backstory。 新版本的 Popmotion 包括一个通用动画库。 因为 Popmotion 与框架无关,所以我们将创建一个 React ref 和一个 svg 来优化动画。 这篇文章将介绍一个包装 Popmotion 并且特定于 React 的库。 因为一些用户可能更喜欢没有动画,preferred-reduced-motion 媒体查询和 useMedia 自定义 React 挂钩可用于确定是否存在此偏好。 如果用户喜欢低速动画,我们将停止动画并立即将漫画重置为其原始的缩小 viewBox; 否则,我们将开始动画。 作为第二种选择,我使用与 Popmotion 一起使用的包装器创建了一个 React 动画,然后使用 Framer Motion 渲染它。

您还可以在使用 *svg 时将 viewBox 设置为自动。 作为设置的一部分,浏览器将调整 viewBox 的整体纵横比。

Svg 需要 Viewbox 吗?

Svg 需要 Viewbox 吗?
图片来源:https://sourcecodester.com

SVG 需要 ViewBox。 它为图形元素提供了一个坐标系。

因此,我们可以填充我们的 SVG 所在的任何容器,例如:假设我们有一个小鸟图像。 在此图像上正确设置 viewBox 后,容器大小将缩放到此图像指定的尺寸。 此外,viewBox 为我们提供了隐藏图像的一部分的能力,这使得它对动画非常有用。 使用 viewBox,我们可以更有效地裁剪图像。 使用该程序,我们可以创建云在天空中移动的动画。 您可以通过更改 viewBox 的 min-x 值来为其设置动画。 因为 preserveRatioAspect 可能会让人不知所措,所以我已将其排除在本文之外。

如何在 Html 中调整图像大小

在这种情况下,您可以更改宽度和高度属性以适应所需的大小。


Svg 使用 Viewbox

Svg 使用 Viewbox
图片来源:https://clipartart.com

viewBox 属性是SVG 规范的重要组成部分。 它提供了一种很好的方法来控制 SVG 图像的缩放和平移。 viewBox 属性可以用在元素上,也可以用在 or 元素上。 当用于这些元素之一时,viewBox 属性会为元素的内容创建一个新的视口。

ViewBox 和 viewPort 是 SVG 中常用的术语。 ViewPort 的功能类似于容器内的图像。 ViewBox 可通过视口访问。 此外,您可以通过向左、向右、向上和向下移动来调整它的大小。 因为 viewBox w/h 变得小于 300 x 500,图像在视口内变得更小(缩小)。 ViewBox x/y 在 vi​​ewBox viewBox width/height 内向右/向下滑动图像,整个视口可能会被放大(div / p /)或溢出(html / vi)。 如果视口大于一副纸牌,增加 viewBox 的“x y ...”数字将使麦片盒图像向上/向左移动。

Svg 101:基础知识

创建 SVG 的过程很简单,但有几点需要牢记。 ViewsBox 不在现实世界中,因为它是以 0-100 为单位的。 此外,坐标系以 0-100 单位而非像素定义。 在显示之前,您必须以像素为单位指定 svg 文件的大小。 下图是一个简单的 SVG 。 在第一行设置画布,然后在第二行剪切 svg。 这意味着 svg 将是 200 像素宽和 200 像素高,如 viewBox 设置中所示。 xmlns=”svg” 宽度:200 高度:200

反应SVG

React-SVG 是一个允许您在React 应用程序中包含可缩放矢量图形 (SVG) 文件的库。 它提供了一种在您的应用程序中包含 SVG 文件的简单方法,并提供了许多允许您在应用程序中操作 SVG 文件的功能。

使用称为 SVG 的基于 XML 的图形图像格式。 一些最受欢迎的品牌,如 Twitter、YouTube、Udacity、Netflix 等,都使用可缩放矢量图形作为其图像和图标。 您可以在代码中直接导入和使用 SVG 作为 React 组件。 图像不是单独的文件,而是与 HTML 一起呈现。 通过使用 SVGR,CRA 框架可以将 SVG 转换和导入为 React 组件。 如果你没有Create React App ,你应该考虑其他选择。 可以使用 SVGR 等强大工具将可缩放矢量图形 (SVG) 转换为 React 组件。

DOM 文件通常由此构建。 该软件包的 LogRocket Redux 中间件层为您提供了对用户会话的额外可见性。 LogRocket 的目标是跟踪所有 Redux 操作和状态。 它不仅监控应用程序的性能,还提供有关 CPU 负载、内存使用等的报告。 是时候对React 应用程序的调试方式进行现代化改造,并立即开始免费监控了。

在 React 中使用 Svg 还是 Png 更好?

而不是字母,使用。 如果你的 React Native 应用程序中有 jpeg 文件,你应该使用SVG 格式。 像 SVG 这样的基于矢量的格式具有灵活性和弹性,非常适合以各种格式存储信息。

使用 Svg 文件的诸多好处

尽管文件比 AI 文件小,SVG 仍然可以编辑和缩放。 用于在 Internet 上显示高质量 2D 图像的SVG 文件格式旨在使 SEO 更容易。

缩放 Svg 反应

Svg React Scale是一个 npm 包,可让您轻松缩放 React 组件。 它提供了一个简单的 API,让您可以指定组件的宽度和高度,并且它会自动缩放组件以适应这些尺寸。

如何缩放可缩放矢量图形 (SVG) Amelia Bellamy-Royds 教您有关缩放 SVG 所需的一切知识。 它不像缩放光栅图形那么简单,但它有几个有趣的应用。 初学者可能很难学习如何以正确的方式使用 SVG。 一块蛋糕被定义为具有明确纵横比的图像:宽高比。 在某些情况下,您可以强制浏览器以与其固有高度和宽度不同的尺寸绘制光栅图像,但在其他情况下,您必须扭曲图像才能绘制它。 内联 SVG 将以代码中指定的大小绘制,无论画布是大是小。 ViewBox 用于创建 Scalable Vector Graphics,这是矢量图形拼图的最后一块。

viewBox 元素是元素的标识符之一。 数字分为四部分:x、y、宽度和高度,用空格或逗号表示。 必须指定左上角最左侧视口的坐标系。 程序的高度定义为必须缩放才能达到的坐标数和 ps/ps。 当宽高比与尺寸不符时,图像将被拉伸或扭曲。 object-fit 属性允许您将不同类型的图像放入同一个 CSS 主体中。 您还可以选择设置 preserveRatioAspect=”none” 选项以允许您的图像完全像光栅图像一样缩放。

在光栅图像中,您可以定义宽度或高度以匹配另一组图像的比例。 最好的方法是什么? SVG? 没有简单的方法来解决这个问题。 首先,您需要了解如何使用 >img.> 图像自动调整图像大小。 要确定元素的纵横比,您可以使用各种 CSS 属性来调整其高度和边距。 如果图像有 viewBox,假设其他浏览器会自动使用默认的 300*150 大小。

如果您使用的是最新的 Blink/Firefox 浏览器,图像将在图像缩放时适合 viewBox。 如果您不指定高度或宽度,这些浏览器将使用与以前相同的默认尺寸。 这是替换 SVG 中元素的最直接方法,以及 <object> 和其他方式。 就官方高度而言,图形内联通常为零。 如果将 preserveRatioAspect 值设置为默认值,则图形将减少为空。 为此,您希望您的图形拉伸以覆盖整个宽度,然后溢出到您精心设置为正确纵横比的填充区域。 ViewBox 和 PreserveRatioAspect 属性具有很强的适应性。 嵌套元素可用于创建独立的图形比例,每个元素都有自己的比例属性。 因此,您可以使用此方法创建一个覆盖广阔区域的标题图形,而不会牺牲高度。

如何在 React 中调整 Svg 图像的大小

使用 React 时,进行以下更改。 CSS 转换可以通过使用 className 或全局 CSS 文件将其值从 scale(2) 转换为 scale(3) 来更改 ComponentName /> 的大小。 您可以通过选择组件类来更改颜色,为其填充颜色,并通过选择它来更改比例,但是如果更改比例,则组件类将更改。 如何调整 SVG 文件的大小? 您必须先拖放SVG 图像文件或在白色区域内单击以选择文件。 要调整大小,请单击“调整大小”按钮。 该过程完成后,您可以下载结果。

使用媒体自定义 React Hook

没有用于媒体查询的内置 React 挂钩,但您可以使用 useMedia 自定义 React 挂钩。 该钩子返回一个布尔值,指示指定的媒体查询是否匹配。 您可以像这样使用 useMedia 钩子:
从'usemedia'导入{useMedia};
const isSmall = useMedia('(最大宽度: 600px)');

CSS 的媒体查询功能允许您根据需要将特定样式应用于 HTML 元素。 一个常见的媒体查询示例是确定哪个窗口宽度是屏幕(打印、屏幕)的大小以及哪个媒体类型是哪个。 您可以使用窗口使用 JavaScript 检查媒体查询。 MediaQueryList 对象作为此函数中每个查询字符串的结果返回。 MatcMedia 库包含一个 React Hook,它允许您检查媒体查询匹配结果并根据该结果更改应用程序的界面或行为。 换句话说,TypeScript 的 hooks 类型定义看起来像这样。 作为我们挂钩的结果,一个布尔值作为查询字符串作为参数返回。 将添加一个名为 matchMedia 的方法以更改事件侦听器。

我们可以在 React 中创建自定义钩子吗?

当我们想要跨多个组件为 useState 和 useEffect hooks 实现逻辑时,自定义 Hooks 是一个很好的选择。 通过自定义 React Hooks,我们可以轻松地以优化和可扩展的方式在各种组件中重用有状态逻辑。

React Hooks 和 Redux 的优缺点

这里使用了钩子。 Redux 秘密可以很容易地与它们一起删除,并且在大多数情况下,您无需学习它们就可以让它们工作。 它们的适应性也更强,允许您将它们用于状态管理以外的用途。
如果您仍然感到困惑,请考虑如何使用 React 和 Redux 的状态管理功能。 如果您需要能够根据用户输入修改应用程序,Redux 是最佳选择。 如果您只需要存放几件物品,挂钩是一个很好的选择。
最终决定权在您; 您可以自由选择最适合您项目的方法。 尽管如此,请记住,每一种都有其优点和缺点,以便您可以根据自己的具体情况做出最佳决定。

您将自定义 React Hook 放在哪里?

在开始任何返回操作之前,您应该始终在 React 函数的最顶部使用 Hooks。 如果遵循此规则,则可以保证每次组件渲染时挂钩都以相同的顺序放置。 因此,React 可以在多个 useState 调用和 useEffect 调用之间正确维护 Hooks 的状态。

React Hooks:使用指南

React hooks 也有问题,因为它们没有很好的文档记录。 刚接触 React 的人可能会发现它很难实现。 另一方面,钩子可能难以理解,因为它们可以以多种方式使用。 为了应对这些挑战,我建议React 开发人员使用一些简单的指南开始使用钩子。 在开始之前,您必须先阅读文档以了解各种可用的挂钩。 最后,避免过于频繁地使用钩子。 通过启用此选项,您的代码库将易于阅读。 确保您编写了测试挂钩所需的任何测试。 您还可以确保说明是正确的,并且您通过这样做了解它们是如何工作的。 一般来说,你可以使用钩子来改进 React 代码库。 如果您遵循这些准则,您将能够编写更易于理解的代码并获得更好的性能。

我应该使用自定义 Hooks React 吗?

如果您有一个或多个将在代码中的不同位置使用的 React 挂钩,则需要自定义 React JS 挂钩。 这有助于高效和清晰的编码过程。

为什么要使用自定义钩子?

出于多种原因,自定义挂钩可能很有用。 代码可以重用的原因有很多。 例如,一个通用的 setState 或 localStorage 逻辑可以嵌入到一个钩子中并在所有组件中使用。
您可能想要使用自定义挂钩的原因也有多种。 一旦钩子的状态发生变化,钩子的“宿主”组件将重新呈现,无论更改是否影响其返回值。 因此,钩子是执行通用逻辑的有效方法。
然而,使用钩子有一个缺点:它们可以渲染程序。 虽然这是一种性能损失,但并不总是很严重。

自定义 Hooks 可以替代 Redux 吗?

在扩展方面,自定义 React hook 可能是 Redux 的一种不那么臃肿的替代方案,可以管理跨组件状态,避免 propdrilling 等。 此外,通过利用已经可用的反应钩子并避免依赖额外的依赖项,例如 redux npm,它使应用程序的大小尽可能小。

React Hooks 和 Redux 有什么区别?

React Hooks 允许 React 应用程序处理本地状态。 可以分派的全局状态和操作存储在 Redux 中,而 React Hooks 处理本地组件状态。 因为 React Hooks 可以用在小型或孤立的组件上,所以它们是小型或孤立组件的更好选择。 HOC 和 Hooks 一样,是独立于 React 的模式。 函数和 HOC 都可以像 React hooks 一样编写,但 React hooks 不可组合。 由于 React Hooks 的尺寸更大,因此对于更大、更复杂的组件更有效。 这完全取决于您想要实现的目标。 Redux 是开发全局应用程序的绝佳工具,而 React Hooks 更适合更小、更具体的组件。