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 更適合更小、更具體的組件。