SVG入门学习笔记

矢量图与位图

位图(BMP、PNG、JPG等)

描述每个点的颜色。放大会看到它是由一个一个的像素块组成。

矢量图(SVG、AI等)

基于数学的描述(贝塞尔曲线)。

使用SVG

  • 浏览器直接打开
  • 在HTML中使用<img>标签引入
  • 直接在HTML中使用SVG标签
  • 作为CSS背景

基本图形

<rect>矩形
<circle>圆形
<ellipse> 椭圆
<line>线
<polyline>折线
<polygon>
path绘制高级图形

矩形

<rect>
属性:

  • x、y:与边框的距离
  • width、height:元素宽度高度
  • rx、ry:圆角半径,如果值给定了rx没给ry,ry会沿用rx的值。


    <rect>

<circle>
属性:

  • cx、cy:圆心的位置
  • r: 半径


    <circle>

椭圆

<ellipse>
属性:

  • cx、cy:圆心
  • rx、ry:横纵半径


    <ellipse>

线

<lin>
属性:

  • x1、y1:直线起点
  • x2、y2:直线终点


    <line>

折线

<polyline>
属性:
*points:
<polyline points="x1 y1 x2 y2…… " >

<polyline>

多边形

<polygon>
与折线类似
属性:
属性:
*points:
<polygon points="x1 y1 x2 y2…… " >

<polygon>

基本属性

  • fill填充颜色
  • stroke边框颜色
  • stroke-width边框宽度
  • transform 样式变换,如旋转

基本API

  • 创建图形
    document.createElementNS(ns,tagName)

  • 添加图形
    element.appendChild(childElement)

  • 设置/获取属性
    element.setAttribute(name,value)
    element.getAttribute(name)

坐标系统

世界与视野

SVG中的世界是无穷大的,视野(viewbox)是世界的一部分可视区域。

  • width、height控制视窗
  • SVG代码定义世界
  • viewBox、preserveAspectRatio - 控制视野
    preserveAspectRatio有两个参数,第二个是meet/slice。slice会将视野和视窗放到同样大小。
    meet

slice

第一个参数有:
none拉伸视野视窗
xMinYMin/xMinYMax/xMaxYMin……宽高对齐方式

<svg
  width="800" height="600"
  viewBox="0 0 400 300"
  preserveAspectRatio="xMidYMid meet"
>
</svg>

视窗:浏览器渲染SVG所用范围
视野: 相对于视窗用户的可见范围

viewBox=视窗大小
viewBox<视窗大小

分组概念

将多个SVG图形变成一个整体,方便整体地修改。

<g>标签创建分组。
一个锤子

<g fill="red" stroke="red" >
      <rect x="250" y="300" width="100px" height="50px"/>
      <rect x="275" y="350" width="50px" height="100px"/>
  </g>
锤子

坐标系统

用户坐标系也就相当于视野的坐标系。
自身坐标系比如绘制了一个矩形,矩形自身内部的坐标系。
前驱坐标系现对于父元素坐标系。

如下图,举行的自身坐标系没改变,但是添加了translate后,自身坐标系相对于前驱坐标系改变了:


前驱坐标系
坐标系理解

参考坐标系

参考坐标系
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 使用XML描述的矢量文件W3C标准(1.1):http://www.w3.org/TR/SVG11/浏览器支持情况...
    没汁帅阅读 11,264评论 0 16
  • SVG 学习笔记 SVG是什么 SVG 指可伸缩矢量图形 (Scalable Vector Graphics) S...
    Penn_Xu阅读 4,678评论 0 1
  • 一:什么是SVG? 对于SVG的定义如下: ①:SVG 指的是可伸缩矢量图形 (Scalable Vector G...
    GreenHand1阅读 4,314评论 0 1
  • 一.什么是SVG? SVG 指的是可伸缩矢量图形 (Scalable Vector Graphics),它用来定义...
    nightZing阅读 17,385评论 11 62
  • 一、概述 SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Grap...
    CRUD_科科阅读 3,856评论 0 1

友情链接更多精彩内容