前面我們重點都在總結(jié)各類形狀,文本和圖片,接下來,我們還是和討論canvas一樣,總結(jié)一下顏色處理,也就是填充和邊框效果;你會發(fā)現(xiàn)這里的內(nèi)容與canvas基本上是一致的。這些屬性既可以以屬性的形式寫在元素中,也可以以CSS的形式保存(這是與canvas不一樣的地方)。 復(fù)制代碼 代碼如下:<rect x="10" y="10" width="100" height="100" stroke="blue" fill="red" fill-opacity="0.5" stroke-opacity="0.8"/> 上面例子中畫了一個紅色藍(lán)邊的矩形。注意幾點: 1. 如果不提供fill屬性,則默認(rèn)會使用黑色填充,如果要取消填充,需要設(shè)置成none。 2. 可以設(shè)置填充的透明度,就是fill-opacity,值的范圍是0到1。 3. 稍微復(fù)雜一點的是fill-rule屬性。這個屬性定義了判斷點是不是屬于填充范圍的算法;除了inherit這個值外,還有兩個取值: nonzero:這個值采用的算法是:從需要判定的點向任意方向發(fā)射線,然后計算圖形與線段交點的處的走向;計算結(jié)果從0開始,每有一個交點處的線段是從左到右的,就加1;每有一個交點處的線段是從右到左的,就減1;這樣計算完所有交點后,如果這個計算的結(jié)果不等于0,則該點在圖形內(nèi),需要填充;如果該值等于0,則在圖形外,不需要填充??聪旅娴氖纠? evenodd:這個值采用的算法是:從需要判定的點向任意方向發(fā)射線,然后計算圖形與線段交點的個數(shù),個數(shù)為奇數(shù)則改點在圖形內(nèi),需要填充;個數(shù)為偶數(shù)則點在圖形外,不需要填充。看下圖的示例:邊框色 - stroke屬性 復(fù)制代碼 代碼如下:<svg width="160" height="140"> <line x1="40" x2="120" y1="20" y2="20" stroke="black" stroke-width="20" stroke-linecap="butt"/> <line x1="40" x2="120" y1="60" y2="60" stroke="black" stroke-width="20" stroke-linecap="square"/> <line x1="40" x2="120" y1="100" y2="100" stroke="black" stroke-width="20" stroke-linecap="round"/> </svg>
從左面的圖中我們可以很容易看出3中風(fēng)格的不同。 復(fù)制代碼 代碼如下:<svg width="160" height="280"> <polyline points="40 60 80 20 120 60" stroke="black" stroke-width="20" stroke-linecap="butt" fill="transparent" stroke-linejoin="miter"/> <polyline points="40 140 80 100 120 140" stroke="black" stroke-width="20" stroke-linecap="round" fill="transparent" stroke-linejoin="round"/> <polyline points="40 220 80 180 120 220" stroke="black" stroke-width="20" stroke-linecap="square" fill="transparent" stroke-linejoin="bevel"/> </svg>
從左面的圖中我們很容易看到3中風(fēng)格的不同。 復(fù)制代碼 代碼如下:<svg width="200" height="150"> <path d="M 10 75 Q 50 10 100 75 T 190 75" stroke="black" stroke-linecap="round" stroke-dasharray="5,10,5" fill="none"/> <path d="M 10 75 L 190 75" stroke="red" stroke-linecap="round" stroke-width="1" stroke-dasharray="5,5" fill="none"/> </svg>
這個屬性是設(shè)置一些列數(shù)字,不過這些數(shù)字必須是逗號隔開的。 屬性中當(dāng)然可以包含空格,但是空格不作為分隔符。每個數(shù)字 定義了實線段的長度,分別是按照繪制、不繪制這個順序循環(huán)下去。 所以左面的例子中繪制的線是畫5單位的實線,留5單位的空格, 再畫5單位的實線...這樣一直下去。 除了這些常用的屬性,還有下列屬性可以設(shè)置: 使用CSS展示數(shù)據(jù) 復(fù)制代碼 代碼如下:#MyRect:hover { stroke: black; fill: blue; } 是不是很熟悉,就是這么簡單的。
實用參考: |
|