Rails 中使用 SVG
WriterShelf™ is a unique multiple pen name blogging and forum platform. Protect relationships and your privacy. Take your writing in new directions. ** Join WriterShelf**
WriterShelf™ is an open writing platform. The views, information and opinions in this article are those of the author.
Article info
分類於:
標籤:
日期:
創作於:2018/01/24,最後更新於:2018/07/13。
合計:932字
Like
or Dislike
About the Author
很久以前就是個「寫程式的」,其實,什麼程式都不熟⋯⋯
就,這會一點點,那會一點點⋯⋯
More to explore
要有好看的不發毛圖,就一定要使用向量圖,用 Adobe 的人,就一定知道 AI 跟 PhotoShop 的不同,在網頁中,就是要用 SVG,在 Rails 中要使用 SVG,其實很簡單,
其中最簡單的方法就是將 SVG 直接放在 views 中的 ERB 當中,舉個例子,這是我用 CorelDRAW X6 做個一個簡單的箭頭符號,唯一改的是加入了一個 Class="test"
然後在 CSS 中,就可以任意指定大小了,實務上,可以把這個 SVG 做成一個 partial,這樣就可以重複數用了,如果SVG 檔案不多,這是最簡單的使用法了。
這是結果:
另外一個方法是把 SVG 的檔案放在 app/assets/images 中,這個好處是所有的影像擋都集中保管,既然是一個檔案,那就一定要讀取了,就加一個 helper 在 app/helpers/application_helper.rb
然後記得將 SVG 的 width 及 height 改成
使用時,用個 CSS Class 包起來,這樣就可以改大小了。
這樣就可以用 CSS 來改大小了。
HTML:
秀個結果:
比較流行的是 inline-svg,寫 rails 最大的好處就是可以用 Gem,就看你喜不喜歡了,我是能少用就少用,但是用這個 Gem 是很方便的,只是它是用 Nokogiri,有人覺得慢,如果剛好有用,那就更適合了,這是他的網址,我覺得跟上面兩種也很像,主要的差別是用這個 Gem 可以在外設定 class 及其他 CSS style,看喜歡了。 這是另一篇類似的,使用類似的方法,但是用 assets。
這是參考這篇文章的,我是把 SVG 放在 ‘shared/test.html.erb' 中,大概會像這樣:(注意:我改了 stroke 及 fill 的設定為 currentColor)
使用時就呼叫這 ID 就好了:
CSS 的設定會是這樣:
如果有一堆 SVG,我覺得這是最好的方法,如果只有幾個,就不用了。 但是,如果你有好幾個 SVG 都是用同一個程式(例如:Corel Draw),你很快就會發現,奇怪,為什麼加入新的 SVG 後,其他的 SVG 不見了或是變色了?別擔心,還是那個 CDATA[ 中的問題,CDATA[ 裡面列了 class name 如 .str0,這些 SVG 的 class name 如果相同,就會亂了,最簡單的方法就是每個 SVG 用不同的 class name,改掉後,別忘了也要記得改 g 裡面的 path 的 class name: <path class="str0"... happy SVG!
HTML:
放個結果:
如果問我那個好,我覺得如果就一兩個 SVG,就用一號方法吧,如果很多,就用最後一個了,但,都各有其優點啦。