十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
HTML5 SVG中如何使用筆畫(huà)與填充,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
金林網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站開(kāi)發(fā)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
前面我們重點(diǎn)都在總結(jié)各類(lèi)形狀,文本和圖片,接下來(lái),我們還是和討論canvas一樣,總結(jié)一下顏色處理,也就是填充和邊框效果;你會(huì)發(fā)現(xiàn)這里的內(nèi)容與canvas基本上是一致的。這些屬性既可以以屬性的形式寫(xiě)在元素中,也可以以CSS的形式保存(這是與canvas不一樣的地方)。
填充色 - fill屬性
這個(gè)屬性使用設(shè)置的顏色填充圖形內(nèi)部,使用很簡(jiǎn)單,直接把顏色值賦給這個(gè)屬性就可以了??蠢樱?br/>
代碼如下:
上面例子中畫(huà)了一個(gè)紅色藍(lán)邊的矩形。注意幾點(diǎn):
1. 如果不提供fill屬性,則默認(rèn)會(huì)使用黑色填充,如果要取消填充,需要設(shè)置成none。
2. 可以設(shè)置填充的透明度,就是fill-opacity,值的范圍是0到1。
3. 稍微復(fù)雜一點(diǎn)的是fill-rule屬性。這個(gè)屬性定義了判斷點(diǎn)是不是屬于填充范圍的算法;除了inherit這個(gè)值外,還有兩個(gè)取值:nonzero:這個(gè)值采用的算法是:從需要判定的點(diǎn)向任意方向發(fā)射線(xiàn),然后計(jì)算圖形與線(xiàn)段交點(diǎn)的處的走向;計(jì)算結(jié)果從0開(kāi)始,每有一個(gè)交點(diǎn)處的線(xiàn)段是從左到右的,就加1;每有一個(gè)交點(diǎn)處的線(xiàn)段是從右到左的,就減1;這樣計(jì)算完所有交點(diǎn)后,如果這個(gè)計(jì)算的結(jié)果不等于0,則該點(diǎn)在圖形內(nèi),需要填充;如果該值等于0,則在圖形外,不需要填充。
evenodd:這個(gè)值采用的算法是:從需要判定的點(diǎn)向任意方向發(fā)射線(xiàn),然后計(jì)算圖形與線(xiàn)段交點(diǎn)的個(gè)數(shù),個(gè)數(shù)為奇數(shù)則改點(diǎn)在圖形內(nèi),需要填充;個(gè)數(shù)為偶數(shù)則點(diǎn)在圖形外,不需要填充。
邊框色 - stroke屬性
上面的例子中已經(jīng)用到了stroke屬性,這個(gè)屬性使用設(shè)置的值畫(huà)圖形的邊框,使用起來(lái)也很直接,把顏色值賦給它就可以了。注意:
1. 如果不提供stroke屬性,則默認(rèn)不繪制圖形邊框。
2. 可以設(shè)置邊的透明度,就是stroke-opacity,值的范圍是0到1。
實(shí)際上,邊的情況比圖形內(nèi)部稍微復(fù)雜一點(diǎn),因?yàn)檫叧祟伾?,還有"形狀"需要定義。
線(xiàn)的端點(diǎn) - stroke-linecap屬性
這個(gè)屬性定義了線(xiàn)段端點(diǎn)的風(fēng)格,這個(gè)屬性可以使用butt,square,round三個(gè)值??蠢樱?br/>
代碼如下:
這段代碼繪制了3條使用不同風(fēng)格線(xiàn)端點(diǎn)的線(xiàn),
從左面的圖中我們可以很容易看出3中風(fēng)格的不同。
線(xiàn)的連接 - stroke-linejoin屬性
這個(gè)屬性定義了線(xiàn)段連接處的風(fēng)格,這個(gè)屬性可以使用miter,round,bevel三個(gè)值??蠢樱?br/>
代碼如下:
從左面的圖中我們很容易看到3中風(fēng)格的不同。
線(xiàn)的虛實(shí) - stroke-dasharray屬性
這個(gè)屬性可以設(shè)置線(xiàn)段采用何種虛實(shí)線(xiàn)。看例子:
代碼如下:
這個(gè)屬性是設(shè)置一些列數(shù)字,不過(guò)這些數(shù)字必須是逗號(hào)隔開(kāi)的。
屬性中當(dāng)然可以包含空格,但是空格不作為分隔符。每個(gè)數(shù)字
定義了實(shí)線(xiàn)段的長(zhǎng)度,分別是按照繪制、不繪制這個(gè)順序循環(huán)下去。
所以左面的例子中繪制的線(xiàn)是畫(huà)5單位的實(shí)線(xiàn),留5單位的空格,
再畫(huà)5單位的實(shí)線(xiàn)...這樣一直下去。
除了這些常用的屬性,還有下列屬性可以設(shè)置:
stroke-miterlimit:這個(gè)和canvas中的一樣,它處理什么時(shí)候畫(huà)和不畫(huà)線(xiàn)連接處的miter效果。
stroke-dashoffset:這個(gè)屬性設(shè)置開(kāi)始畫(huà)虛線(xiàn)的位置。
使用CSS展示數(shù)據(jù)
HTML5強(qiáng)化了DIV+CSS的思想,所以展示數(shù)據(jù)的部分還可以交給CSS處理。與普通HTML元素相比,只不過(guò)是 background-color和border換成了fill和stroke。其他的大多都差不多。簡(jiǎn)單看個(gè)例子:
代碼如下:
#MyRect:hover {
stroke: black;
fill: blue;
}
是不是很熟悉,就是這么簡(jiǎn)單的。
關(guān)于HTML5 SVG中如何使用筆畫(huà)與填充問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。