SVG开发用法

作者: 该昵称注册中 | 来源:发表于2018-05-26 16:44 被阅读0次

    svg

    什么是svg

    Scalable Vector Graphics 的简称,中文为可缩放矢量图形 ,web 页面矢量图.

    优势
    1.SVG可被非常多的工具读取和修改(比如记事本)
    2.SVG与JPEG和GIF图像比起来,尺寸更小,且可压缩性更强。
    3.SVG是可伸缩的
    4.SVG图像可在任何的分辨率下被高质量地打印
    5.SVG可在图像质量不下降的情况下被放大
    6.SVG图像中的文本是可选的,同时也是可搜索的(很适合制作地图)
    7.SVG可以与Java技术一起运行
    7.SVG是开放的标准
    8.SVG文件是纯粹的XML
    
    在web浏览器钟显示SVG
    1:使用<iframe> 元素嵌入SVG图像
    2:使用<img>元素嵌入SVG图像
    3:将SVG图像作为背景图插入
    4:直接使用<SVG>元素
    5:使用<embed>元素来嵌入SVG图像
    6:使用<object>元素嵌入SVG图像
    
    <iframe src="../img/svg/img1.svg" width="200px" ></iframe>  只会显示图片一部分
     <image src="../img/svg/img1.svg" width="200px"></image>  会等比缩放全部显示
     <div style="background: url('../img/svg/img1.svg') no-repeat center;background-size: 200px 300px;width: 200px;height: 300px"></div>  元素也要设置宽和高
     <div><svg></svg></div>   svg为图片矢量数据 把图片数据直接丢进去就行
     <embed src="../img/svg/img1.svg" width="400px" height="400px" type="image/svg+xml"></embed> 加上type
     <object data="../img/svg/img1.svg"  width="50%" height="50%"></object> 注意这里是data 
     以上的svg图片宽和高都可以设置百分比
     
    
    方法
    在使用JS在页面上对HTML进行操作时,一个很重要的对象是docuemnt,无论是获取还是创建dom对象,都要通过document,如果SVG是直接嵌套在HTMl内容中,就会公用一个docunemnt,从而获取SVG元素对象.但是SVG在多数时候,SVG并不会直接嵌套在HTML之中重现出来,更多时候通过:
    一:IMG标签引进,或通过背景图片css url引入,SVG只是单纯的当做图片来使用,所以**无法使用JS来操作它们**。
    二:通过object,embed或者iframe标签将SVG文件引入到HTML页面上呈现出来,对于这种情况,标签实际上会把data或src属性指定的内容相对独立的引入到页面上来.这就使得其中的内容有完全属于自己的document对象.**导致原来的document对象无法获得上述标签引入的SVG文档中元素,更不用说操作里面的属性了**.但是**我们可以通过一个方法获取所引用的SVG文档的document对象,那就是getSVGDocument().例如document.getElementById("android-down").getSVGDocument()
    当然getSVGDocument()是需要浏览器支持才行.对于目前最新浏览器来说这些都是标配方法,如果通过object和iframe引入SVG文件,除了getSVGDocuemnt(),还可以使用contentDocument属性获取其引入文档对应的document对象.区别在于如果引入的不是SVG文件,而是XML或HTML等等,contentDocument依然会返回对象,而getSVGDocument()则返回null.注意有同源策略限制,非同源,浏览器就会禁止docuemnt对象
    
    在动态添加SVG图片时,XML是有命名空间的.命名空间通过JS创建SVG对象的时候就会引起一些麻烦.不是通过createElement()创建的。
    要通过var c = document.createElementNS('http://www.w3.org/2000/svg','circle');创建时并把http://www.w3.org/2000/svg命名空间作为第一个参数传进去
    
    本文参考

    https://www.w3cplus.com/html5/svg-introduction-and-embedded-html-page.html © w3cplus.com

    https://blog.csdn.net/happyduoduo1/article/details/51789577

    相关文章

      网友评论

        本文标题:SVG开发用法

        本文链接:https://www.haomeiwen.com/subject/fbbmjftx.html