ホームページ >ウェブフロントエンド >H5 チュートリアル >SVG (Scalable Vector Graphics) ビューボックス属性 viewbox およびpreserveAspectRatio
幅と高さの 2 つの基本的な幅と高さの設定属性
に加えて、SVG にはさらに 2 つの高度な属性もあります
viewbox とpreserveAspectRatio
viewbox は svg タグの属性です
以下の例を参照してください
<svg width=300 height=300> <rect x=10 y=10 width=10 height=10></rect></svg>rreee
SVG 上に非常に小さな赤い四角形を描きました
次に、ビューボックス属性を追加しましょう
rect { fill: red;}
この時点で、
先ほどは非常にコンパクトだったグラフィック
が非常に大きくなっていることがわかりました。
ここがviewboxのすごいところviewbox="0 0 30 30"
0 0は原点(左上)の座標を指定します
そして30 30はsvgの幅と高さを指定します
svgの座標系をカスタマイズするのと同じです
Master Zhang Xinxuこれに対する答えがあります。より鮮明な説明:
SVG はモニター画面のようなもので、viewBox はスクリーンショット ツールによって選択されたフレームです。
最後のプレゼンテーションは、フレーム内にあるスクリーンショットの内容を再度モニターに全画面表示します!
(幅と高さを指定せずにビューボックスのみを指定した場合、SVG は画面全体を占めます)
上記の SVG の幅と高さは 300×300 なので、30 にスケールしました。 × 30
それを理解するのは簡単です
しかし、比例して拡大縮小されなかった場合、どのように動作するでしょうか?
「フルスクリーンモード」の画像は以下ビューポートと呼ばれます(幅と高さのみ指定)
「スクリーンショットモード」の画像はビューボックスと呼ばれます(幅、高さ、ビューボックスが指定されます)
<svg width=300 height=300 viewbox="0 0 30 30"> <rect x=10 y=10 width=10 height=10></rect></svg>
2つのモードを書きます以下は良い比較になります
これはページ上でどのように表示されるかです
私が追加した緑色のボックスは、ビューポートにキャプチャされたビューボックスの位置を表します
拡大
その位置を調整したい場合
にはpreserveAspectRatio属性の使用が必要です
preserveAspectRatio属性値は2つの部分で構成されます
最初の部分:
属性値 | の意味 |
---|---|
xMin | ビューポートとビューボックス 左揃え |
xMid | ビューポートとビューボックス YMid |
YMax | |
パート 2: | |
属性値 | 意味 |
meet
ビューポートを埋めるために小さい比率の方向にズームしながらアスペクト比を維持します | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
这个属性值得默认值大概就是 <svg width=300 height=300> <rect x=10 y=10 width=10 height=10></rect></svg> <svg width=300 height=300> <rect x=10 y=10 width=10 height=10></rect></svg> 第二个属性值 <svg width=300 height=300> <rect x=10 y=10 width=10 height=10></rect></svg> 这里我把x设置为xMin否则就看不到小红方块了 显示的结果就是我vieport中用紫色框标记的部分 ==主页传送门== SVG除了width和height这两个基本的宽高设置属性 SVG视区盒viewbox是svg标签上的属性 <svg width=300 height=300> <rect x=10 y=10 width=10 height=10></rect></svg> rect { fill: red;} 在svg上我们画了一个非常小的红色矩形 <svg width=300 height=300 viewbox="0 0 30 30"> <rect x=10 y=10 width=10 height=10></rect></svg> 这时我们发现
(如果只指定viewbox不指定width和height,那么svg就会占满整个屏幕) viewbox与viewport由于我们上面svg的宽高为300×300,被我们等比缩放为了30×30 下面把“全屏模式”的图片称为viewport(只指定width、height) <svg width=300 height=300> <rect x=10 y=10 width=10 height=10></rect></svg> 下面我把两种模式写在一块这样可以很好的对比 绿色的框是我添加的表示viewport中截取的viewbox位置 preserveAspectRatiopreserveAspectRatio属性值由两部分组成 第一部分:
第二部分:
这个属性值得默认值大概就是 <svg width=300 height=300> <rect x=10 y=10 width=10 height=10></rect></svg> <svg width=300 height=300> <rect x=10 y=10 width=10 height=10></rect></svg> 第二个属性值 <svg width=300 height=300> <rect x=10 y=10 width=10 height=10></rect></svg> 这里我把x设置为xMin否则就看不到小红方块了 显示的结果就是我vieport中用紫色框标记的部分 以上就是SVG(可缩放矢量图形)视区盒属性viewbox与preserveAspectRatio的内容,更多相关内容请关注PHP中文网(www.php.cn)! |