CSS
 Computer >> コンピューター >  >> プログラミング >> CSS

CSSのborder-imageプロパティ完全ガイド|画像ボーダーの使い方とブラウザごとの注意点

CSSのborder-imageプロパティは、初めて触れるときには少し理解しづらいプロパティの一つです。この記事では、border-imageプロパティとは何か、その基本的な使い方、そしてブラウザごとの特有の挙動について詳しく解説します。

borderプロパティのおさらい

まず前提として、CSSの学習を進めていれば「border」プロパティはすでにご存じでしょう。おさらいとして、borderは要素の周囲に枠線を指定するためのショートハンド(一括指定)プロパティで、次のような構造を持っています。

border: 
2px        /* 幅 */
dashed     /* スタイル */
green;     /* 色 */

border-imageプロパティとは

borderプロパティと同様に、border-imageもショートハンドプロパティです。指定した画像ソースを使って、要素の周囲にボーダーを構築します。構造は以下の通りです。

border-image: 
url("https://www.placekitten.com/501/700")  /* ソース */
25% /                                       /* スライス */
70px /                                      /* 幅 */
2px                                         /* アウトセット */
stretch;                                    /* リピート */

border-imageは、以下の5つの個別プロパティ(ロングハンド)で構成されています。それぞれ詳しく見ていきましょう。

1. border-image-source

border-image-sourceは、border-imageの「ソース」部分に対応する個別プロパティです。相対パスまたは実際の画像URLを指定するurl()のほか、グラデーションを指定することもできます。

2. border-image-slice

border-image-sliceは、「スライス」部分に対応する個別プロパティです。画像を9つの領域に分割します。

CSSのborder-imageプロパティ完全ガイド|画像ボーダーの使い方とブラウザごとの注意点

デフォルトでは中央部分は取り除かれ、残りの8つの領域がプロパティを適用した要素を囲むように配置されます。border-image-sliceには最大4つの数値(%)を指定でき、それぞれの切り分け位置を決められます。また、中央部分も表示したい場合はfillキーワードを使用します。

3. border-image-width

border-widthプロパティと同様に、border-image-widthはボーダー画像の幅を指定します。パーセントやrem/em/pxが使え、最大4つの値を指定できるため、ボーダーの各辺に異なる幅を設定することも可能です。

4. border-image-outset

border-image-outsetは、画像ボーダーを要素のボーダーボックスからどれだけ外側に離して表示するかを指定します。ボーダーボックスとはボックスモデルの一部で、paddingとmarginの間にある領域のことです。値が大きいほどボーダーボックスから遠ざかります。こちらも最大4つの値を指定でき、必要に応じて各辺に個別の値を設定できます。

5. border-image-repeat

border-image-repeatは、画像の各エッジ(四隅を除く各辺)の表示方法を指定します。最大2つの値を取ります。値が1つの場合はすべてのエッジに適用され、2つ指定した場合は1つ目が上下、2つ目が左右に適用されます。指定できる値はstretch(引き伸ばし)、repeat(繰り返し)、round(繰り返して余白を調整)、space(間隔を空けて繰り返し)の4種類です。

ブラウザごとの注意点

個別のロングハンドプロパティを単独で使用してborder-imageを作成できるのは、FirefoxとSafariです。一方Chromeでは、ショートハンド形式でのみ使用でき、さらにborder-styleプロパティ(solid、dashedなど)と併用する必要があります。Chromeでborder-imageが正しく表示されない場合は、この点を確認してみてください。

<!DOCTYPE html>
<html lang="ja">
   <head>
       <meta charset="UTF-8" />
       <meta name="viewport" content="width=device-width, initial-scale=1.0" />
       <title>Border Image</title>
       <style>
           * {
               box-sizing: border-box;
           }
 
           .flex {
               display: flex;
               align-items: center;
               justify-content: center;
               text-align: center;
               width: 500px;
               height: 300px;
               margin: 20px;
           }
           .border-image-box {
               /* 以下の書き方はFirefoxとSafariでのみ動作 */
               border-image-source: url(https://placekitten.com/900/1000);
               border-image-slice: 25%;
               border-image-width: 70px;
               border-image-outset: 2px;
               border-image-repeat: round;
               padding: 80px;
               /* この書き方はChromeでは動作しない */
           }
           .border-image-shorthand {
               border-style: solid;
               border-image:
                   url(https://placekitten.com/900/1000)
                   25% /
                   70px /
                   2px
                   round;
               padding: 80px;
/* 上記の書き方はすべてのブラウザで動作します。FirefoxとSafariではborder-styleなしでborder-imageプロパティを使用できますが、Chromeでは画像を表示するために必ずborder-styleプロパティが必要です */
           }
       </style>
   </head>
   <body>
       <div class="border-image-box flex">
           これは個別のborder-imageプロパティを使ってスタイルしたボックスです
       </div>
       <div class="border-image-shorthand flex">
           これはborder-imageショートハンドを使ってスタイルしたボックスです
       </div>
   </body>
</html>

まとめ

この記事では、border-imageプロパティを使って要素の周囲にCSS画像ボーダーを作成する方法を学びました。border-imageは、border-image-source、border-image-slice、border-image-width、border-image-outset、border-image-repeatという5つの個別プロパティから成るショートハンドプロパティです。すべてのブラウザで互換性を保つには、border-imageの値を指定する前にborder-style: solidを設定しておきましょう。

  1. CSSボーダー(枠線)の使い方を徹底解説!初心者向けステップバイステップチュートリアル

    CSSのborderプロパティは、HTML要素に枠線(ボーダー)を設定するために使用されます。このプロパティは、border-width(幅)、border-color(色)、border-style(スタイル)という3つのサブプロパティのショートハンド(省略記法)です。Webページ上の要素に枠線を追加することは、Webデザインにおいて重要な要素の一つです。枠線を活用することでページ内のコンテンツを視覚的に区切ることができ、訪問者が情報を理解しやすくなります。本記事では、CSSのborderプロパティとそのサブプロパティを使って、HTML要素に枠線をデザインする方法を詳しく解説します。この記事

  2. CSSのborderショートハンド(一括指定)プロパティの使い方

    borderプロパティは、要素の枠線(ボーダー)の見た目を定義するために使用されるプロパティです。border-width(線の太さ)、border-style(線の種類)、border-color(線の色)という3つの個別プロパティの値を、1つの宣言でまとめて指定できる「ショートハンド(一括指定)プロパティ」です。構文CSSのborderプロパティは、次のように記述します。セレクタ {     border: /*値*/ }値は「太さ スタイル 色」の順に半角スペースで区切って指定するのが一般的です。例えば「2px solid orange」と指定すれ