関連プロパティ

ボーダーに関わるプロパティは、以下の各プロパティです。

  • 1.border : 一括指定プロパティ
    • border-top
    • border-right
    • border-bottom
    • border-left
    • 2.border-style : 線種を設定する一括指定プロパティ
      • border-top-style
      • border-right-style
      • border-bottom-style
      • border-left-style
    • 3.border-width : 幅を設定する一括指定プロパティ
      • border-top-width
      • border-right-width
      • border-bottom-width
      • border-left-width
    • 4.border-color : 色を設定する一括指定プロパティ
      • border-top-color
      • border-right-color
      • border-bottom-color
      • border-left-color
  • 5.border-radius : 要素の境界線の外側の角を丸める設定をする一括指定プロパティ
    • border-top-left-radius
    • border-top-right-radius
    • border-bottom-right-radius
    • border-bottom-left-radius
  • 6.border-image : 要素の通常の境界に置き換える画像の設定をする一括指定プロパティ
    • 7.border-image-source : 要素の境界画像に使われる元の画像を設定する個別指定プロパティ
    • 8.border-image-slice : 要素の境界画像に使われる元の画像を分割する設定をする個別指定プロパティ
    • 9.border-image-width : 要素の境界画像の幅を設定をする個別指定プロパティ
    • 10.border-image-outset : 要素の境界画像が境界ボックスからはみ出す幅を設定をする個別指定プロパティ
    • 11.border-image-repeat : 要素の境界画像に使われる元画像の辺の領域を、どうやって要素の境界画像に合うように合わせるかを定義をする個別指定プロパティ

ボーダーとは

境界線は、
要素のパディング領域の
外側にある領域(線)です。

マージン
ボーダー
パディング
コンテンツ領域

ボーダー(境界線)は、ボーダー境界に囲まれた領域で、パディング領域に要素の境界線を含めて拡張したものです。


境界線は領域を占有する

  1. .cdvSample031{ height: 5em; }
  2. .cdvSample031 > div{ border: solid 1px; }
  3. .cdvSample031 > div:first-child:focus,
  4. .cdvSample031 > div:first-child:hover{ border: solid 1em; }
  1. <div class="cdvSample031">
  2. <div></div>
  3. <div></div>
  4. </div>

境界線は領域を占有します。要素の配置にも影響があります。


境界線は閉じていない場合がある

  1. <div>
  2. <p>境界線は、<span style=" border: solid; ">閉じていない<br>場合がある。</span></p>
  3. </div>

境界線は、閉じていない
場合がある。

  1. <div>
  2. <p>輪郭線は、<span style=" outline: solid; ">閉じていない<br>場合はない。</span></p>
  3. </div>

輪郭線は、閉じていない
場合はない。


境界線は含まれるか

box-sizing

  1. .cdvSample051{ height: 3em; border: solid 1em; }
  1. <div class="cdvSample051">
  2. <div style="box-sizing: content-box;"></div></div>

box-sizing プロパティを content-box と指定しました。box-sizing プロパティは非継承プロパティであり、初期値は content-box です。指定された幅と高さは、要素のコンテンツボックスを決定します。つまりパディングまたは境界線は、この指定された幅と高さの外側に配置されます。

  1. .cdvSample051{ height: 3em; border: solid 1em; }
  1. <div class="cdvSample051">
  2. <div style="box-sizing: border-box;"></div></div>

box-sizing プロパティを border-box と指定しました。指定された幅と高さは、要素の境界ボックスを決定します。つまりパディングまたは境界線は、この指定された幅と高さの内側に配置されます。

background-clip

  1. .cdvSample052{ background-color: #999999; height: 5em; border: dashed 0.5em; }
  1. <div class="cdvSample052">
  2. <div style="background-clip: border-box;"></div></div>

background-clip プロパティを border-box と指定しました。background-clip プロパティは非継承プロパティであり、初期値は border-box です。背景の範囲を境界の外側の辺までにします。

  1. .cdvSample052{ background-color: #999999; height: 5em; border: dashed 0.5em; }
  1. <div class="cdvSample052">
  2. <div style="background-clip: border-box;"></div></div>

background-clip プロパティを padding-box と指定しました。背景の範囲をパティングの外側の辺までにします。


計算値 (継承)

border-style とborder-width

border-stylenone が採用された場合、border-width の計算値は 0 になります。

  1. cdvSample061 > div { padding: 1em; border-width: medium; }
  2. cdvSample061 > div > div { border-style: solid; border-width: inherit; }
  1. <div class="cdvSample061">
  2. <div style=" border-style: dashed; "><div></div></div></div>

例示の雛型です。親要素のstyle属性を書き換えて例示しています。
パティングは、親子の余白として指定しています。文字(コンテンツ)は、前景色(文字の色)と文字サイズの確認の為に記述しています。親要素と子要素の境界線の記述は、継承の確認の為に記述しています。

  1. border-style: none;

親要素に border-style: none; を記述しました。border-width: medium; が記述されていますが、border-style: none; が記述されている為に border-width の計算値は 0 となり、子要素は継承で計算値の 0 を採用します。

  1. border-style: dashed; border-color: transparent;

border-width0 とはしたくないが線は表示したくない場合は、border-color にキーワード transparent を指定して透過する方法があります。

currentColor

色の値に currentColor があり、要素の color プロパティの値を表します。currentColor の計算値はそのまま currentColor であり、要素の color の値に置き換わるのは使用値です。 継承対象の値は計算値の為、置き換わった色のデータではなく、currentColor というキーワードがそのまま継承される事に留意しなければなりません。

border-colorの初期値は currentColor です。borderは非継承プロパティですので、省略時の指定値はこの初期値となります。

  1. cdvSample062 > div { padding: 1em; border-style: dashed; border-width: 1px; }
  2. cdvSample062 > div > div { border-style: solid; }
  1. <div class="cdvSample062">
  2. <div style=""><div style=""></div></div></div>

例示の雛型です。style属性を書き換えて例示しています。
パティングは、親子の余白として指定しています。文字(コンテンツ)は、前景色(文字の色)と文字サイズの確認の為に記述しています。親要素と子要素の境界線の記述は、継承の確認の為に記述しています。

  1. <div style=" color: #0000ff; "><div style=""></div></div></div>

親要素に color: #0000ff を指定しました。 親要素の境界線は currentColor(初期値) であるので同じ色に、子要素の前景色(文字の色)は省略された継承プロパティなので親要素と同じ色に、子要素の境界線は省略された非継承プロパティで初期値の currentColor が採用されて同じ色に変わります。

  1. <div style=" border-color: #ff0000; "><div style=""></div></div></div>

親要素に border-color: #ff0000; を指定しました。 親要素の境界線の色だけを変えたら、他はかわりません。

  1. <div style=" border-color: #ff0000; "><div style=" border-color: inherit; "></div></div></div>

親要素に border-color: #ff0000; を、子要素に border-color: inherit; を指定しました。 親要素に境界線の色を指定し、子要素の境界線の色に inherit (継承) を指定すると、やっと親子の要素で同じになります。要素単位で文字色(前景色)と境界線の色の組み合わせを維持したい場合は、境界線の色を別途に継承する必要があります。

  1. <div style=" border-color: currentColor; color: #0000ff; "><div style=" border-color: inherit; color: #339966; "></div></div></div>

親要素の境界線の色を currentColor を指定(或いは指定しない)、子要素の境界線の色に inherit (継承) を指定すると、currentColor キーワードが継承されます。

  1. <div style=" border-color: currentColor; color: #0000ff; "><div style=" border-color: inherit;"><div style=" color: #339966; "></div></div></div></div>

前景色(文字の色)の指定を孫要素(親子の間に装飾用に要素を作成)として、境界線は子要素で継承する方法です。


一括指定プロパティ初期値

  1. border: solid 1px #0000ff;
  1. border: solid 1px #0000ff;
  2. border: dashed;

border: dashed の記述により、border: dashed medium currentColor が記述されたのと同等の処理が行われます。


おまけ

罫線を用いた見出しの修飾を少々。

上下に1本線

  1. <h3 style="border-width:3px 0; border-style:solid; text-align:center;">上下に1本線</h3>

上下に2本線

  1. <h3 style="border-width:0.3em 0; border-style:double; text-align:center;">上下に2本線</h3>

上下に破線

  1. <h3 style="border-width:0.2em 0; border-style:dashed; text-align:center;">上下に破線</h3>

上下に凸線

  1. <h3 style="border-width:0.3em 0; border-style:ridge; text-align:center;">上下に凸線</h3>

上下に凹線

  1. <h3 style="border-width:0.3em 0; border-style:groove; text-align:center;">上下に凹線</h3>

左右に1本線

  1. <h3 style="border-width:0 0.5em; border-style:solid; display:inline-block; padding:0 0.5em;">左右に1本線</h3>

左右に2本線

  1. <h3 style="border-width:0 0.5em; border-style:double; display:inline-block; padding:0 0.5em;">左右に2本線</h3>

左に1本線

  1. <h3 style="border-left:0.3em solid; padding:0 0.3em;">左に1本線</h3>

左に2本線

  1. <h3 style="border-left:0.3em double; padding:0 0.3em;">左に2本線</h3>

左と下に1本線

  1. <h3 style="border-width:0 0 0.1em 0.3em; border-style:solid; padding:0.1em 0.3em;">左と下に1本線</h3>

左に2本線,下に1本線

  1. <h3 style="border-width:0 0 0.1em 0.3em; border-style:solid double; padding:0.1em 0.3em;">左に2本線,下に1本線</h3>

左に1本線,下に2本線

  1. <h3 style="border-width:0 0 0.2em 0.3em; border-style:double solid; padding:0.1em 0.3em;">左に1本線,下に2本線</h3>

左に1本線,下に破線

  1. <h3 style="border-width:0 0 0.1em 0.3em; border-style:dashed solid; padding:0.1em 0.3em;">左に1本線,下に破線</h3>

左に1本線,下に点線

  1. <h3 style="border-width:0 0 0.1em 0.3em; border-style:dotted solid; padding:0.1em 0.3em;">左に1本線,下に点線</h3>

四辺に1本線で左は太く

  1. <h3 style="border-width:0.05em 0.05em 0.05em 0.3em; border-style:solid; padding:0.1em 0.3em;">四辺に1本線で左は太く</h3>

左に2本線で他は1本線

  1. <h3 style="border-width:0.05em 0.05em 0.05em 0.3em; border-style:solid solid solid double; padding:0.1em 0.3em;">左に2本線で他は1本線</h3>

罫線の角を丸める

  1. <h3 style="border-width:0.05em 0.05em 0.05em 0.3em; border-style:solid solid solid double; padding:0.1em 0.3em; border-radius:0 0.8em 0.8em 0.8em;">罫線の角を丸める</h3>

罫線をグラデーション

  1. <h3 style="border-width:0.05em 0.05em 0.05em 0.5em; border-style:solid solid solid double; padding:0.1em 0.3em; border-image: linear-gradient(to right, blue 11%, rgba(0,0,0,0) 11%, rgba(0,0,0,0) 22%, blue 22%, blue 33%, rgba(0,0,0,0) 66%) 33%;">罫線をグラデーション</h3>

左に1本線で他は
要素が凸って見える線

  1. <h3 style="border-width:0.1em 0.1em 0.1em 0.3em; border-style:outset outset outset solid; border-color:#ffffff #ffffff #ffffff #000000; padding:0.1em 0.3em;">左に1本線で他は要素が凸って見える線</h3>

左に2本線で他は
要素が凸って見える線

  1. <h3 style="border-width:0.1em 0.1em 0.1em 0.3em; border-style:outset outset outset double; border-color:#ffffff #ffffff #ffffff #000000; padding:0.1em 0.3em;">左に2本線で他は要素が凸って見える線</h3>

影を付ける

  1. <h3 style="border-width:0.05em 0.05em 0.05em 0.3em; border-style:solid solid solid double; padding:0.1em 0.3em; border-radius:0 0.8em 0.8em 0.8em; color:#000000; background-color:#ffffcc; border-color:#9999ff; box-shadow:0.25em 0.25em 0.25em 0.05em #ffccff;">影を付ける</h3>

ステッチ

  1. <h3 style="border:dashed 1px; padding:0.1em 0.3em; background-color:#9999ff; border-color:#ffffff; box-shadow:0 0 0 5px #9999ff;">ステッチ</h3>

輪郭線を付ける

  1. <h3 style="border-width:0.3em; border-style:solid; margin:0.5em; padding:0.1em; outline:solid 0.05em; outline-offset:0.2em;">輪郭線を付ける</h3>

輪郭線を付ける

  1. <h3 style="border:solid 1px rgba(0,0,0,0); border-image:linear-gradient(currentColor, currentColor) 33% / 0.1em / 0.5em; outline:solid 0.3em; margin:0.8em; padding:0.1em;">輪郭線を付ける</h3>

疑似要素で表現

  1. <h3 class="ch3Sanple701">疑似要素で表現</h3>
  2. <style>
  3. .ch3Sanple701{ position:relative; margin:0.5em; padding:0.1em 1.0em; border-width:0.3em; border-style:solid;}
  4. .ch3Sanple701::before {position:absolute; content:''; padding:0; border-width:0.05em; border-style:solid; top:-0.5em; left:-0.45em; width:calc(100% + 0.8em); height:calc(100% + 0.9em);}
  5. </style>

疑似要素で表現

  1. <h3 class="ch3Sanple702">疑似要素で表現</h3>
  2. <style>
  3. .ch3Sanple702 {position: relative; border-radius:1.28rem; padding: 0.5em; border: 0.1em solid #000000; color:#000000; background-color: #ffffff;}
  4. .ch3Sanple702::after {
  5. display: block;
  6. content: "";
  7. position: absolute;
  8. bottom: -8px;
  9. left: 1em;
  10. border-top: none;
  11. border-right: inherit;
  12. border-bottom: inherit;
  13. border-left: none;
  14. width: 16px;
  15. height: 16px;
  16. background-color: inherit;
  17. -webkit-transform: skewX(25deg) rotateZ(45deg);
  18. transform: skewX(25deg) rotateZ(45deg);
  19. }
  20. </style>

疑似要素で表現