javascript - 使用 React 创建响应式 svg

标签 javascript reactjs d3.js svg

我想创建一个 svg,它可以根据我给它的任何宽度轻松缩放。在那个 svg 中,我有一个带有相对路径的圆圈和路径,所以我希望它可以轻松缩放。

但是由于某些原因x,y的位置不对。

你可以看到下图,圆有 (x,y)=(0,0) 但它设置在中间。 我假设“viewBox”导致了问题。

enter image description here

jsfiddle 链接: https://jsfiddle.net/tzookb/69z2wepo/174297/

代码:

const ExclamationIcon = props => (
    <svg {...props} viewBox="0 0 140 140">
      <circle fill="#f66868" cx="70" cy="70" r="70" />
      <g transform="translate(58,30)">
        <path fill="white" d="M 11,56.7 L 9,56.7 L 4.2,13.2 C 4,11.4 4,10 4,9 C 4,7 4.5,4.9 5.6,3.5 C 7,2.2 8.3,1.5 10,1.5 C 11.7,1.5 13,2.2 14.4,3.5 C 15.5,4.9 16,7 16,9 C 16,10 16,11.4 15.8,13.2 z M 10,64 A 6,6 0 1,1 10,76 A 6,6 0 1,1 10,64 z"/>
      </g>
    </svg>
);


class Hello extends React.Component {
  render() {
    return (
        <div>
        asdas
        <svg className="main">
          <rect x="20" y="20" width="100" height="40" fill="red" />

          <ExclamationIcon width="30" x="0" y="0" />
        </svg>


      </div>
    );
  }
}

ReactDOM.render(
  <Hello name="World" />,
  document.getElementById('container')
);

最佳答案

如果在内部 svg 上设置高度,看起来这个问题就会消失。我猜想如果未设置高度,它会自动占用所有可用高度并自行居中。我希望我有更好的解释,但这完全难倒了我。

JS Fiddle

const ExclamationIcon = props => (
    <svg {...props} viewBox="0 0 140 140">
      <circle fill="#f66868" cx="70" cy="70" r="70" />
      <g transform="translate(58,30)">
        <path fill="white" d="M 11,56.7 L 9,56.7 L 4.2,13.2 C 4,11.4 4,10 4,9 C 4,7 4.5,4.9 5.6,3.5 C 7,2.2 8.3,1.5 10,1.5 C 11.7,1.5 13,2.2 14.4,3.5 C 15.5,4.9 16,7 16,9 C 16,10 16,11.4 15.8,13.2 z M 10,64 A 6,6 0 1,1 10,76 A 6,6 0 1,1 10,64 z"/>
      </g>
    </svg>
);


class Hello extends React.Component {
  render() {
    return (
    	<div>
        asdas
        <svg className="main">
          <rect x="20" y="20" width="100" height="40" fill="red" />

          <ExclamationIcon width="30" height="30" x="0" y="0" />
        </svg>

      
      </div>
    );
  }
}

ReactDOM.render(
  <Hello name="World" />,
  document.getElementById('container')
);

关于javascript - 使用 React 创建响应式 svg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49815046/

相关文章:

javascript - 是否可以在node.js 中遵循Javascript 重定向?

javascript - React,循环对象,显示列表,并在选择时抓取该对象

javascript - 如何在 react 应用程序中设置系统偏好暗模式,但还允许用户来回切换当前主题

javascript - 单击 d3 时删除圆圈和路径

javascript - 使用 svg 格式的 D3.js 预渲染饼图服务器时出错

javascript - 在渲染 d3 svg 对象之前更改 Bootstrap 按钮文本

javascript - jQuery datepicker 在前端工作但不是 wordpress admin dash

javascript - 想在较小的窗口中保持下拉菜单的状态

javascript - JQuery Div 内容改变事件

reactjs - 将 props 传递给每个组件