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的学习的更多相关文章

  1. SVG相关学习(一)SVG基础

    SVG 相关学习 SVG SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG viewBox <svg width="500" heigh ...

  2. SVG绘图学习总结

    在我们平时做的很多网站项目中都会需要绘制各种各样的二维矢量图形.比如做城市地下管网的断面图.管线管点的坐标位置矢量标识图.钻孔位置或地层剖面图等等.我们有很多中方法来绘制这些矢量图(vml.canva ...

  3. JavaScript权威设计--jQuery,Ajax.animate,SVG(简要学习笔记二十)[完结篇]

    1.$和jquery在全局命名空间中定义的唯一两个变量.   2.jquery是工厂函数,不是构造函数.他返回一个新创建的对象.   3.jquery的四种调用方式:     <1>传递C ...

  4. svg动画学习

    首先我们定义一块画布,然后在上面画一个圆形. 他看起来应该是这个样子的:(每一个实例我都会附加图片以及demo链接,方便直观的理解与源代码的查看,查看的时候请使用标准浏览器) 点击查看Demo 现在我 ...

  5. svg滤镜学习

    SVG滤镜绝对称得上是他最强大的功能之一,在不影响任何文档结构的前提下,允许你给你的矢量图形添加各种专业视觉效果,我个人给他的定义就是,把PS装到了网页上. 一.  SVG滤镜的原理 基本原理描述太多 ...

  6. SVG的学习(34—36)

    使用js来动态绘制svg图片,首先就是要创建svg 节点. 使用createElementNS(),语法: document.createElementNS(namespaceURI, qualifi ...

  7. SVG图像学习

    参考阮一峰老师: SVG 图像入门教程 基本使用 可以直接放入到html中 <body> <svg viewBox="0 0 800 600" > < ...

  8. d3 svg简单学习

    矩形 <rect x="/> 圆形 <circle cx="/> 椭圆 <ellipse cx="/> 线 <line x1=& ...

  9. 【Web动画】SVG 实现复杂线条动画

    在上一篇文章中,我们初步实现了一些利用基本图形就能完成的线条动画: [Web动画]SVG 线条动画入门 当然,事物都是朝着熵增焓减的方向发展的,复杂线条也肯定比有序线条要多. 很多时候,我们无法人工去 ...

随机推荐

  1. Kubernetes 编写自定义 controller

    原文链接:Kubernetes编写自定义controller 来自kubernetes官方github的一张图: 如图所示,图中的组件分为client-go和custom controller两部分: ...

  2. Overcoming Forgetting in Federated Learning on Non-IID Data

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 以下是对本文关键部分的摘抄翻译,详情请参见原文. NeurIPS 2019 Workshop on Federated Learning ...

  3. python字典的概念与基本操作

    字典是非常常用的一种数据结构,它与json格式的数据非常相似,核心就是以键值对的形式存储数据,关于Python中的字典做如下四点说明: 1.构造字典对象需要用大括号表示 {},每个字典元素都是以键值对 ...

  4. python open函数初习

    open("路径","打开方式")  打开方式:'r'只读模式,‘w’写模式,‘a’追加模式 ‘b’二进制模式,‘+’读/写模式.例: fh=open(&quo ...

  5. SpringCloud Alibaba Nacos 服务治理中心

    目录 一.什么是Nacos? 二.Nacos能干吗? 三.Nacos关键特性 四.Nacos中的基本概念 五.如何安装部署Nacos? 六.Nacos数据持久化 一.什么是Nacos? 英文全称Dyn ...

  6. [PyTorch 学习笔记] 3.1 模型创建步骤与 nn.Module

    本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/module_containers.py 这篇文章来看下 ...

  7. 漏洞重温之sql注入(五)

    漏洞重温之sql注入(五) sqli-labs通关之旅 填坑来了! Less-17 首先,17关,我们先查看一下页面,发现网页正中间是一个登录框. 显然,该关卡的注入应该为post型. 直接查看源码. ...

  8. 如何通过seo技术提高网站对用户的友好度

    http://www.wocaoseo.com/thread-129-1-1.html    今天的天气又是29度,眼看着满大街的人都穿着短袖和衬衣了,自己也再不能穿个厚厚的外套出去了,要不会被别人笑 ...

  9. 08.简单学习redis哨兵主备切换和选举算法

    一.选举的授权 每次一个哨兵要做主备切换,首先需要quorum数量的哨兵认为odown,然后选举出一个哨兵来做切换,这个哨兵还得得到majority哨兵的授权,才能正式执行切换 如果quorum &l ...

  10. 总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇

    本文是Java IO总结系列篇的第5篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...