SVG基础|SVG PATH 元素

SVG的
-
- style="stroke:#660000; fill:none;"/>
上面代码的返回结果如下:

可以看到SVG图像中包含一条曲线和俩条直线,并且第二条直线是立刻第一条直线一段距离的。
所有的这些绘制工作都是在
设置和移动虚拟画笔
在
-
- style="stroke:#660000; fill:none;"/>
直线
直线命令是
-
- style="stroke:#660000; fill:none;"/>

直线命令L和l有什么区别呢?大小的L指令绘制一条直线到一个绝度位置的点,而小写的l指令绘制一条直线到一个相对位置的点。相对位置的点是指从虚拟画笔开始绘制的点的坐标加上由l指令给出的坐标。看不懂?没关系,我们来举个例子:假如虚拟画笔开始绘制的位置是(50,50),l指令给出的坐标是(100,100),那么直线将从(50,50)位置开始绘制,绘制到(50+100,50+100)的位置。如果使用的是L100,100指令,那么就是从(50,50)位置开始绘制直线,绘制到(100,100)的位置。
路径图形总是从虚拟画笔的最后位置开始到新的坐标点绘制图形。每一个绘制命令都有一个结束点。在执行了这些绘制命令后,虚拟画笔会定位在这些命令所决定的结束点上。下一次的绘制命令将从这些点开始绘制。
弧线
使用
-
- style="stroke:#660000; fill:none;"/>
上面代码的返回结果如下:

这个例子从(50,50)开始绘制弧线,结束点位置在(100,100)。
弧线的半径有A指令的两个数值决定。第一个参数是rx,水平方向上的半径,第二个参数是ry,垂直方向上的半径。如果rx和ry设置为相同的值,那么将得到一个圆形的弧线。rx和ry设置为不同的值将得到一个椭圆形的弧线。上面的例子中,rx的值为30,ry的值为50。
A指令上的第三个参数是x-axis-rotation。这个参数用于设置弧线X轴方向上的旋转。通常不需要改变这个参数,它的默认值为0。
第四和第五个参数分别为large-arc-flag和sweep-flag。它们是两个标志位。我们知道,从A点到B点绘制一条弧线,可以得到两条不同的弧线。一条较大,另一条较小。large-arc-flag就是用于决定到底是绘制较大的那一条弧线还是绘制较小的那一条弧线。
下面来看一个例子,下面绘制4条相同的弧线,分别使用不同的large-arc-flag和sweep-flag值:
-
- style="stroke: #cccc00; stroke-width:2; fill:none;"/>
-
-
- style="stroke: #ff0000; stroke-width:2; fill:none;"/>
-
-
- style="stroke: #00ff00; stroke-width:2; fill:none;"/>
-
-
- style="stroke: #0000ff; stroke-width:2; fill:none;"/>
先来看看结果:

4条不同的弧线都是从(40,20)绘制到(60,70)。它们的rx和ry值相等,因此是一个正圆圆弧。这4条弧线分别为一条长弧线,一条短弧线,还有两条是前面两条弧线的镜像。large-arc-flag属性决定是绘制长弧线还是短弧线。sweep-flag决定是否沿开始点到结束点的直线来镜像弧线。实际上,sweep-flag是控制弧线的绘制方向,顺时针或逆时针绘制弧线,得到的结果是一种“镜像”效果。
上面的代码绘制的第一条弧线是一条黄色的弧线。它的large-arc-flag属性设置为0,这意味着较小的弧线将被绘制。sweep-flag也被设置为0,这意味着不镜像弧线。黄色弧线的返回结果如下:

第二条被绘制的弧线是红色的弧线。它的large-arc-flag属性设置为1,这意味着较大的弧线将被绘制。sweep-flag属性设置为0,这意味着不镜像弧线。红色弧线的返回结果如下:

第三条被绘制的弧线是绿色的弧线。它是红色的弧线的一个镜像(沿弧线的开始点和结束点形成的直线做镜像)。可以看到它的sweep-flag属性被置为1。
第四条弧线是蓝色的弧线,它是黄色弧线的镜像,原因是它的sweep-flag属性被置为1。
贝兹曲线
使用
- style="stroke: #006666; fill:none;"/>
它的返回结果如下:

上面的例子从(50,50)开始到(100,100)位置结束绘制一条二次贝兹曲线,控制点的位置在(50,100)的位置。控制点是由Q指令设置的两个参数。
如果你使用过一些矢量图像编辑软件,如Adobe Illustrator,那么你就会了解什么是贝兹曲线和控制点。在一个矢量图上的某个点,我们可以看到这个点上有两个控制手柄,通过拖拽这两个手柄可以调节这一点的弧度的大小。
控制点能够像磁铁一样拉伸曲线。控制点越接近弧线,弧线越平滑。控制点月远离弧线,弧线越被拉伸。下面是几个不同位置控制点的例子:

实际上,如果你从开始点绘制一条直线到控制点,在从控制点绘制一条直线到结束点,然后将这两条直线的中心点相连,那么这条连线正好和这条弧线相切。如下面的图像所示:

三次贝兹曲线
绘制三次贝兹曲线的命令是C和c。三次贝兹曲线和二次贝兹曲线相同,但是它有两个控制点。大写的命令的结束点使用绝对坐标系,小写的命令的结束点使用的是相对坐标系(相对于开始点)。下面是一个三次贝兹曲线的例子:
- style="stroke: #006666; fill:none;"/>
下面是它的返回结果,另外还绘制了它的两个控制点。

你可以使用三次贝兹曲线来绘制一些复杂的曲线。下面是一些例子:

闭合路径
- style="stroke: #006666; fill:none;"/>
下面是上面代码的返回结果:

结合使用各种命令
我们可以在
- style="stroke: #006666; fill: none;"/>
上面的代码绘制了一条直线,一条弧线和一条二次贝兹曲线,并且最后使用Z指令来闭合路径。得到的结果如下:

填充路径
我们可以使用CSS的fill属性来填充路径。看下面的例子:
- style="stroke: #0000cc;
- stroke-width: 2px;
- fill : #ccccff;"/>
上面代码得到的结果如下:

重复指令的简写方式
如果你重复多次连续使用同一个命令,可以可以将其省略,只写后面的参数即可。例如下面的例子:
- style="stroke: #000000; fill:none;" />
在上面的例子中,多次连续使用了l指令来绘制直线,除了第一个l指令外,其他的都可以省略。得到的结果如下面所示:

PATH命令
在下面列出了SVG
指令 | 参数 | 名称 | 描述 |
M | x,y | moveto | 移动虚拟画笔到指定的(x,y)坐标,仅移动不绘制 |
m | x,y | moveto | 移动虚拟画笔到指定的(x,y)坐标,这个坐标是相对于当前画笔的坐标,仅移动不绘制 |
L | x,y | lineto | 从当前画笔所在位置绘制一条直线到指定的(x,y)坐标 |
l | x,y | lineto | 从当前画笔所在位置绘制一条直线到指定的(x,y)坐标,(x,y)坐标是相对于花瓣位置的点 |
H | x | horizontal lineto | 绘制一条水平直线到参数指定的x坐标点,y坐标为画笔的y坐标 |
h | x | horizontal lineto | 绘制一条水平直线到参数指定的x坐标点(当前x + 指定的x),x坐标相对于当前画笔x坐标 |
V | y | vertical lineto | 从当前位置绘制一条垂直直线到参数指定的y坐标 |
v | y | horizontal lineto | 从当前位置绘制一条垂直直线到参数指定的y坐标,y坐标相对于当前画笔的y坐标 |
C | x1,y1 x2,y2 x,y | curveto | 从当前画笔位置绘制一条三次贝兹曲线到参数(x,y)指定的坐标。x1,y1和x2,y2是曲线的开始和结束控制点,用于控制曲线的弧度 |
c | x1,y1 x2,y2 x,y | curveto | 于大小C指令相同,但是坐标是相对于画笔的坐标 |
S | x2,y2 x,y | shorthand / smooth curveto | 从当前画笔位置绘制一条三次贝兹曲线到参数(x,y)指定的坐标。x2,y2是结束控制点。开始控制点和前一条曲线的结束控制点相同 |
s | x2,y2 x,y | shorthand / smooth curveto | 和大小的S指令相同,但是坐标是相对于当前画笔的坐标点 |
Q | x1,y1 x,y | 二次贝兹曲线 | 从当前画笔位置绘制一条二次贝兹曲线到参数(x,y)指定的坐标。x1,y1是控制点,用于控制曲线的弧度 |
q | x1,y1 x,y | 二次贝兹曲线 | 和大小的Q指令相同,但是坐标是相对于当前画笔的坐标点 |
T | x,y | 平滑的二次贝兹曲线 | 从当前画笔位置绘制一条二次贝兹曲线到参数(x,y)指定的坐标。控制点被假定为最后一次使用的控制点 |
t | x,y | 平滑的二次贝兹曲线 | 和大小的T指令相同,但是坐标是相对于当前画笔的坐标点 |
A | rx,ry x-axis-rotation large-arc-flag,sweepflag x,y | 椭圆弧线 | 从当前画笔位置开始绘制一条椭圆弧线到(x,y)指定的坐标。rx和ry分别为椭圆弧线水平和垂直方向上的半径。x-axis-rotation指定弧线绕x轴旋转的度数。它只在rx和ry的值不相同是有效果。large-arc-flag是大弧标志位,取值0或1,用于决定绘制大弧还是小弧。sweep-flag用于决定弧线绘制的方向 |
a | rx,ry x-axis-rotation large-arc-flag,sweepflag x,y | 椭圆弧线 | 和大写的A指令相同,但是坐标是相对于当前画笔的坐标点 |
Z | 无 | 闭合路径 | 从结束点绘制一条直线到开始点,闭合路径 |
z | 无 | 闭合路径 | 从结束点绘制一条直线到开始点,闭合路径 |
本文版权属于jQuery之家,转载请注明出处:http://www.htmleaf.com/ziliaoku/ ... g/201506142036.html

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

運行 H5 項目需要以下步驟:安裝 Web 服務器、Node.js、開發工具等必要工具。搭建開發環境,創建項目文件夾、初始化項目、編寫代碼。啟動開發服務器,使用命令行運行命令。在瀏覽器中預覽項目,輸入開發服務器 URL。發布項目,優化代碼、部署項目、設置 Web 服務器配置。

H5 頁面製作是指使用 HTML5、CSS3 和 JavaScript 等技術,創建跨平台兼容的網頁。其核心在於瀏覽器解析代碼,渲染結構、樣式和交互功能。常見技術包括動畫效果、響應式設計和數據交互。為避免錯誤,應使用開發者工具調試;而性能優化和最佳實踐則包括圖像格式優化、減少請求和代碼規範等,以提高加載速度和代碼質量。

製作 H5 點擊圖標的步驟包括:在圖像編輯軟件中準備方形源圖像。在 H5 編輯器中添加交互性,設置點擊事件。創建覆蓋整個圖標的熱點。設置點擊事件的操作,如跳轉頁面或觸發動畫。導出 H5 文檔為 HTML、CSS 和 JavaScript 文件。將導出的文件部署到網站或其他平台。

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

H5不是獨立編程語言,而是HTML5、CSS3和JavaScript的集合,用於構建現代Web應用。 1.HTML5定義網頁結構和內容,提供新標籤和API。 2.CSS3控製樣式和佈局,引入動畫等新特性。 3.JavaScript實現動態交互,通過DOM操作和異步請求增強功能。

H5 彈窗製作步驟:1. 確定觸發方式(點擊式、時間式、退出式、滾動式);2. 設計內容(標題、正文、行動按鈕);3. 設置樣式(大小、顏色、字體、背景);4. 實現代碼(HTML、CSS、JavaScript);5. 測試和部署。

H5 頁面製作的優勢包括:輕量級體驗,加載速度快,提升用戶留存率。跨平台兼容性,無需針對不同平台適配,提升開發效率。靈活性和動態更新,無需審核,便於內容修改和更新。成本效益,開發成本比原生 App 低。

H5(HTML5)適合應用於輕量級應用,如營銷活動頁面、產品展示頁面和企業宣傳微網站。它優勢在於跨平台性和豐富的交互性,但局限性在於復雜的交互和動畫、本地資源訪問和離線功能。
