页面上怎么使用svg
svg标签直接在页面使用
不多说。
其他标签使用svg
除了直接使用svg标签,还有如下方法:
<object data="your.svg" type="image/svg+xml" id="svg1">
<img src="yourfallback.jpg" />
</object>
<img src="your.svg" alt="" id="svg2">
<div style="width: 30px;height: 30px;background:url(your.svg)"></div>
<iframe src="your.svg"></iframe>
<embed src="your.svg" id="svg3" type="image/svg+xml" />
上面your.svg的内容如下:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="30px" height="30px" viewBox="0 0 40 40" enable-background="new 0 0 40 40" xml:space="preserve">
<path opacity="0.2" class="aaa" fill="#FF6700" d="M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946
s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634
c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z"></path>
<path fill="#FF6700" class="bbb" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0
C22.32,8.481,24.301,9.057,26.013,10.047z" transform="rotate(42.1171 20 20)">
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 20 20" to="360 20 20" dur="0.5s" repeatCount="indefinite"></animateTransform>
</path>
</svg>
其中如果用img background iframe 方式外链svg,css和js均无法修改svg内部path,rect ,circle的填充颜色;
而使用object,embed方式,我们可以通过js修改填充颜色:
document.getElementById("svg1").addEventListener("load", function() {
var doc = this.getSVGDocument();
var path = doc.querySelector("path");
path.setAttribute("fill", "green"); // 换个颜色
});
在vue项目中使用svg
svg-spirite-loader的应用
定义icon组件:
<template>
<svg class="svg-icon">
<use :xlink:href="iconName"></use>
</svg>
</template>
<script>
export default {
name: 'icon',
props: {
name: {
type: String,
required: true
}
},
computed: {
iconName () {
return `#${this.name}`
}
}
}
</script>
使用icon组件
<template>
<div id="app">
<icon name="icon-svgexport-2"></icon>
</div>
</template>
<script>
import icon from './icon.vue'
require('./icons/svgexport-2.svg')
export default {
name: 'App',
components: {
icon
},
}
</script>
webpack loader配置
{
test: /\.svg$/,
loader: 'svg-sprite-loader',
include: [resolve('src/icons')],
options: {
symbolId: 'icon-[name]'
}
},
注意:使用svg-sprite-loader之后,解析png等图片使用url-loader的时候,需要排除被svg-spirite-loader解析的svg,否则会报错
react使用svg-sprite-loader
在webpack.config.js中添加配置:
{
test: /\.svg$/,
loader: 'svg-sprite-loader',
include: [path.resolve(__dirname, '../src/icons')], // 只处理指定svg的文件
options: {
symbolId: 'icon-[name]'
}
},
定义Icon组件:
import React, {Component} from 'react'
export default class extends Component{
render() {
const {className,type} = this.props
return (
<svg className={className}>
<use xlinkHref={`#icon-${type}`}></use>
</svg>
)
}
}
使用组件:
import Icon from 'src/components/icon'
......
<Icon className="icon-user-icon icon-s-normal-tny" type="user-icon" />
注意:create-react-app中的file-loader设置了对svg处理,导致svg-sprite-loader失效,在下面的exclude添加/.svg$/:
{
loader: require.resolve('file-loader'),
exclude: [/\.(js|mjs|jsx|ts|tsx)$/, /\.html$/, /\.json$/],
options: {
name: 'static/media/[name].[hash:8].[ext]',
},
},
@svgr/webpack在react中使用svg
如果不使用svg-spirite-loader,create-react-app项目中还支持一种使用svg的方法,在webpack.config.js的babel-loader中的配置:
require.resolve('babel-plugin-named-asset-import'),
{
loaderMap: {
svg: {
ReactComponent: '@svgr/webpack?-svgo,+titleProp,+ref![path]',
},
},
},
import{ReactComponent as User} from 'src/icons/user-icon.svg' //ReactComponent是必须的
像使用React组件一样使用:
<User />
此处的babel插件babel-plugin-named-asset-import的作用是将:
import {ReactComponent as User} from 'src/icons/user-icon.svg'
转换为:
import { ReactComponent as User } from "@svgr/webpack?-svgo,+titleProp,+ref!/static/media/user-icon.dccd0fcf.svg";
然后由@svgr/webpack处理。
页面上怎么使用svg的更多相关文章
- 把页面上的图表导出为pdf文件,分享一种请求下载文件的方法
最近客户提出一个需求,就是把页面上的图表导出为pdf文件. 找了很多资料.终于有了点头绪.最主要是参考了HighCharts的做法.http://www.hcharts.cn/ 实现原理:把页面图表的 ...
- 如何在一个页面上让多个jQuery
如何在一个页面上让多个jQuery共存呢?比如jquery-1.5和jquery-1.11. 你可能会问,为什么需要在一个页面上让多个jQuery共存?直接引用最新版本的jQuery不行吗? 答案是, ...
- asp.net 页面上的点击事件
asp.net 页面上 服务器端控件Button 有两个click事件如 <asp:Button ID="Button1" runat="server" ...
- Javascript/jQuery根据页面上表格创建新汇总表格
任务背景及需求 按页面上的现成表格,用js生成新的统计表格如下: 实现思路 1,把表格数据抽取出来生成json数组 2,计算表格总数并创建空表格 3,历遍json数组把数据动态插入所有的表格,设值/a ...
- 页面上使用 Thymeleaf 的内联js不当造成了 java.lang.StackOverflowError: null 问题
由于在页面上内联js使用不当,从而在从 Controller 跳转到页面时发生了以下错误: java.lang.StackOverflowError: null at org.thymeleaf.ut ...
- 临时存存储页面上的数据---Web存储
HTML5 Web存储的两种方法使用 localStorage和sessionStorage 参考: http://www.cnblogs.com/taoweiji/archive/2012/12/0 ...
- 浅谈在静态页面上使用动态参数,会造成spider多次和重复抓取的解决方案
原因: 早期由于搜索引擎蜘蛛的不完善,蜘蛛在爬行动态的url的时候很容易由于网站程序的不合理等原因造成蜘蛛迷路死循环. 所以蜘蛛为了避免之前现象就不读取动态的url,特别是带?的url 解决方案: 1 ...
- Progress.js – 为页面上的任意对象创建进度条效果
Progress.js 是一个 JavaScript 和 CSS3 的库,它帮助开发人员为网页上的每个对象创建和管理进度条效果.你可以设计自己的模板,进度条或者干脆定制. 您可以使用 Progress ...
- HTML <base> 标签 为页面上的所有链接规定默认地址或默认目标
定义和用法 <base> 标签为页面上的所有链接规定默认地址或默认目标. 通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白. 使用 <base& ...
随机推荐
- .NET Core加解密实战系列之——消息摘要与数字签名算法
目录 简介 功能依赖 消息摘要算法 MD算法 家族发展史 应用场景 代码实现 MD5 示例代码 SHA算法 应用场景 代码实现 SHA1 SHA256 示例代码 MAC算法 HMAC算法的典型应用 H ...
- QT Creator配置环境和安装
原文链接:https://blog.csdn.net/qq_33154343/java/article/details/78587699 补充下其中缺少的步骤:安装后缺少QT GUI Applicat ...
- (私人收藏)2019WER积木教育机器人赛(普及赛)基础解决方案
2019WER积木教育机器人赛(普及赛)基础解决方案 含地图.基础解决方案.全部路线的往返.详细规则.视频.搭建方案 EV3;乐高;机器人比赛;能力风暴;WER https://pan.baidu.c ...
- AspNetCore&Coding持续集成
对于现有很多持续集成工具来讲,功能越来越高级,使用了 Coding 有大半年时间,越发觉好用,特别是没钱续费服务器时,找到了新的羊毛. 一.众多持续集成工具 现在可用的持续集成工具繁多,各大云服务商都 ...
- Navicat远程连接MySQL 提示1045 - Access denied for user 'root'@'223.74.158.192'(using password:YES)
问题: 今天在自己的阿里云服务器上(Window Server2012 R2)安装了一个MySQL5.7.26,在阿里云服务器中通过本地链接是正常的,但是当在自己的电脑上使用Navicat连接是提示: ...
- MySQL 你可能忽视的选择问题
我们在 MySQL 入门篇主要介绍了基本的 SQL 命令.数据类型和函数,在局部以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我 ...
- Flask-实现下载功能
1. 接口返回真实的文件 这种情况比较简单, flask里带有此类api, 可以用send_from_directory和send_file. 核心代码如下: from flask import se ...
- [Mybatis]Mybatis常用操作
Mybatis是目前国内比较流行的ORM框架,特点是可以写灵活的SQL语句,非常适合中小企业的面向数据库开发. 本文总结自己开发过程中常用的Mybatis操作. 一.插入操作 主键自增插入单条 < ...
- C#中Linq查询List与DataTable和Dictionary
查询DataTable返回List List<string> listNation = dtNation.AsEnumerable().Select(d => d.Field< ...
- day51 作业
用html搭建一个注册页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...