svg標(biāo)記marker旬渠,給端點加上箭頭,或者小圓點端壳,菱形等標(biāo)記應(yīng)該怎么做呢告丢?

如果我想給一條路徑的兩個端點加上箭頭(三角形),或者小圓點损谦,菱形等標(biāo)記應(yīng)該怎么做呢岖免?
在線DOME預(yù)覽
標(biāo)記是markerSVG中一個比較重要的概念岳颇,它能貼附于<path><line>颅湘、<polyline>话侧、<polygon>元素上。最常用的應(yīng)用就是給線段添加箭頭闯参。標(biāo)記寫在 defs中可用于定義可重復(fù)利用的圖形元素瞻鹏。
??標(biāo)記 marker的各屬性和意義:
????viewBox: 坐標(biāo)系的區(qū)域
????refX,refY: 在viewBox內(nèi)的基準(zhǔn)點,繪制時此點在要貼附的直線端點上
???? markerUnits: 標(biāo)記大小的基準(zhǔn)鹿寨,有兩個值新博,即strokeWidth(線的寬度)和uesrSpaceOnUse(線前端的大小)
????markerWidth,markerHeight:標(biāo)記的大小。
????orient: 繪制的方向脚草,可設(shè)為auto(自動確認方向)和角度值
???? id: 標(biāo)識的id號
??設(shè)置位置的屬性如下:
????marker-start: 路徑的起點處
????marker-mid: 路徑的中間端點處(直線只有起點和終點赫悄,所以對直線無用)
????marker-end: 路徑的終點處
大家請看下面的例子:

<html>
<head>
  
</head>
<body>
  <svg>
  <defs>
    <marker id="markerCircle" markerWidth="8" markerHeight="8" refX="5" refY="5">
        <circle cx="5" cy="5" r="3" style="stroke: none; fill:black;"/>
    </marker>

    <marker id="markerArrow" markerWidth="13" markerHeight="13" refX="2" refY="6"
           orient="auto">
        <path d="M2,2 L2,11 L10,6 L2,2" style="fill: black;" />
    </marker>
</defs>

<path d="M100,10 L150,10 L150,60"
      style="stroke: green; stroke-width: 1px; fill: none;
                   marker-start: url(#markerCircle);
                   marker-end: url(#markerArrow);
                 "

        />
  </svg>
</body>
</html>

在<defs></defs> 中需要路標(biāo)的尺寸和形狀定義好,例如馏慨,下面的代碼是定義一個圓形路標(biāo):

 <marker id="markerCircle" markerWidth="8" markerHeight="8" refX="5" refY="5">
        <circle cx="5" cy="5" r="3" style="stroke: none; fill:black;"/>
    </marker>

<marker>代表路標(biāo)埂淮,id為改路標(biāo)的標(biāo)識,

markerWidth和markerHeight為路標(biāo)所在視窗坐標(biāo)系的橫軸與縱軸最大的刻度值熏纯。

視窗坐標(biāo)系的原點在屏幕左上角同诫,橫軸正方向向右粤策,縱軸正方向向下樟澜。

在SVG中需要在一個矩形視窗坐標(biāo)系(viewport)中畫路標(biāo),視窗坐標(biāo)系的原點在屏幕左上角叮盘。

refX和refY定義將視窗中的哪個點作為錨點(在上面的例子以圓心為錨點)來掛在線段的端點上秩贰,如下圖

下面的代碼是畫一個箭頭作為錨點

<marker id="markerArrow" markerWidth="13" markerHeight="13" refX="2" refY="6"
           orient="auto">
        <path d="M2,2 L2,11 L10,6 L2,2" style="fill: black;" />
    </marker>

示意圖如下


在上面的代碼中orient="auto"是指箭頭方向隨著路徑的方向而自動變化


orient的值也可以用戶自己定義


在<defs>里定義好路標(biāo)后,我們就可以在路徑的起點和終點把路標(biāo)加上柔吼,代碼如下:

<path d="M100,10 L150,10 L150,60"
      style="stroke: green; stroke-width: 1px; fill: none;
                   marker-start: url(#markerCircle);
                   marker-end: url(#markerArrow);
                 "

        />

在內(nèi)聯(lián)樣式表style中毒费,

marker-start指定路徑的起點所采用的路標(biāo),url(#markerCircle)對應(yīng)著前面那個id=markerCircle的路標(biāo)

marker-end指定路徑的終點所采用的路標(biāo)愈魏,url(#markerArrow)對應(yīng)著前面那個id=markerArrow的路標(biāo)


除了可以通過marker-start來指定路徑起點的路標(biāo)樣式觅玻,marker-end來指定路徑終點的路標(biāo)樣式外,還可以

通過marker-mid屬性來指定路徑中間所有節(jié)點的路標(biāo)樣式培漏。例子如下:

<SVG>
  <defs>
  <marker id="markerSquare" markerWidth="7" markerHeight="7" refX="4" refY="4"
          orient="auto">
      <rect x="1" y="1" width="5" height="5" style="stroke: none; fill:black;"/>
  </marker>

  <marker id="markerArrow" markerWidth="13" markerHeight="13" refX="2" refY="7"
          orient="auto">
      <path d="M2,2 L2,13 L8,7 L2,2" style="fill: black;" />
  </marker>
</defs>

<path d="M100,20 l50,0 l0,50 l50,0"
      style="stroke: blue; stroke-width: 1px; fill: none;
                   marker-start: url(#markerSquare);
                   marker-mid: url(#markerSquare);
                   marker-end: url(#markerArrow);

                 "
        />
  </SVG>

在這段代碼中首先在<defs>元素里面畫出兩個路標(biāo)溪厘,一個是正方形(markerSquare),另一個是箭頭(markerArrow)

然后在path中marker-start指定開始路標(biāo)為矩形牌柄,marker-mid指定中間路標(biāo)為矩形畸悬,marker-end指定終點路標(biāo)為箭頭。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末珊佣,一起剝皮案震驚了整個濱河市蹋宦,隨后出現(xiàn)的幾起案子披粟,更是在濱河造成了極大的恐慌,老刑警劉巖冷冗,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件守屉,死亡現(xiàn)場離奇詭異,居然都是意外死亡蒿辙,警方通過查閱死者的電腦和手機胸梆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來须板,“玉大人碰镜,你說我怎么就攤上這事∠肮澹” “怎么了绪颖?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長甜奄。 經(jīng)常有香客問我柠横,道長,這世上最難降的妖魔是什么课兄? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任牍氛,我火速辦了婚禮,結(jié)果婚禮上烟阐,老公的妹妹穿的比我還像新娘搬俊。我一直安慰自己,他們只是感情好蜒茄,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布唉擂。 她就那樣靜靜地躺著,像睡著了一般檀葛。 火紅的嫁衣襯著肌膚如雪玩祟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天屿聋,我揣著相機與錄音空扎,去河邊找鬼。 笑死润讥,一個胖子當(dāng)著我的面吹牛转锈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播象对,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼黑忱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起甫煞,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤菇曲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抚吠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體常潮,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年楷力,在試婚紗的時候發(fā)現(xiàn)自己被綠了喊式。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡萧朝,死狀恐怖岔留,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情检柬,我是刑警寧澤献联,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站何址,受9級特大地震影響里逆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜用爪,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一原押、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧偎血,春花似錦诸衔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宠能。三九已至亚隙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間违崇,已是汗流浹背阿弃。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留羞延,地道東北人渣淳。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像伴箩,于是被迫代替她去往敵國和親入愧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • @(HTML5)[canvas與SVG] [TOC] 十一 、SVG HTML體系中棺蛛,最常用的繪制矢量圖的技術(shù)是S...
    踏浪free閱讀 4,568評論 0 2
  • path命令 SVG中所有基本形狀都是path的簡寫形式怔蚌,但是建議使用簡寫形式,因為這樣可以使SVG文檔更可讀旁赊。 ...
    kingller閱讀 5,224評論 0 0
  • SVG 可伸縮矢量圖形(Scalable Vector Graphics) 使用 XML 格式定義圖像 是w3c的...
    小樓me閱讀 851評論 0 1
  • 接著上篇文章繼續(xù)往后講解其他知識點桦踊,感謝讀者們愿意花費您們寶貴時間閱讀! 使用濾鏡filter(也是設(shè)置陰影) <...
    lilyping閱讀 813評論 0 0
  • Elements Element是封裝SVG.js中所有元素(或節(jié)點)的基本原型终畅。SVG.Shape添加了額外的細...
    光速小麋鹿閱讀 3,320評論 0 1