• SVG和canvas


    SVG    

    参考:https://www.w3school.com.cn/svg/svg_intro.asp  或 https://www.w3cschool.cn/svg/svg-tutorial.html(推荐) 或   https://developer.mozilla.org/zh-CN/docs/Web/SVG/Element/svg

    一、概念:这个就细说了,做前端基本都清楚。

      1、svg内的标签一般都是自闭标签。

    二、SVG 的 API:(H5页面的简单画图,推荐还是使用SVG。)

      a、svg入门详解(实例篇):https://www.jianshu.com/p/8ddb4ba85594

      b、svg的API就是一些属性,js操作的API就是和DOM一样,操作相应元素的属性。

      c、svg的基本图形和属性:https://www.jianshu.com/p/2ddd369ddd95  或  http://www.ptbird.cn/svt-base-shape.html

    1、预定义的形状元素:

    • 矩形 <rect>
    • 圆形 <circle>
    • 椭圆 <ellipse>
    • 线 <line>
    • 折线 <polyline>
    • 多边形 <polygon>
    • 路径 <path>
    • 文本 <text>

    2、自定义的 形状一般都是通过 <path>标签来实现的。

    3、形状标签上的属性(描述属性css样式属性):              具体是API参考 https://www.w3cschool.cn/svg/svg-reference.html推荐)  或 https://www.h5course.com/plus/view.php?aid=252  或  https://www.nhooo.com/svg/svg-fill.html属性手册

      a、 width 和 height 属性可定义矩形的高度和宽度。

      b、style 属性用来定义 CSS 属性 。【好像svg的大部分属性 放在style里面 也是有效的,反过来也是一样。   https://blog.csdn.net/auragreen/article/details/52212428

        css中的属性如下:(参考文档上说的不多,需要直接记录下

        fill 属性:定义矩形的填充颜色(rgb 值、颜色名或者十六进制值)

        stroke-width 属性:定义矩形边框的宽度【即border的宽度】

        stroke 属性:定义矩形边框的颜色

        fill-opacity 属性:定义填充颜色透明度(合法的范围是:0 - 1)

        stroke-opacity 属性:定义笔触颜色的透明度(合法的范围是:0 - 1)

        注意:style中的属性直接拿出来作为标签的属性也是有效的。如:

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
      <rect width="300" height="100" style="fill:rgb(0,0,255);stroke-1;stroke:rgb(0,0,0)" />
    </svg>
    
    <!-- 效果和下面的是一样的 -->
    
    <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
      <rect fill="rgb(0,0,255)" width="300" height="100" style="stroke-1;stroke:rgb(0,0,0)" />
    </svg>

      c、x 属性:定义矩形的左侧位置(例如,x="0" 定义矩形到浏览器窗口左侧的距离是 0px)

      d、y 属性:定义矩形的顶端位置(例如,y="0" 定义矩形到浏览器窗口顶端的距离是 0px)

      e、rx 和 ry 属性可使矩形产生圆角。

      f、r属性:定义圆的半径  

      注意:描述属性 可以 被 样式属性覆盖

    4、滤镜、渐变、模糊 就不讲了,直接看文档。

    5、js操作 svg :https://www.cnblogs.com/fanlinqiang/p/11826143.html

      a、如果 SVG 代码直接写在 HTML 网页之中,它就成为网页 DOM 的一部分,可以直接用 DOM 操作。

      b、如果 使用embed、object插入的svg文件,其有完全属于自己的document:

         此时,再想拿到svg, 则需要使用:getSVGDocument();

    三、常用属性:

      1、通用属性:

        a、Stroke 相关属性:https://www.runoob.com/svg/svg-stroke.html

        说明:Stroke属性定义一条线,文本或元素轮廓颜色(stroke相关的属性,是设置  线、文本、轮廓 的样式)

          stroke:线的颜色

          stroke-width:线的厚度

          stroke-linecap:不同类型的开放路径的终结

            

          stroke-dasharray:用于创建虚线(里面的值对应的是 实现 或 虚线的 长度。所以圆也是一样,设置的是弧长)

        b、fill 相关属性:https://www.nhooo.com/svg/svg-fill.html

        说明:fill 设置的是填充区域的属性

          fill:属性 定义了其轮廓内的形状的颜色(即 填充颜色)

          fill-opacity:填充颜色的不透明度

          fill-rule:决定的复杂形状的填充方式(简单图形用不到)

        c、transform 以及其它的通用属性 和 css的都一样。

    四、辅助工具:

    1、SVG实现的圆环旋转效果

     参考:http://www.softwhy.com/article-6472-1.html

    2、SVG中的图形可以通过  transform="matrix(0,-1,1,0,0,440)"进行旋转。

    3、svg代码可以单独放在一个后缀名为 .svg 的文件中保存起来。这个文件就是矢量图片文件。

       这点用来制作一些矢量图会非常方便,不需要把这个svg代码放在html了(比较乱),可以单独在一个svg文件中。代码逻辑会清晰、干净许多。(占位代替图会经常使用svg制作)

     SVG标签学习(SVG标签在W3C中是排在xml中学习的):   http://www.w3school.com.cn/svg/svg_circle.asp

    SVG在线制作编辑预览工具:https://www.bejson.com/ui/svg_editor/

    SVG WEB在线编辑器 : http://www.86y.org/demo/svg/(这个不能把图片保存为svg文件)  或    http://www.zuohaotu.com/svg/(推荐,这个比较完美)


    canvas

    1、canvas标签在使用的时候,内部就会创建一个画图的对象(getContext("2d") 或getContext("3d"))【这个对象包含了画图所需要的所有工具集,如画笔】。挂载在这个canvasDOM对象上。

      js 可以直接获取这个canvas标签 对象对应的画图对象ctx

    2、通过这个ctx对象,描述画什么样的图画(ctx对象可以理解成是一个画笔)。

    3、使用stroke() 或者 fill() 方法把ctx描述的图画呈现出来。

      注:上面的2、3步骤可以合并在一起,步骤2的描述可以作为步骤3(步骤3API的变形)的参数。如,fillText(text,x,y) 或 strokeText(text,x,y)。

      总结:canvas在js使用分3个步骤:获取canvas标签的DOM对象,从DOM对象中取出画图对象ctx;使用画图对象ctx描述所画的图像;将描述的图像呈现从来。

         画图对象ctx常用的API:https://www.cnblogs.com/liugang-vip/p/5360283.html

  • 相关阅读:
    bzoj2588 Count on a tree
    poco对象生成的几种方式根据你使用不同的ui决定
    airtest本地连接和远程连接
    python音频文件中pcm格式提取
    python提取视频中的音频
    如何理解快速排序的时间复杂度是O(nlogn)
    剑指 Offer 45. 把数组排成最小的数
    剑指 Offer 44. 数字序列中某一位的数字
    剑指 Offer 43. 1~n 整数中 1 出现的次数
    剑指 Offer 41. 数据流中的中位数
  • 原文地址:https://www.cnblogs.com/wfblog/p/9021840.html
Copyright © 2020-2023  润新知