SVG入門
SVG已經出來好多年了,其實我也知道好久了~_~不過一直沒用過,平時一直都是切設計師給的效果圖寫頁面。
最近設計師做網頁改版,裡面有些類似小框框,小圖標等需要一些動畫效果,一開始我只是想純粹的用css3動畫做出來,但是感覺效果非常low,尤其是在做折線的過度時,丑哭我了。無奈只好搬出來想學習良久的SVG,小白進修中。。。說到SVG,還是先啰嗦一下它的意思吧!SVG 是使用 XML 來描述二維圖形和繪圖程序的語言。就是大家所熟悉的可伸縮矢量圖形 (Scalable Vector Graphics)。與其他圖像格式相比,使用 SVG 的優勢在於:- SVG 可被非常多的工具讀取和修改(比如記事本)
- SVG 與 JPEG 和 GIF 圖像比起來,尺寸更小,且可壓縮性更強。
- SVG 是可伸縮的
- SVG 圖像可在任何的解析度下被高質量地列印
- SVG 可在圖像質量不下降的情況下被放大
- SVG 圖像中的文本是可選的,同時也是可搜索的(很適合製作地圖)
- SVG 可以與 Java 技術一起運行
- SVG 是開放的標準
- SVG 文件是純粹的 XML
查看 SVG 文件
Internet Explorer9,火狐,谷歌Chrome,Opera和Safari都支持SVG。IE8和早期版本都需要一個插件 - 如Adobe SVG瀏覽器,這是免費提供的。 廢話不多說,直切主題! 1.關於svg的引入 我現在主要是針對的HTML頁面的使用,所以也就直接在HTML里直接引用了。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>svg1</title></head><body> <h1>My first SVG</h1> <!-- 在Firefox、Internet Explorer9、谷歌Chrome和Safari中,你可以直接在HTML嵌入SVG代碼。 --> <svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <circle cx="100" cy="50" r="40" stroke="#333" stroke-width_="2" fill="#ff0000" /> <!-- 另一種樣式寫法 --> <!-- <circle cx="100" cy="50" r="40" stylex="stroke:#333;stroke-width_=2;fill:#ff0000;" /> --> </svg></body></html>
注意:svg不能直接嵌入到Opera裡面。
2.開始繪製 知道了怎麼引入svg,下面就要開始繪製了。舉個例子!我要繪製一個矩形:<!DOCTYPE html><html><body><svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <rect width_="300" height="100" stylex="fill:#ccc;stroke-width:2;stroke:#333" /></svg> </body></html>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width_=500 height=500 stylex="outline: 5px solid #ccc;"> <rect width_="300" height="100" stylex="fill:#ccc;stroke-width:2;stroke:#333" /></svg>
效果就是:這樣邊框就顯示正常了,之後所繪製的圖形也會出現同樣的效果,希望大家小心哈! 好啦!入門就到這裡,其他圖形的小練習,比如圓形,直線,多邊形等,就參考一下http://www.runoob.com/svg/svg-rect.html,做繼續練習吧!其中的fill-rule填充規則參考 http://blog.csdn.net/cuixiping/article/details/7848369; 3.svg路徑
關於繪製複雜曲線,可以使用svg的路徑path來繪製。例如:
<path d="M10 10L90 90" stroke="#000000" stylex="stroke-width: 5px;"></path>
其中 d 是屬性名;
路徑畫虛線的方法:<path stroke-dasharray="5,5" d="M5,20l25,0" />
其中:第一個是每個虛線的長度,第二個是虛線之間的間隔。
path的幾種路徑:其中:字母大寫表示的是絕對位置,小寫是相對位置。
例1:SC曲線<path d="M 100 400 L 100 100 L 200 200 C 300,400 400,400 500,200 S 700,0 800,200" fill="none" stroke=#ff0000 stroke-width_=2/>
效果圖:其中:綠色的線是使用S路徑時自動添加的與C路徑對稱的線。 例2:QT曲線<path d="M100,100 Q200,200 300,100 T 500,100" stroke-width_="2" stroke="blue" fill=none/>其中:綠線為使用T路徑時自動對稱的點。
小效果1:<!-- 使文字按照路徑展示,可以實現文字個性展示 --> <defs> <path id="path1" d="M20,20 S100,150 200,10" /> </defs> <text x="10" y="100" stylex="fill:red;"> <textPath xlink:href="#path1">I love SVG I love SVG</textPath> </text>
<text x="550" y="400" fill="red" font-size="30" >你好 <!-- 使字按著路徑方向運動 --> <animateMotion path="M 0 0 L 100 -100 L100 -200" dur="5s" fill="freeze" /> </text>
另外~~~~
配合 walkway.js ,能讓動畫效果更加酷炫!!
推薦閱讀:
※創建漂亮的 CSS 按鈕的 10 個代碼片段
※在把a, span等標籤做成Button按鈕樣式時,為什麼和普通button高度差一個像素?
※現在的 CSS、JS 效果和幾年前火爆的 Flash 有什麼區別?
※Google+ 相冊中的圖片自動無縫對齊是怎麼做到的?
※CSS選擇符總結