将SVG样式化为React组件

在创建反应应用程序文档之后,我imported a svg as a react component

但是,无论是内联还是通过CSS,我似乎都无法正确调整其大小或位置。

我想将SVG组件缩放到与其他图标相同的大小100px x 100px,然后将其放置在屏幕的底部中心。

我尝试为svg组件设置宽度和高度道具。

<IconClose
  classname="bubbleBin"
  alt="close bubble"
  height="100px"
  width="100px"
  // viewBox="0 0 100 100"
/>

和在CSS中。

.bubbleBin {
  display: flex;
  position: absolute;
  pointer-events: none;
  align-items: center;
  align-self: center;
  justify-content: flex-end;
}

这是复制它的最少代码。如果需要,请在Sandbox中输入完整代码。

...
import { ReactComponent as IconClose } from './assets/icon_close.svg';

function App() {
  const ICON_WIDTH = 100;
  const ICON_HEIGHT = 100;

  return (
    <div style={{ display: 'flex' }}>
       <img
         src={require('./assets/cat_icon.png')}
         width={String(ICON_WIDTH)}
         height={String(ICON_HEIGHT)}
         alt="cat icon"
         draggable={false}
       />
      <IconClose
        classname="bubbleBin"
        alt="close bubble"
        height="100px"
        width="100px"
      />
    </div>
  );
}

我希望svg与猫图标的大小相同,但这是结果。

将SVG样式化为React组件

谢谢。

xuzhipeng52076 回答:将SVG样式化为React组件

SVG的viewBox周围有多余的空间。我迅速为您准备了一个新的视图框。试试这个:

<IconClose
  className="bubbleBin"
  alt="close bubble"
  height="100px"
  width="100px"
  viewBox="9 9 26 26"
/>

这是一个有变化的分支项目。

https://codesandbox.io/s/issue-styling-svg-component-8wwtw

这些值似乎很好用,如果您需要使用通常很好的十进制值(例如,9.5),则可以对它们进行一些调整。

,

它与React无关。 SVG图像具有来自width的预定义heightviewBox,因此不会随width / height属性而缩放。您可以详细了解SVG图像的工作原理here

您的两个选择是在图像上使用transform: scale(X),这有点容易破解,或者您可以查看this question来查看如何正确更改SVG图像viewBox。这比变换图像要好得多,但是我提供了两个示例,以使您理解为什么width / height遇到问题。

本文链接:https://www.f2er.com/3142144.html

大家都在问