![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1P8pNqn7LojSdfginDf3cnkEYSsq0CNQx0WHQU2U3sd7wlnKYMCTEi7M12bVf6O1tN2kb2_MSujbdZlgVRwcZygEGlEcFQ56jpLOd4EulF0Le4Lfui34vq1j3poWOWP461s0GZ9Ygv2Z3VHkszYlnTUeuVG05CfhQ2fKN_Z-TilKUWoJeWjPLkgmN/s1600-rw/pencil-1486278_1280.jpg)
SVGを効果的に使った面白いサイトを見つけました。
https://d3js.org/
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpHezsFsCogwj3AA8EQpZDOKfmHcaJu0uOmeXDeHFwzID_7_0EF0J4rLnk3Ml0AY4wrTvw5RdYd6j0aPckED7tTWxeKkYFMJwfA_2c-U2t6qzz0huwn_Z2XICwlmoVlG3oyFMYC_cVR4YIAsa2Q_fqng2DdtXknuorP-063crJCGXvTEB_Ruw2f_zm/s1600-rw/13-1-%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-08-10-18.41.39.png)
ヘッダの大きなバナー内がsvgで記述されています。
マウスを画像の上にかぶせると、アニメーションされて面白い効果になっています。
こういう蜂の巣の模様を「ハニカム模様」っていうらしいですが、たくさんのメニューを一括で見せる時にとても良さそうです。
SVGの描画について
2日目のSVG勉強は、色々な形をタグを書いて表示してみましょう。
svgタグ
<!DOCTYPE html>
<html>
<head>
<title>svg</title>
<!-- <link rel="stylesheet" href="svg.css"> -->
<link rel="stylesheet" href="svg.css" />
</head>
<body>
<h1>SVG</h1>
<svg width="600" height="200" id="test_1" version="1.1" viewBox="0 0 1200 400">
<rect x="0" y="0" width="160" height="160" transform="translate(0 0)" stroke="blue" stroke-width="4" fill="skyblue"></rect>
<rect x="0" y="0" width="80" height="80" transform="translate(80 20) rotate(45)" fill="tomato" rx="8" ry="8"></rect>
<circle cx="0" cy="0" r="80" transform="translate(250 80)" fill="rgba(255,0,0,0.5)"></circle>
<ellipse cx="0" cy="0" rx="80" ry="40" transform="translate(400 80)" fill="rgba(0,0,255,0.5)"></ellipse>
<line x1="400" y1="0" x2="480" y2="100" stroke="lightgreen" stroke-width="8"></line>
<polyline points="50,375 150,375 150,325 250,325 250,375 350,375 350,250 450,250 450,375 550,375 550,175 650,175 650,375 750,375 750,100 850,100 850,375 950,375 950,25 1050,25 1050,375 1150,375" stroke="blue" stroke-width="8" fill="none"></polyline>
<polygon points="350,75 379,161 469,161 397,215 423,301 350,250 277,301 303,215 231,161 321,161" transform="rotate(5)" stroke="brown" stroke-width="4" fill="yellow"></polygon>
</svg>
<script src="svg.js"></script>
</body>
</html>
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOHHE-28LnTQ8BLZYa5eSLRUPhs1e0X_t_M1OAoaNgjIG38i7YVIIDHfv6Y_qjSaVtvjW-mu_oBk0t0aduzhDVXWhd7fPK34gP-5sPmzNygtVZS43d3R5NO142vfm4E219--tR16Wa1BICbJYx65ZGxviuhzS52mdOCjKrxNdJVaKdOXgtT6ELwPy3/s1600-rw/13-2-%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-08-10-19.11.34.png)
width , height : svg全体のサイズ
viewBox : 全体サイズ内の表示するサイズ(viewBoxの方が大きい値であれば、縮小表示されます)
version : 記載しなくても大丈夫
上記は今回の描画する全てのシェイプを一括で表示しています。
個別の表示は下記を参考にしてください。
rect(箱)
<!DOCTYPE html>
<html>
<head>
<title>svg</title>
</head>
<body>
<h1>SVG - rect</h1>
<svg width="200" height="200" id="test_1" version="1.1">
<rect x="4" y="4" width="160" height="160" stroke="blue" stroke-width="4" fill="skyblue"></rect>
<rect x="0" y="0" width="80" height="80" transform="translate(84 24) rotate(45)" fill="tomato" rx="8" ry="8"></rect>
</svg>
</body>
</html>
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7hy2Er3UedeZRENkln9Dpy0egNKL969a7AHOkAKO0_VAwbhE_KdqciZQHPnPH9Y5nUxA6_qIvepPqdML3ICJT-7oEU3ZBUKbTwXCmUMqgmFfU--8sLqnb2D6Sl29Q3V26TzzHefpY3TLSzCAbou4g0g6_75AE1a7hFN2orNbFt_DaDO0_1ub9pShK/s1600-rw/13-3-%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-08-10-18.49.20.png)
属性情報
x , y : 座標
width , height : 縦横サイズ
stroke , stroke-width : 枠線の色と枠線の幅
fill : 塗りつぶし色
transform : rotate(回転値)、translate(移動値)
circle(円)
<!DOCTYPE html>
<html>
<head>
<title>svg</title>
</head>
<body>
<h1>SVG</h1>
<svg width="200" height="200" id="test_1" version="1.1">
<circle cx="84" cy="84" r="80" fill="rgba(255,0,0,0.5)" stroke="blue" stroke-width="4"></circle>
</svg>
</body>
</html>
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimBU18dQb_P3i7-cPE8oS_alitIuSjbz3W1eaF6ZTUwe7QQLGaxujB0BBjHygqyP8fgK2Bg28V9tyeVsPTFHcINI16TZmGZ7l8BDEw5QpHz0Q4-j_DQcH0hBZEWNs1yTOiOBz9Q8PFhUTgjyq1rkf8v45JGP2ESUeZ5AoZic6D-jNyJ7VMVcfFgL5g/s1600-rw/13-4-%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-08-10-18.55.12.png)
cx , cy : 座標
r : 半径
fill : 塗りつぶし色
stroke , stroke-width : 枠線の色と枠線の幅
transform : translate(移動値)
ellipse(楕円)
<!DOCTYPE html>
<html>
<head>
<title>svg</title>
</head>
<body>
<h1>SVG</h1>
<svg width="200" height="200" id="test_1" version="1.1">
<ellipse cx="84" cy="80" rx="80" ry="40" fill="rgba(0,0,255,0.5)" stroke="rgba(255,0,0,0.5)" stroke-width="4"></ellipse>
</svg>
</body>
</html>
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8HzBV1EJbU9j9KpE5m-JgXWmMsg4OZfLZQrnbmAiguVJ2GmHSLrtgAttHKeN-Uf58So3WeeNgMIiyRaSwjQCh0eL8Tn_V1-UEkyYCQBBE4pmHJvqr9xfkz4aHKWqOrJ_v5XDM3NM0PuMQGttIcChjnn-ItHcKQOhE815sXqszBvyr5s-s3ckyGgN6/s1600-rw/13-5-%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-08-10-18.59.35.png)
cx , cy : 座標
rx , ry : 縦横サイズ
fill : 塗りつぶし色
stroke , stroke-width : 枠線の色と枠線の幅
transform : rotate(回転値)、translate(移動値)
line(線)
<!DOCTYPE html>
<html>
<head>
<title>svg</title>
<!-- <link rel="stylesheet" href="svg.css"> -->
<link rel="stylesheet" href="svg.css" />
</head>
<body>
<h1>SVG</h1>
<svg width="200" height="200" id="test_1" version="1.1">
<line x1="10" y1="10" x2="190" y2="190" stroke="lightgreen" stroke-width="8"></line>
</svg>
<script src="svg.js"></script>
</body>
</html>
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi518Ap4XgSnlnw_IZfN3rpt61MzsvhM0QvdDw-AchVMDfx_l_vZOuQ-ema3N6-JgqyZWZWos3PBqVkYhrtJO4vo9SUQDMLMgH1zIhDoloyKNwV05DOJj4hyS75a5OqQm9FSsSKFzcU_hGUOULIKDxEIm6MmSDmrmgZnfQCepq8gfYhsbknWOwFrHGo/s1600-rw/13-6-%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-08-10-19.02.47.png)
x1 , y1 : 開始座標
x2 , y2 : 終点座標
stroke , stroke-width : 枠線の色と枠線の幅
polyline(折れ線)
<!DOCTYPE html>
<html>
<head>
<title>svg</title>
<!-- <link rel="stylesheet" href="svg.css"> -->
<link rel="stylesheet" href="svg.css" />
</head>
<body>
<h1>SVG</h1>
<svg width="600" height="200" id="test_1" version="1.1" viewBox="0 0 1200 400">
<polyline points="50,375 150,375 150,325 250,325 250,375 350,375 350,250 450,250 450,375 550,375 550,175 650,175 650,375 750,375 750,100 850,100 850,375 950,375 950,25 1050,25 1050,375 1150,375" stroke="blue" stroke-width="8" fill="none"></polyline>
</svg>
<script src="svg.js"></script>
</body>
</html>
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuFeg2dKlpBLTPUkac7FjsAGspMHUal8zkhjUECbiJejwM3RlSZbg7JIB62ZNaSFm79QFKbQ-pHV4e5fhdKCqE7wYnKXMSF3tNJX4DclayvfAG0J7ajNcOTTR1AQI2K1st-Z2KbjIrtXLmJuBWj8HfyaxPhq1F8s6GbU1mcagaY-Atx0e6_vNWdlZA/s1600-rw/13-7-%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-08-10-19.05.07.png)
points : 座標(x,y)を半角スペースで複数登録
fill : 塗りつぶし色(線を閉じていなくても自動的に塗りつぶされます)
stroke , stroke-width : 枠線の色と枠線の幅
ポリゴン(多角面)
<!DOCTYPE html>
<html>
<head>
<title>svg</title>
<!-- <link rel="stylesheet" href="svg.css"> -->
<link rel="stylesheet" href="svg.css" />
</head>
<body>
<h1>SVG</h1>
<svg width="600" height="200" id="test_1" version="1.1" viewBox="0 0 1200 400">
<polygon points="350,75 379,161 469,161 397,215 423,301 350,250 277,301 303,215 231,161 321,161" transform="rotate(5)" stroke="brown" stroke-width="4" fill="yellow"></polygon>
</svg>
<script src="svg.js"></script>
</body>
</html>
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHlprflZ4Q8gkQk4skSXNE9TDfv1YAYl01M8pdbat8S0GPojTtzVC7y8ss8OGjeVdwjb6ckKd3Gd3Bi5xSnRqkdUaaeoNKMdxRmqkbBf0DF3L8u-cwOZhzXKot_JMTIC8g7sYn8c74w-VJJm7l7jsFjg715wW7thBidruTL0WrtiZduNxl_2YOK6OB/s1600-rw/13-8-%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-08-10-19.08.28.png)
points : 座標(x,y)を半角スペースで複数登録(開始点と終了点が自動的に閉じられます)
fill : 塗りつぶし色
stroke , stroke-width : 枠線の色と枠線の幅
次回予告
今回は、一通りのシェイプと呼ばれるオブジェクトを描いてみましたが、次回はこれをまとめたjavascriptを書いてもっと簡単にsvg設置できるようにしてみます。
0 件のコメント:
コメントを投稿