• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 在react中使用svg的各种方法总结(附代码)

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含react.js,svg,typescript,前端工程化等相关知识,匿名希望在学习及工作中可以帮助到您
这篇文章给大家介绍的内容是关于在react中使用svg的各种方法总结(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

优势

3912629915-5b56c25a441ee_articlex.png

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

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

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

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

兼容性

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

1873861957-5b56c25a03398_articlex.png

兼容性也不是什么大问题. 当然, 如果你的网站还是需要兼容这些旧式的浏览器, 社区上也有对应的方案, 比如张鑫旭的一些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

535306852-5b56c25a04326_articlex.png

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

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

把svg转成react component

// svg-generator.js const 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.StatelessComponent<React.SVGAttributes<SVGElement>> {}

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如何实现页面间通信

您可能想查找下面的文章:

  • 使用h5实现react拖拽排序组件的方法(附代码)
  • 在react中使用svg的各种方法总结(附代码)

相关文章

  • 2018-12-03如何通过HTML5触摸事件实现移动端简易进度条
  • 2018-12-03html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法_html5教程技巧
  • 2018-12-03html5中video标签的详细介绍
  • 2018-12-03图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传 _html5教程技巧
  • 2018-12-03请问这样的界面是如何实现的?
  • 2017-08-06Html5无刷新修改browser Url的方法
  • 2018-12-03HTML5 Canvas渐进填充与透明实现图像的Mask效果
  • 2018-12-03H5移动端各种各样的列表的制作方法(六)
  • 2018-12-03HTML入门必知
  • 2018-12-03认识HTML5的WebSocket

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • H5响应式网站效果怎么样?
    • Html5画布的详细介绍
    • 使用css3 属性如何丰富图片样式(圆角 阴影 渐变)_html5教程技巧
    • 使用<header>,<footer>,<nav>等h5标签,和全部使用<div>有什么区别??
    • 月薪10-12k的前端人员应该具备怎样一种技术水平?
    • 如果全世界电脑停用flash转用HTML5,可以节省多少能源?
    • HTML5 canvas画布详解(五)
    • 一组免费的响应式 HTML5 & CSS3 网站模板
    • 使用HTML5/CSS3五步快速制作便签贴特效代码示例分享(图文)
    • 淘宝的flexible适配方案为什么只对iOS进行dpr判断,对于Android始终认为其dpr为1?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有