HPでライン風の対話型吹き出しの表示に枠を付けたい!!ってなったので調べてみた。

こんにちは! あますた(@amaguristar)です。
前回、対話型の吹き出し表示をなんとか作成。使ってみて「やっぱり枠があった方が良いよな?」ってなったので今回は枠をつけることにしました。
枠をつける方法
まず、単純に枠を作成しようと思ったら「borderプロパティ」を追加。
.balloonL{
position: relative;
display: inline-block;
padding: 20px;
border: solid 1px #000; /* 枠の設定{ 種類,幅,色 } */
border-radius: 10px;
color: #010101;
background-color: #ECECEB;
margin-left: 110px;
margin-bottom: 35px;
}
前回のコード(詳細はここをクリック)に「border」プロパティを追加設定。この状態だと
と表示されます。このままだと三角形に枠が表示されないので、三角形にも枠を表示する為に色を変更。
.balloonL::before{ /* 吹き出しの三角形作成 */
content: '';
position: absolute;
display: block;
width: 0;
height: 0;
left: -30px;
top: 50%;
margin-top: -15px;
/* ▲の向き設定 */
border-top: 15px solid transparent;
border-right: 15px solid #000; /* ← 枠と同じ色に変更*/
border-bottom: 15px solid transparent;
border-left: 15px solid transparent;
}
この状態で表示すると、
三角形が塗りつぶされて表示。あとは背景と同じ色の三角形を少しずらして表示すると良いので、
.balloonL::after{ /* 背景と同じ色の三角形作成 */
content: '';
position: absolute;
display: block;
width: 0;
height: 0;
left: -29px; /* 表示するx軸方向を少しずらす設定 */
top: 50%;
margin-top: -15px;
/* ▲の向き設定 */
border-top: 15px solid transparent;
border-right: 15px solid #ECECEB; /* ← 背景色と同じ色にする*/
border-bottom: 15px solid transparent;
border-left: 15px solid transparent;
}
まとめ
枠付きのコードをまとめると、
/* ================================
会話風バルーンクラス 枠付き
exp:)
<div class="baloon-wrap">
<div class="baloonRB or LB">
<img ~~~~~~ class="iconR or L">
<article> ~~~~~メッセージ~~~~</article>
</div>
<div>
show:)
「iconL」{ ~~~~~~~~メッセージ~~~~~~~~
~~~~~~~~メッセージ~~~~~~~~ } 「iconR」
caution:)
imgはデフォルトで、サイズが86x86 の正方形
imgはデフォルトで、丸くくり抜くので正方形以外だと表示がおかしくなる
==================================== */
.balloon-wrap { overflow: hidden; } /* バルーンをブロックで管理する為のラッピングクラス */
/* ←吹き出し */
.balloonLB{
position: relative; /* 絶対配置の基準宣言 */
display: inline-block; /* コンテンツのサイズによってバルーンサイズ変更 */
padding: 20px; /* パディング領域 */
border-radius: 10px; /* 吹き出しの角を丸く */
color: #010101; /* コンテンツの色 */
border: solid 1px #000; /* 枠設定{ 線の種類,太さ,色 } */
background-color: #ECECEB; /* バルーンの背景の色 */
margin-left: 110px; /* 左に空けるスペース */
margin-bottom: 35px; /* 下に空けるスペース */
}
.balloonLB .iconL{
position: absolute; /* 絶対配置宣言 */
left: -110px; /* 左に空けたスペースににアイコンを表示 */
top: 0; /* 頂点を合わせる */
width: 86px; /* アイコンの幅 */
height: 86px; /* アイコンの高さ */
border-radius: 50%; /* 画像を丸くくり抜く */
}
.balloonLB::before{ /* 吹き出しの三角形作成 */
content: ''; /* 文字は空欄 */
position: absolute; /* 絶対配置宣言 */
display: block;
width: 0;
height: 0;
left: -30px; /* 表示するx軸方向設定 */
top: 50%; /* 表示するy軸方向設定 */
margin-top: -15px; /* 作成した▲を中央寄せ */
/* ▲の向き設定 */
border-top: 15px solid transparent;
border-right: 15px solid #000; /* ← */
border-bottom: 15px solid transparent;
border-left: 15px solid transparent;
}
.balloonLB::after{ /* 枠風にする為に背景色と同じ三角形を少しずらして作成 */
content: ''; /* 文字は空欄 */
position: absolute; /* 絶対配置宣言 */
display: block;
width: 0;
height: 0;
left: -29px; /* 表示するx軸方向設定 */
top: 50%; /* 表示するy軸方向設定 */
margin-top: -15px; /* 作成した▲を中央寄せ */
/* ▲の向き設定 */
border-top: 15px solid transparent;
border-right: 15px solid #ECECEB; /* ← */
border-bottom: 15px solid transparent;
border-left: 15px solid transparent;
}
/* →吹き出し */
.balloonRB {
position: relative; /* 絶対配置の基準宣言 */
display: inline-block; /* コンテンツのサイズによってバルーンサイズ変更 */
padding: 20px; /* パディング領域 */
border-radius: 10px; /* 吹き出しの角を丸く */
border: solid 1px #000; /* 枠設定{ 線の種類,太さ,色 } */
color: #010101; /* コンテンツの色 */
background-color: #ECECEB; /* バルーンの背景の色 */
margin-right: 110px; /* 右に空けるスペース */
margin-bottom: 35px; /* 下に空けるスペース */
float: right; /* 右寄せ表示 */
}
.balloonRB .iconR{
position: absolute; /* 絶対配置宣言 */
right: -110px; /* 右に空けたスペースににアイコンを表示 */
top: 0; /* 頂点を合わせる */
width: 86px; /* アイコンの幅 */
height: 86px; /* アイコンの高さ */
border-radius: 50%; /* 画像を丸くくり抜く */
}
.balloonRB::before{ /* 吹き出しの三角形作成 */
content: ''; /* 文字は空欄 */
position: absolute; /* 絶対配置宣言 */
display: block;
width: 0;
height: 0;
right: -30px; /* 表示するx軸方向設定 */
top: 50%; /* 表示するy軸方向設定 */
margin-top: -15px; /* 作成した▲を中央寄せ */
/* ▲の向き設定 */
border-top: 15px solid transparent;
border-right: 15px solid transparent;
border-bottom: 15px solid transparent;
border-left: 15px solid #000; /* → */
}
.balloonRB::after{ /* 枠風にする為に背景色と同じ三角形を少しずらして作成 */
content: ''; /* 文字は空欄 */
position: absolute; /* 絶対配置宣言 */
display: block;
width: 0;
height: 0;
right: -29px; /* 表示するx軸方向設定 */
top: 50%; /* 表示するy軸方向設定 */
margin-top: -15px; /* 作成した▲を中央寄せ */
/* ▲の向き設定 */
border-top: 15px solid transparent;
border-right: 15px solid transparent;
border-bottom: 15px solid transparent;
border-left: 15px solid #ECECEB; /* → */
}









