svg 圆弧

1.需求

2.svg

2.1 预定义形状:

  • 矩形 <rect>

  • 圆形 <circle>
  • 椭圆 <ellipse>
  • 线 <line>
  • 折线 <polyline>
  • 多边形 <polygon>
  • 路径 <path>

2.2 path:

2.2.1 d:

  • M = moveto  // 移动到

M x y || m dx dy

  • L = lineto // 直线

L x y (or l dx dy)

  • H = horizontal lineto // 水平线

H x (or h dx)

  • V = vertical lineto // 垂直线

V y (or v dy)

  • C = curveto // 曲线

C x1 y1, x2 y2, x y (or c dx1 dy1, dx2 dy2, dx dy)

  • S = smooth curveto // 平滑曲线

S x2 y2, x y (or s dx2 dy2, dx dy)

  • Q = quadratic Belzier curve // 二次方曲线

Q x1 y1, x y (or q dx1 dy1, dx dy)

  • T = smooth quadratic Belzier curveto // 平滑二次方曲线

T x y (or t dx dy)

  • A = elliptical Arc // 椭圆弧

A rx ry x-axis-rotation large-arc-flag sweep-flag x y

a rx ry x-axis-rotation large-arc-flag sweep-flag dx dy

//x-axis-rotation 椭圆旋转的角度

//large-arc-flag 圆弧的角度 (>180 1 || <180 0 )

//sweep-flag 圆弧圆心的位置 (左下 1 || 右上 0)

  • Z = closepath // 关闭路径

Z (or z)

注:大写表示绝对定位,小写表示相对定位。

2.2.2 style:

  • stroke:  轮廓的颜色

  • stroke-width:  轮廓的宽度
  • fill:  形状内的填充
  • dasharray:

  • dashoffset:  dash模式开始的距离

3. 实现:

3.1 d 指定终点实现

<svg class="svg"
width="200px"height="200px"xmlns="http://www.w3.org/2000/svg">    <path d="M 100, 100 m 0, –50 a 50, 50 0 1 1 50, 50"    fill="transparent"     stroke-linecap="round"     stroke="#ffff00"     stroke-width="5px" 

</path></svg>

缺点:需要知道终点的相对位置(x, y)——红色的字体,计算起来比较麻烦。

3.2 stroke-dashoffset 指定弧长实现

<svg class="svg" width="180" height="180" xmlns="http://www.w3.org/2000/svg">
    <path d="M 87.5,87.5 m 0, -85 a 85,85 0 1 1 0,170 a 85,85 0 1 1 0,-170"
        fill="transparent"
        stroke-linecap="round"
        stroke="#ffff00"
        stroke-width="5px"
        stroke-dasharray="534px,534px"
        stroke-dashoffset="512px"
        transition="stroke-dashoffset 0.6s ease 0s,
        stroke 0.6s ease">
    </path>
</svg>

 
说明:利用stroke-dashoffset 指定dash模式开始的位置:
      也就是说,默认情况下,dash长度为534,gap长度为534,
     指定后,第一个dash长度变为512,gap长度不变,也就画出了512长度的弧线。
时间: 2024-08-24 22:55:56

svg 圆弧的相关文章

SVG path绘制百分比圆弧,给力啊

利用SVG的circle可以绘制百分比圆弧,但总觉得有点不够高端,相比起来,我更喜欢利用SVG的path来绘制百分比圆弧,因为其中会利用到绘制圆弧的基本数学知识(我已经把数学还给了老师,从网络上抓取别人的成果,进行了改造),这样就觉得很有装逼范. 一.效果图 二.实现方法 页面元素构成 <svg height="108" version="1.1" width="108" xmlns="http://www.w3.org/2000

svg学习笔记(一)

SVG——可扩展适量图形,基于XML PC端:IE9+   wap端:表现良好,适合使用 基础图形: line(线段)  <line x1="25" y1="150" x2="375" y2="50" stroke="#f00"></line> polyline(折线) <polyline points="250 75,350 100,100 0" stro

HTML学习总结(四)【canvas绘图、WebGL、SVG】

一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 SVG以及 VML 之间的一个重要的不同是,<canvas> 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图.SVG 绘图很容易编辑与生成,但功能明显要弱一些. canvas可以完成动画.游戏.图表.图像处理等原来需要Flash完成的一

使用SVG画猫咪

SVG画简易小猫咪: 第一幅图是别人的,图2是自己画的 -----------------------------分割线---------------------------- 代码部分: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>好玩的SVG---可爱的小猫咪</title> </hea

Android VectorDrawable与SVG

VectorDrawable Android L开始提供了新的API VectorDrawable 可以使用SVG类型的资源,也就是矢量图.在xml文件中的标签是<vector>,下面是一个例子 <!-- res/drawable/heart.xml --> <vector xmlns:android="http://schemas.android.com/apk/res/android" <!-- intrinsic size of the dra

HTML5 学习总结(四)——canvas绘图、WebGL、SVG

HTML5 学习总结(四)--canvas绘图.WebGL.SVG 目录 一.Canvas 1.1.创建canvas元素 1.2.画线 1.3.绘制矩形 1.4.绘制圆弧 1.5.绘制图像 1.6.绘制文字 1.7.随机颜色与简单动画 二.WebGL 2.1.HTML5游戏开发 2.2.1.Cocos2D-HTML5 2.2.2.Egret(白鹭引擎) 三.SVG 3.1.SVG Hello Wrold 3.2.多种引入SVG的方法 3.3.画直线 3.4.画椭圆 3.5.文本与矩形 3.6.向

SVG 参考手册

1. SVG元素模块 Animation.Module animate animateColor animateTransform animateMotion set mpath 剪裁模块 clipPath 颜色轮廓模块 color-profile 条件处理模块 switch 光标模块 cursor 扩展性模块 foreignObject 过滤器模块 filter feFlood feColorMatrix feComponentTransfer feComposite feConvolveMa

SVG Path高级教程

课程分为四个方面: 1. Path概述 2. 移动和直线命令 3. 弧线命令 4. 贝塞尔曲线命令 Path概述 <path> 标签用来定义路径,Path字符串是由命令及其参数组组成的字符串,是非常强大的绘图工具. 例如: <path  d="M0,0L10,20C30-10,40,20,100,100"  stroke="red"> 命令汇总 命令 含义 M/m (x,y) 移动当前位置 L/l (x,y) 从当前位置绘制线段到指定位置

深度掌握SVG路径path的贝塞尔曲线指令

一.数字.公式.函数.变量,哦,NO! 又又一次说起贝塞尔曲线(英语:Bézier curve,维基百科详尽中文释义戳这里),我最近在尝试实现复杂的矢量图形动画,发现对贝塞尔曲线的理解馒头那么厚,是完全不能承受富有创意的创作的,至少得有我当年追我老婆的脸皮厚才行. 然而,瞅瞅维基百科上的释义,或者其他一些相关的技术文章,总是离不开各种公式,一大堆变量……例如下面维基截图缩略图: 完全是数学爱好者的菜啊!我想,要是让UI设计师们去学习这些东西,估计还不如一刀来个痛快的! 这就是爱好领域与能力掌握的