項 目 | 説 明 |
---|---|
記述形式 | セレクタ {border-image: 値 } |
値 の形式 | border-image-source border-image-slice [ / border-image-width [ / border-image-width ] / border-image-outset ] border-image-repeat |
初 期 値 | 各プロパティの初期値 |
対応ブラウザー | C3+ / e11+ / n?+ / Fx4+ / Op10+ / Ch9+ / Sa5+ |
適用可能な要素 | すべての要素 (border-collapse プロパティの値に collapse が指定された table内要素を除く) |
継 承 | しない |
border-image プロパティ は,画像を使用した境界についての一括指定 をします。
指定できる値の形式(プロパティ)は,つぎのとおりです。
値 | 説 明 |
---|---|
border-image-source | 境界画像ファイルの URL を指定します。 |
border-image-slice | 境界画像を分割して境界での 表示位置 を割り当てます。 |
border-image-width | 境界画像の 幅 を指定します。 |
border-image-outset | 境界画像の 境界ボックス外への 表示範囲の拡大 を指定します。 |
border-image-repeat | 境界画像の 繰り返し方法 を指定します。 |
なお,border-image プロパティ では,境界画像の幅を指定する border-image-width は, 2つまでの値が指定可能です。 これは,境界の幅(border-width)に対しての倍数 で指定し,
また,border-image-outset を指定するためには, 少なくとも1つ以上の border-image-width の指定が必要です。
境界に画像を表示するためには,
なお,border-image-slice では,画像の上端,右端,下端,左端からのオフセットを指定して, 画像を水平,垂直,それぞれ2本ずつの直線で9つの部分(左上,上中央,右上,右中央,右下,下中央,左下,左中央,中央)に分割します。 境界でのこれら9つの部分の表示の位置や方法は,次の表に示すとおりです。
位 置 | 繰り返し | 配置の基準位置 |
---|---|---|
左 上 | 対象外 | 境界画像領域 の左上端 |
右 上 | 境界画像領域 の右上端 | |
右 下 | 境界画像領域 の右下端 | |
左 下 | 境界画像領域 の左下端 | |
上中央 | 対象 | 境界画像領域 の上端 |
右中央 | 境界画像領域 の右端 | |
下中央 | 境界画像領域 の下端 | |
左中央 | 境界画像領域 の左端 | |
中 央 | 対象外 | 中央 (fill を指定しない限り非表示) |
border-image-outset を指定ない場合には, 上の表の配置基準の 境界画像領域(border image area)は 境界ボックス と一致します。 border-image-outset の指定によって,その外側まで含めたより広い領域(親要素や隣接要素の領域も含む) とできて, その範囲まで画像による境界を表示することができます。
HTMLソース | |
---|---|
CSS <head> ~ </head> |
<style type="text/css" media="screen, handheld, print, tv" > <!-- div.sample1 { width: 320px; height: 140px; border: solid 31px transparent; border-image: url(star_border.png) 31 31 round; -moz-border-image: url(star_border.png) 31 31 round; -o-border-image: url(star_border.png) 31 31 round; -webkit-border-image: url(star_border.png) 31 31 round; } --> </style> |
HTML <body> ~ </body> |
<div class="sample1">
これが class="sample1" の部分です。
</div> |
ブラウザー 表示例 (Microsoft IE = Internet Explorer 10 以前では正常に表示できません) |
---|
これが class="sample1" の部分です。
|
なお,この例で境界画像として用いたのは,
上の例 border-image プロパティ では,Microsoft IE = Internet Explorer では,現状では境界画像を表示することはできません。 ここまで「折角一生懸命に読んだのに」と嘆く人もいるかもしれません。 そこで,背景画像 を利用して同様の表示を得る方法を紹介しておきます。 もちろん,この方法の場合は IE でも問題なく表示できます。
HTMLソース | |
---|---|
CSS <head> ~ </head> |
<style type="text/css" media="screen, handheld, print, tv" > <!-- div.sample2 { width: 320px; height: 140px; border: solid 31px transparent; background: url(star_border_b.png) left top; background-size: contain; background-origin: border-box; } --> </style> |
HTML <body> ~ </body> |
<div class="sample2">
これが class="sample2" の部分です。
</div> |
ブラウザー 表示例 |
---|
これが class="sample2" の部分です。
|
そこで,作り方ですが,まずは,境界の画像を表示する部分も含めた要素のサイズ(この場合は 320px × 140px) の次のような画像ファイルを作成します。
言うまでもないことですが,この画像の周囲の部分が境界画像の代替部分ですので, この幅の値が 代替境界画像の幅 = 境界の幅 となるように背景画像を作成します。 この例では,上下左右とも 31px の幅です。
もうひとつのポイントは,背景画像を表示する基準位置となる background-origin プロパティの値の初期値は padding-box ですので,これを boder-box に変更して,作成した画像の周辺部分がちょうど 透明(transparent)な境界線 の背後に来るようにすることです。
なお、この方法では,要素のサイズが固定していない場合(とくに縦横比が変わる場合)ではあまりうまく行きません。 また, 対象の要素毎に背景画像ファイルを作成する必要があります。 (私の場合,この例では,最初 border-image プロパティ を使って表示して,それを取り込みました。) ですから, border-image プロパティ の代替というよりは, 境界画像を表示できないブラウザーに対する対応策と考えた方がよいかもしれません。