如何使 SVG 与其父容器等比例缩放


SVG,或可缩放矢量图形,是一种基于 XML 的标记语言,用于生成矢量图形。SVG 图像可以缩放至任何大小而不会损失质量,因为它们独立于分辨率。对于必须在具有不同屏幕宽度的多种设备上查看的视觉效果设计,它们是最佳选择。在本文中,我们将讨论如何使 SVG 与其父容器等比例缩放。我们将介绍 SVG 的基础知识、如何设计 SVG 以及如何使其响应式。

什么是 SVG?

在学习如何使 SVG 与其父容器等比例缩放之前,让我们首先定义 SVG。

SVG 是一种基于 XML 的矢量图形标记语言。与由像素(如 JPG 或 PNG 中的像素)组成的光栅图形不同,矢量图形由用数学方程式指定的形状、线条和曲线组成。

SVG 图像可以缩放至任何大小而不会损失质量。因此,它们是设计必须在具有不同屏幕宽度的多种设备上查看的视觉效果的最佳选择。SVG 图像非常可定制,可以使用 CSS 和 JavaScript 进行修改。

方法

可以使用以下两种方法之一使 SVG 与其父容器等比例缩放:

  • 利用 CSS。

  • 利用 JavaScript。

让我们深入了解这两种方法:

方法 1:利用 CSS

可以使用 CSS 使 SVG 与其父容器等比例缩放。需要遵循的步骤:

  • 步骤 1 - 将父容器的宽度和高度调整为您希望 SVG 拥有的尺寸。

  • 步骤 2 - 将 SVG 添加到父容器中。

  • 步骤 3 - 使用 CSS 将 SVG 的宽度和高度设置为 100%。

  • 步骤 4 - 使用 preserveAspectRatio 属性确保 SVG 的纵横比保持不变。

示例

<!DOCTYPE html>
<html lang="en">
<head>
   <style>
      .parentContainer {
         width: 400px;
         height: 400px;
      }
      svg {
         width: 100%;
         height: 100%;
      }
   </style>
</head>
<body>
   <div class="parentContainer">
      <svg viewBox="0 0 100 100" preserveAspectRatio="xMidYMid meet">
         <!-- Placing SVG content here -->
         <circle cx="20" cy="20" r="15" stroke="black" stroke-width="2" fill="green" />
      </svg>
   </div>
</body>
</html>

方法 2:利用 JavaScript

也可以使用 JavaScript 使 SVG 与其父容器等比例缩放。以下是缩放 svg 需要遵循的步骤。

  • 步骤 1 - 获取对 SVG 和父容器的引用。

  • 步骤 2 - 将父容器的宽度和高度设置为 SVG 的宽度和高度。

  • 步骤 3 - 使用 preserveAspectRatio 属性确保 SVG 的纵横比保持不变。

  • 步骤 4 - 在窗口调整大小时,向 window 对象添加事件监听器。

  • 步骤 5 - 在窗口调整大小时,更新 SVG 的宽度和高度以匹配父容器的宽度和高度。

示例

<!DOCTYPE html>
<html lang="en">
<body>
   <div class="parentContainer">
   <svg viewBox="0 0 100 100" preserveAspectRatio="xMidYMid meet">
      <!-- Placing SVG content here -->
      <circle cx="20" cy="20" r="15" stroke="black" stroke-width="2" fill="green" /> 
   </svg> 
   <!--add a script tag for adding javascript-->
   <script>const parent = document.querySelector('.parentContainer');
      const svg = parent.querySelector('svg');
      function scaleSVG() {
         const { width, height } = parent.getBoundingClientRect();
         svg.setAttribute('height', height);
         svg.setAttribute('width', width);
      }
      window.addEventListener('resize', scaleSVG);
      scaleSVG();
   </script>
</body>
</html>

注意

  • 圆形和矩形是 SVG 中的一些基本形状元素,可用于创建各种美学设计。

  • 要生成圆形,使用 circle 元素,要生成矩形,使用 rect 元素。

  • 这两个元素都可以使用 CSS 属性(如 fill 和 stroke)以及 stroke-width 来更改其外观。

  • 这两个元素还可以通过应用诸如 translate、rotate 和 scale 之类的转换来更改其位置、旋转和大小。

  • 这些元素是 SVG 图形的基本构建块,可以与各种形状和组件组合以创建复杂的图案。

  • 多边形、线条、路径、椭圆和弧线是可以在 SVG 中创建的一些其他基本形状。

结论

总而言之,SVG 是一种灵活且适应性强的矢量图形标记语言。可以使用 CSS 或 JavaScript 使 SVG 与其父容器等比例缩放,从而实现响应式设计。由于设计人员可以使用它们创建可以缩放至任何大小而不会降低质量的高质量视觉效果,因此 SVG 是在多种设备上查看的绝佳选择。

更新于: 2023 年 11 月 22 日

7K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告