svg的学习
svg的学习
1,初步了解
1,大致看了一下svg的简介,在图形的操作和展示上有很大的优势,例如不会失精;灵活的dom操作;很好的兼容性(IE需要下载插件)。so,是一门值得深究的前端课程;
2,看了一个小demo,使用xml的语言,创建.svg后缀文件(文件的后缀名可认为是一种标识,文件解析不会按照文件去解析,so html or js or xml解析时,与放在什么样的文件里面是没有关系的)
2,小试牛刀
1,demo总结点;
(1)standalone该文件是否独立,当对外部文件有引入时,standalone=‘no’;当值为‘yes’时,表示当前文件不需要依靠外部文件,自包含;不会报错。
(2)需要将svg文件引入html中时,提供了几个标签,embed;iframe;object;img,并提供属性执行下载显示插件。经实验,支持性受限。支持性较好的是Object,Object之间的标签是用来在Object不显示的情况下渲染的。
(3)命名空间的理解;xmlns,当前以及子空间,解析需要的语言命名。
(4)当svg不设置高宽,没有viewbox属性时,svg默认值是300*150;如果有viewbox属性,svg的默认是html的大小。
(5)viewbox(x,y,width,height)理解点:从x,y坐标,截取50宽,50长的画布区域,放在width 100 height 100 的svg画布上放大显示。
(6)patternUnits两个值得区别,objextBoundingBox按照比例定宽高平铺;userSpaceOnUse按照引用对象宽度全铺。
(7)svg的样式定义时,需要display:block ---- svg画图时,样式定义遇到疑难点
(8)当svg使用了viewbox属性,子元素的宽高失效,按照比例显示 ---- svg画图时,布局问题
(9)svg添加文本,是否只能绘制文本了?innerHtml之类是否可用?-------text
(10)svg被作为外部文件引入时,不会继承在父文档中的任何样式?
(11)preserveAspectRatio的取值区别和使用?--- 当我们在使用viewBon将画布进行裁剪等操作后,的图形放在svg图形的什么位置 xMinYMax等
(12)需分清楚svg中哪些元素可嵌套,哪些不可嵌套?circle中写text是没法正常显示的。
(13)关于text,一篇不错的文章---https://www.cnblogs.com/fzz9/p/9256265.html
(14)想要一个组只有在被引用的时候,显示,使用defs。
(15)使用createElement动态创建svg元素,失效 ----- 踩坑 ----使用createElementNS,与createElemen相似,可以指定命名空间。
(16)操作svg的元素时,遇到了shadow-root问题,导致不法操作其中dom。
mode为open时,我们可以使用shadowRoot(隐藏的dom树结构)进行访问,如下图所示

当mode是close的时候,隐藏的dom是不支持访问的;so...当我们需要动态使用use创建dom,并且需要支持修改use引用的g或者defs dom里面的内容,我们只能需要通过在js里面动态创建了;
html:

js:

结果:
解决办法:将组的生成放在js当中动态生成

效果图:

svg的学习的更多相关文章
- SVG相关学习(一)SVG基础
SVG 相关学习 SVG SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG viewBox <svg width="500" heigh ...
- SVG绘图学习总结
在我们平时做的很多网站项目中都会需要绘制各种各样的二维矢量图形.比如做城市地下管网的断面图.管线管点的坐标位置矢量标识图.钻孔位置或地层剖面图等等.我们有很多中方法来绘制这些矢量图(vml.canva ...
- JavaScript权威设计--jQuery,Ajax.animate,SVG(简要学习笔记二十)[完结篇]
1.$和jquery在全局命名空间中定义的唯一两个变量. 2.jquery是工厂函数,不是构造函数.他返回一个新创建的对象. 3.jquery的四种调用方式: <1>传递C ...
- svg动画学习
首先我们定义一块画布,然后在上面画一个圆形. 他看起来应该是这个样子的:(每一个实例我都会附加图片以及demo链接,方便直观的理解与源代码的查看,查看的时候请使用标准浏览器) 点击查看Demo 现在我 ...
- svg滤镜学习
SVG滤镜绝对称得上是他最强大的功能之一,在不影响任何文档结构的前提下,允许你给你的矢量图形添加各种专业视觉效果,我个人给他的定义就是,把PS装到了网页上. 一. SVG滤镜的原理 基本原理描述太多 ...
- SVG的学习(34—36)
使用js来动态绘制svg图片,首先就是要创建svg 节点. 使用createElementNS(),语法: document.createElementNS(namespaceURI, qualifi ...
- SVG图像学习
参考阮一峰老师: SVG 图像入门教程 基本使用 可以直接放入到html中 <body> <svg viewBox="0 0 800 600" > < ...
- d3 svg简单学习
矩形 <rect x="/> 圆形 <circle cx="/> 椭圆 <ellipse cx="/> 线 <line x1=& ...
- 【Web动画】SVG 实现复杂线条动画
在上一篇文章中,我们初步实现了一些利用基本图形就能完成的线条动画: [Web动画]SVG 线条动画入门 当然,事物都是朝着熵增焓减的方向发展的,复杂线条也肯定比有序线条要多. 很多时候,我们无法人工去 ...
随机推荐
- Vue管理系统前端系列四组件拆分封装
目录 组件封装 首页布局拆分后结构 拆分后代码 状态管理中添加 app 模块 组件封装 在上一篇记录中,首页中有太多的代码,为了避免代码的臃肿,需要对主要的功能模块拆分,来让代码看起来更简洁,且能进行 ...
- Go interface 操作示例
原文链接:Go interface操作示例 特点: 1. interface 是一种类型 interface 是一种具有一组方法的类型,这些方法定义了 interface 的行为.go 允许不带任何方 ...
- iptables初步接触
0.iptables命令选项输入顺序:iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网 ...
- 跟我一起学.NetCore之日志(Log)模型核心
前言 鲁迅都说:没有日志的系统不能上线(鲁迅说:这句我没说过,但是在理)!日志对于一个系统而言,特别重要,不管是用于事务审计,还是用于系统排错,还是用于安全追踪.....都扮演了很重要的角色:之前有很 ...
- .Net 单元测试框架xUnit使用
使用前需要导入下面的NuGet包:(不然可能会导致测试代码无法运行) .net版本 .net core3.1 Moq这个包只有需要Mock的时候才需要导入(不清楚Mock的话可以留言或自行百度) 开始 ...
- Flutter —布局系统概述
老孟导读:此篇文章非常详细的讲解了 Flutter 布局系统的工作原理. 翻译自:https://itnext.io/flutter-layout-system-overview-c70bbe9ba9 ...
- 如何解读 Java IO、NIO 中的同步阻塞与同步非阻塞?
原文链接:如何解读 Java IO.NIO 中的同步阻塞与同步非阻塞? 一.前言 最近刚读完一本书:<Netty.Zookeeper.Redis 并发实战>,个人觉得 Netty 部分是写 ...
- three.js尝试(二)模拟游戏开发:3D人物在地图上行走
本次尝试,模拟了一个小人物在场景中行走,使用简单模型建立了森林,图片纹理模拟草地,加载3D模型呈现人物,使用按键asdw模拟人物的行走,行走和站立时人物的切换等. 主要用到点:3D模型的加载,模型的动 ...
- Java8 ParallelStream
ParallelStream 并行流就是一个把内容拆分成多个数据块,用不同线程分别处理每个数据块的流.对收集源调用parallelStream方法就能将集合转换为并行流. 并行流 并行流和顺序流转换 ...
- Oracle12C安装配置文档
Oracle12C安装配置文档 Oracle12C安装配置文档 准备软件: 开始安装: 打开从官网下载下来的两个压缩包,进行解压 打开解压好的后缀为2of2的文件夹找到路径为database下的“ ...