CSSでチャットメッセージを作成する方法をわかりやすく解説
CSSを使えば、LINEやMessengerのようなチャットメッセージ画面を簡単に作成できます。この記事では、プロフィール画像・吹き出し・タイムスタンプ付きのチャットUIを実装する方法を、実際のコード例とともに解説します。
コード例
以下は、CSSでチャットメッセージを作成するための完全なコードです。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
margin: 0 auto;
max-width: 800px;
padding: 0 20px;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
.message {
font-size: 18px;
font-weight:500;
border: 2px solid #dedede;
background-color: #55e4a8;
color:rgb(0, 0, 0);
border-radius: 12px;
padding: 10px;
margin: 10px 0;
}
.darker {
border-color: #ccc;
background-color: rgb(111, 25, 182);
color:white;
}
.message::after {
content: "";
clear: both;
display: table;
}
.profilePic{
width: 100%;
}
.message img {
float: left;
max-width: 60px;
width: 100%;
margin-right: 20px;
border-radius: 50%;
}
.message img.right {
float: right;
margin-left: 20px;
margin-right:0;
}
.timeStampRight {
float: right;
color: rgb(0, 0, 0);
font-weight: bold;
}
.timeStampLeft {
float: left;
color: rgb(255, 255, 255);
font-weight: bold;
}
</style>
</head>
<body>
<h1>Chat Messages Example</h1>
<div class="message">
<img class="profilePic" src="https://i.picsum.photos/id/295/200/200.jpg">
<p>Hello. How are your holidays going?</p>
<span class="timeStampRight">9:00</span>
</div>
<div class="message darker">
<img class="profilePic" src="https://i.picsum.photos/id/255/200/200.jpg">
<p>They are going pretty good.Thanks for asking!</p>
<span class="timeStampLeft">9:05</span>
</div>
<div class="message">
<img class="profilePic" src="https://i.picsum.photos/id/295/200/200.jpg">
<p>Are you visiting somewhere in holidays?</p>
<span class="timeStampRight">9:07</span>
</div>
<div class="message darker">
<img class="profilePic" src="https://i.picsum.photos/id/255/200/200.jpg">
<p>Yes! Thinking of going to Disneyland.</p>
<span class="timeStampLeft">9:10</span>
</div>
</body>
</html>
出力結果
上記のコードをブラウザで開くと、次のように表示されます。

コードのポイント解説
1. メッセージの基本スタイル
.message クラスでは、border-radius: 12px を指定して角丸の吹き出し形状を作り、padding と margin で余白を調整しています。背景色を変えるだけで、会話アプリらしい見た目になります。
2. 自分と相手のメッセージを色分け
.darker クラスを組み合わせることで、自分のメッセージには紫色の背景と白い文字を適用できます。送信者と受信者を視覚的に区別でき、会話の流れがひと目で分かります。
3. プロフィール画像の配置
画像には float: left を指定してメッセージの左側に配置し、border-radius: 50% で円形のアバターにしています。.right クラスを使えば、画像を右側に配置することも可能です。
4. floatの解除(clearfix)
.message::after に content: ""、clear: both、display: table を指定することで、floatによるレイアウト崩れを防いでいます。これは定番のclearfixテクニックなので、覚えておくと便利です。
5. タイムスタンプの表示
.timeStampRight と .timeStampLeft を使い分けることで、メッセージの右側または左側に送信時刻を表示できます。文字色を背景に合わせて変えるのがポイントです。
このように、floatと擬似要素を組み合わせるだけで、JavaScriptに頼らずCSSのみで自然なチャット画面を作れます。ぜひ自分のプロジェクトに応用してみてください。
-
CSSだけで作る!Webサイトの「About Us」ページの作り方【サンプルコード付き】
「About Us(私たちについて)」ページは、企業の理念やチームメンバーの顔ぶれを訪問者に伝えるために欠かせないページです。本記事では、HTMLとCSSだけを使い、メンバーごとのプロフィールカードを並べたスタイリッシュなAboutページを作成する方法を、実際のコード例とともにわかりやすく解説します。 作成するページの概要 今回作成するAboutページには、以下の要素が含まれています。 濃い紫の背景に白文字の見出し(h1)を配置したページヘッダー メンバーごとの「顔写真・名前・役職・Contactボタン」をまとめたカード型デザイン 画面幅650px以下でカードが縦に並び替わるレスポンシブ対応
-
CSSだけで作る!レスポンシブ対応のセクションカウンターの実装方法
CSSを使えば、JavaScriptに頼ることなく、ダウンロード数やパートナー数などの統計情報を視覚的にアピールする「セクションカウンター」を簡単に作成できます。ここでは、Font Awesomeのアイコンと組み合わせて、レスポンシブ対応のセクションカウンターを実装する方法を解説します。 実装コード例 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <l