pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

SVG基礎 | 繪制SVG文字

本文介紹如何繪制SVG文字,以及SVG文字的各種屬性和注意事項。我們可以使用SVG的text元素來在SVG圖像上繪制文字。,HTML5中國,中國最大的HTML5中文門戶。
1.jpg

  我們可以使用SVG 的<text>元素來在SVG圖像上繪制文字。下面是一個簡單的例子:
  1. <svg xmlns="http://www.w3.org/2000/svg">
  2.   <text x="20" y="40">這里是SVG文字</text>
  3. </svg>   
復制代碼

  這個例子中定義一個位于x=20,y=40位置的文本。文字顯示為“這里是SVG文字”。下面是它的返回結果:
QQ截圖20150731095924.jpg  
  文字的定義
  在深入了解SVG文字之前,先來看看下面的三個定義:

  •   Glyphs:Glyphs是字母或符號的視覺表現。例如,因為字母“a”有多種不同的視覺表現方式,所以可以使用不同的Glyphs來繪制它。
  •   Fonts:Fonts代表字體,它是glyphs的集合,可以用于表現一組字母或符號。
  •   Characters:Characters是代表一個字母或符號的二進制數字。一個character可以使用1個或多個字節來表示。一個characters在被計算機渲染的時候,會將它映射為字體中的一個符號。

  文字的位置
  SVG文字的位置有<svg>元素的x和y屬性來決定。x屬性決定文字的左邊部位置(文字的開始位置),y屬性決定文字的下邊部位置(注意這里不是上邊部)。文字的y屬性定位不同于其它SVG元素,如直線,矩形和其它圖形。下面的例子顯示了一串文字和一條直線,它們的y屬性都是40:
2.jpg
  注意觀察,文字的y屬性位于文字的下邊,而不是上邊。

  TEXT ANCHOR

  文字的anchor決定哪個部分的文字放置在text元素中的x屬性定義的位置。默認的anchor是文字左邊部,即文字的開始處。你也可以將anchor設置為middle,使它位于文字的中間,設置為end,使它位于文字的右邊。

  要設置文字的anchor,可以使用CSS的text-anchor屬性。該屬性的取值為:start、middle和end。下面的例子展示了設置不同的text-anchor值時文字的位置。
3.jpg
  垂直的直線是三串文本的x位置。它們都位于x="50"的位置上。你可以觀察不同的取值時文字的不同定位方式。

  上效果的代碼如下:
  1. <text x="50" y="20"
  2.       style="text-anchor: start">
  3.     Start
  4. </text>
  5. <text x="50" y="40"
  6.       style="text-anchor: middle">
  7.     Middle
  8. </text>
  9. <text x="50" y="60"
  10.       style="text-anchor: end">
  11.     End
  12. </text>            
復制代碼

  文字的描邊和填充

  和其它SVG圖形一樣,SVG文字也可以進行描邊和填充操作。如果你只指定了文字的描邊屬性,文字將會渲染為一個文字輪廓。如果你只指定了文字的填充屬性,那么文字看起來和平常是一樣的。來看看下面的三種文字描邊和填充的效果:


4.jpg

  你也可以使用stroke-width屬性為文字的描邊設置寬度。下面的例子將文字的描邊寬度設置為2:

5.jpg
  SVG文字的間距和字距調整

  我們可以使用letter-spacing和kerning屬性來控制文字的間距和字距調整(兩個glyphs之間的距離)。下面是一個簡單的例子:
  1. <svg xmlns="http://www.w3.org/2000/svg">
  2.   <text x="20"  y="20" >Example SVG text</text>
  3.   <text x="20"  y="40" style="kerning:2;">Example SVG text</text>
  4.   <text x="20"  y="60" style="letter-spacing:2;">Example SVG text</text>
  5. </svg>     
復制代碼

  下面是上面代碼的返回結果:
6.jpg
  上面的letter-spacing和kerning使用的是正數值,如果你使用負數值,那么字距將會收縮。

  單詞間距

  你可以使用word-spacing CSS屬性來指定單詞的間距。單詞的間距是指單詞之間的空白符的數量。看下面的例子:
  1. <svg xmlns="http://www.w3.org/2000/svg">
  2.   <text x="20" y="20">
  3.     Word spacing is normal
  4.   </text>
  5.   <text x="20" y="40"
  6.         style="word-spacing: 4;">
  7.       Word spacing is 4
  8.   </text>
  9.   <text x="20" y="60"
  10.         style="word-spacing: 8;">
  11.       Word spacing is 8
  12.   </text>
  13. </svg>        
復制代碼

  下面是返回的結果。注意:Firefox瀏覽器有可能不支持這個word-spacing屬性。
7.jpg
  word-spacing的值也可以設置為負數,這時單詞的間距將會被壓縮。

  文字布局-SVG文字沒有自動換行功能

  SVG文字是沒有自動換行功能的。你必須自己定位每一行文本。需要制作多行文本的話,元素可能會有所幫助,我們將在后面的文章中講解這個元素。

  你還可以將文字放置在一條路徑上,例如一個圓或一條曲線上。達到這種效果你需要使用元素。

  旋轉文本

  你可以像旋轉其它SVG圖形一樣旋轉SVG文字。旋轉SVG文字需要使用SVG transform屬性。
  1. <svg xmlns="http://www.w3.org/2000/svg">  
  2.   <text x="20"  y="40"
  3.           transform="rotate(30 20,40)"
  4.           style="stroke:none; fill:#000000;"
  5.           >Rotated SVG text</text>
  6. </svg>      
復制代碼

  上面代碼的返回結果是:
8.jpg
  關于SVG的transform屬性,后面會有文字詳細講解。

  垂直文字

  你可以使用旋轉的方法來制作垂直的SVG文字,但是還有一種簡單的方法來顯示垂直文字。那就是使用writing-mode屬性,將它的值設置為tb(Top to Bottom)。Firefox22以下的版本不支持這個屬性。看下面的例子:
  1. <svg xmlns="http://www.w3.org/2000/svg">  
  2.   <text x="10" y="20" style="writing-mode: tb;">
  3.     垂直文字
  4.   </text>
  5. </svg>      
復制代碼

  上面的代碼的返回結果是:
9.jpg
  我們在來看看英文的情況:
  1. <svg xmlns="http://www.w3.org/2000/svg">  
  2.   <text x="10" y="20" style="writing-mode: tb;">
  3.     Vertical
  4.   </text>
  5. </svg>   
復制代碼
10.jpg
  你會發現如果是英文的話,字母也被旋轉了90度。如果你需要每個字母都不被旋轉,可以設置glyph-orientation-vertical CSS屬性值為0。這個屬性值用于旋轉glyphs。默認值它的值為90度。看下面的例子:
  1. <text x="10" y="10" style="writing-mode: tb; glyph-orientation-vertical: 0;">
  2.     Vertical
  3. </text>
  4. <text x="110" y="10" style="writing-mode: tb; glyph-orientation-vertical: 90;">
  5.     Vertical
  6. </text>      
復制代碼

  上面的代碼的返回結果是:
11.jpg
  文字的方向

  你可以使用direction CSSS屬性來設置文字的渲染方向。direction屬性有兩個取值:ltr和rtl。分別是“從左向右”和“從右向左”的意思。另外,在渲染英文的時候,如果需要字母也從右向左渲染,需要設置unicode-bidi: bidi-override;。看下面的例子:
  1. <text x="130" y="40" style="direction: rtl;">從右向左顯示</text>
  2. <text x="130" y="80" style="direction: rtl; unicode-bidi: bidi-override;">right to Left</text>
復制代碼
12.jpg
  SVG文字樣式

  下面列出了一組可以使用在SVG文字上的CSS屬性。你還可以為文字的描邊和填充設置漸變,填充模式和遮罩等效果。

  注意,下面的CSS屬性名稱必須是小寫,否則渲染時會被忽略!

屬性 描述
font-family 設置字體
font-size 設置文字大小
kerning 設置字距調整的值
letter-spacing 字母之間的間距
word-spacing 單詞之間的間距
text-decoration 是否帶下劃線。可選值有:none、underline、overline和line-through
stroke 文字的描邊顏色。默認文字只有填充色,沒有描邊,添加描邊將使文字變粗
stroke-width 文字描邊的寬度
fill 文字的填充色

  下面是一個使用了上面的一些屬性的例子:
  1. <svg xmlns="http://www.w3.org/2000/svg">
  2.     <text x="20"  y="40"
  3.           style="font-family: Arial;
  4.                  font-size  : 34;
  5.                  stroke     : #000000;
  6.                  fill       : #00ff00;
  7.                 "
  8.           >Styled SVG text</text>
  9. </svg>     
復制代碼

  上面的代碼的返回結果是:
13.jpg
  文字的長度

  你可以使用textLength屬性來設置文字的長度。文字的長度可以用來調整字符(characters)之間的距離來適應指定的長度。同時也會調整符號(glyphs)的寬度。使用lengthAdjust屬性你可以指定是否同時調整字符間距和符號的寬度。看下面的例子:
  1. <text x="5" y="20" textLength="140" lengthAdjust="spacing">
  2.   A long, long, long text.
  3. </text>
  4. <text x="5" y="40" textLength="200" lengthAdjust="spacing">
  5.     A long, long, long text.
  6. </text>
  7. <text x="5" y="60" textLength="200" lengthAdjust="spacingAndGlyphs">
  8.     A long, long, long text.
  9. </text>  
復制代碼

  上面的代碼的返回結果如下。注意最后兩串文字的間距和字符大小:
14.jpg
  本文版權屬于jQuery之家,轉載請注明出處:http://www.htmleaf.com/ziliaoku/ ... g/201506071990.html


【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

由于實際運行環境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發者能夠決定的,開發者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應用的豐富,HTML5 工程師們已經不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應用人性化的操作體驗,特別是原生應用與生俱來的豐富的手勢系統。HTML5 沒有提
你想要在自己網站上分享一個產品,或者是一個作品集,又或者僅僅只是一個靈感。在你發布到網上之前,你想讓它看起來有吸引力,專業,或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認!這是對我的極大鼓勵!我的
本文主要內容有:框架與組件、構建生態、開發技巧與調試、html、css與重構、native/hybrid/桌面開發、前端/H5優化、全棧/全端開發、研究實驗、數據分析與監控、其它軟技能、前端技術網
主站蜘蛛池模板: 丙烷/液氧/液氮气化器,丙烷/液氧/液氮汽化器-无锡舍勒能源科技有限公司 | 新型游乐设备,360大摆锤游乐设备「诚信厂家」-山东方鑫游乐设备 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 超声波破碎仪-均质乳化机(供应杭州,上海,北京,广州,深圳,成都等地)-上海沪析实业有限公司 | 方源木业官网-四川木门-全国木门专业品牌 | 防渗膜厂家|养殖防渗膜|水产养殖防渗膜-泰安佳路通工程材料有限公司 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 潜水搅拌机-双曲面搅拌机-潜水推进器|奥伯尔环保 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 医疗仪器模块 健康一体机 多参数监护仪 智慧医疗仪器方案定制 血氧监护 心电监护 -朗锐慧康 | 华东师范大学在职研究生招生网_在职研究生招生联展网 | 压接机|高精度压接机|手动压接机|昆明可耐特科技有限公司[官网] 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 福州甲醛检测-福建室内空气检测_环境检测_水质检测-福建中凯检测技术有限公司 | 水质传感器_水质监测站_雨量监测站_水文监测站-山东水境传感科技有限公司 | 专业广州网站建设,微信小程序开发,一物一码和NFC应用开发、物联网、外贸商城、定制系统和APP开发【致茂网络】 | 手板-手板模型-手板厂-手板加工-生产厂家,[东莞创域模型] | 隐形纱窗|防护纱窗|金刚网防盗纱窗|韦柏纱窗|上海青木装潢制品有限公司|纱窗国标起草单位 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 立式硫化罐-劳保用品硫化罐-厂家直销-山东鑫泰鑫硫化罐厂家 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 成都离婚律师|成都结婚律师|成都离婚财产分割律师|成都律师-成都离婚律师网 | 北京网站建设-企业网站建设-建站公司-做网站-北京良言多米网络公司 | 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 承插管件_不锈钢承插管件_锻钢高压管件-温州科正阀门管件有限公司 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 空气能暖气片,暖气片厂家,山东暖气片,临沂暖气片-临沂永超暖通设备有限公司 | 磁力链接搜索神器_BT磁力狗_CILIMAO磁力猫_高效磁力搜索引擎2024 | 河南砖机首页-全自动液压免烧砖机,小型砌块水泥砖机厂家[十年老厂] | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 骁龙云呼电销防封号系统-axb电销平台-外呼稳定『免费试用』 | 999范文网_优质范文下载写作帮手 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | COD分析仪|氨氮分析仪|总磷分析仪|总氮分析仪-圣湖Greatlake | 铸铁平台,大理石平台专业生产厂家_河北-北重机械 | 破碎机锤头_合金耐磨锤头_郑州宇耐机械工程技术有限公司 | 武汉不干胶印刷_标签设计印刷_不干胶标签印刷厂 - 武汉不干胶标签印刷厂家 | 桁架机器人_桁架机械手_上下料机械手_数控车床机械手-苏州清智科技装备制造有限公司 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 | 艺术生文化课培训|艺术生文化课辅导冲刺-济南启迪学校 | 整车VOC采样环境舱-甲醛VOC预处理舱-多舱法VOC检测环境仓-上海科绿特科技仪器有限公司 | 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 |