首页前端开发HTML在react中使用svg的各种方法总结(附代码)

在react中使用svg的各种方法总结(附代码)

时间2024-01-23 14:50:23发布访客分类HTML浏览1006
导读:收集整理的这篇文章主要介绍了在react中使用svg的各种方法总结(附代码),觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章给大家介绍的内容是关于在react中使用svg的各种方法总结(附代码),有一定的参考价值,有需要的朋友可以...
收集整理的这篇文章主要介绍了在react中使用svg的各种方法总结(附代码),觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章给大家介绍的内容是关于在react中使用svg的各种方法总结(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

优势

  • SVG可被非常多的工具读取和修改(比如vscode)

  • 不失真, 放大缩小图像都很清晰

  • SVG文件是纯粹的XML, 也是一种DOM结构

  • 使用方便, 设计软件可以直接导出

兼容性

上一张兼容性图表, 或到caniuse.COM查看

兼容性也不是什么大问题. 当然, 如果你的网站还是需要兼容这些旧式的浏览器, 社区上也有对应的方案, 比如张鑫旭的一些SVG向下兼容优雅降级技术

使用方式

方案多种多样, 适合你的需求的才是最优的

直接在模板中使用

const Home = () =>
     (    div>
        svg width={
300}
 height={
300}
    >
            rect width="100%" height="100%" style={
{
 fill: 'purple', strokeWidth: 1, stroke: 'rgb(0,0,0)' }
}
     />
            /svg>
        /div>
    )
  1. 如果每个svg要前端画, 对前端要求较高.

  2. 如果每个图标从设计师给的svg代码里面拷, 要改各种标签不说, 改错了还报错

这样的方式并不友好

把svg转成字体

iconfont

直接把代码复制到项目css中, 定制你的标签样式, 参考阿里官方的文章, 使用起来简单粗暴, 而且浏览器兼容性高. 但是需要手动上传(有其他方案欢迎补充), 另外如果要部署到阿里的cdn以外的环境需要先下载下来, 再上传到目标环境. 略显麻烦.

此外还有icomoon等等都有提供类似的解决方案

把svg转成react component

请注意: 以下会包含tyPEscript相关的配置

项目构建前转换

例:

typescript-react-svg-icon-generator, 需要我们有一条前置命令去把svg做转换.

// svg-generator.jsconst generator = require('typescript-react-svg-icon-generator')const config = {
    svgDir: './svg/',    destination: './Icon/index.tsx'}
    generator(config)
$ node ./svg-generator.js

使用:

import Icon From './Icon'export default class App extends Component {
    render() {
        return Icon kind='close' color='#748' width={
500}
 height={
100}
     />
    }
}
    

此外, svgr(下面提到的)同样提供这种方案, 请自行查阅

项目构建时转换

例:

@svgr/webpack

嗯. 没错, 这是一个webpack loader.

// webpack rules config{
    test: /\.svg$/,    loader: '@svgr/webpack'}
    
// 全局声明svg component定义declare interface SvgrComponent extends React.statelessComponentReact.SVGAttributesSVGElement>
    >
 {
}
declare module '*.svg' {
    const content: SvgrComponent    export default content}
    
import IconReact from '@assets/svg/react.svg'const Home = () =>
     (    p>
        IconReact width={
180}
 height={
180}
     color="purple" />
        /p>
    )

这个方案好处不仅体现在构建时转换, 更重要的是它完全继承了SVGAttributes, 不需要额外的学习成本! 可参考项目ts-react-webpack4, 或脚手架steamer-react-ts

此外, 还有react-svg, svg-react-loader等同样是以类似的方式实现的.

相关文章推荐:

svg path路径的作用:svg path在网页开发中的使用方法

Storage Event如何实现页面间通信

以上就是在react中使用svg的各种方法总结(附代码)的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

react.js

若转载请注明出处: 在react中使用svg的各种方法总结(附代码)
本文地址: https://pptw.com/jishu/584327.html
canvas如何实现二维码和图片合成的代码 HTML5互联网:地铁行业新模式

游客 回复需填写必要信息