チャットUI Chat UI
メッセージの送受信を表示するチャットインターフェース。リアルタイムコミュニケーションの基本UI。
ライブデモ
S
サポートチーム
オンライン
ソースコード
<div class="demo-chat">
<div class="demo-chat-header">
<div class="demo-chat-header-avatar">S</div>
<div>
<div class="demo-chat-header-name">サポートチーム</div>
<div class="demo-chat-header-status">オンライン</div>
</div>
</div>
<div class="demo-chat-messages">
<div class="demo-chat-msg demo-chat-received">
<div class="demo-chat-bubble">こんにちは!何かお手伝いできることはありますか?</div>
<div class="demo-chat-time">14:00</div>
</div>
<div class="demo-chat-msg demo-chat-sent">
<div class="demo-chat-bubble">アカウントの設定について質問があります。</div>
<div class="demo-chat-time">14:01</div>
</div>
<div class="demo-chat-msg demo-chat-received">
<div class="demo-chat-bubble">もちろんです。どのような設定でしょうか?</div>
<div class="demo-chat-time">14:01</div>
</div>
</div>
<div class="demo-chat-input-area">
<input class="demo-chat-input" type="text" placeholder="メッセージを入力..." />
<button class="demo-chat-send">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg>
</button>
</div>
</div>.demo-chat { border: 1px solid #e5e7eb; border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; height: 340px; }
.demo-chat-header {
display: flex; align-items: center; gap: 10px; padding: 12px 16px;
background: var(--ui-primary); color: #fff;
}
.demo-chat-header-avatar {
width: 36px; height: 36px; border-radius: 50%;
background: rgba(255,255,255,0.2); display: flex; align-items: center;
justify-content: center; font-weight: 700; font-size: 16px;
}
.demo-chat-header-name { font-weight: 600; font-size: 14px; }
.demo-chat-header-status { font-size: 11px; opacity: 0.8; }
.demo-chat-messages { flex: 1; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 12px; background: #f9fafb; }
.demo-chat-msg { display: flex; flex-direction: column; max-width: 80%; }
.demo-chat-received { align-self: flex-start; }
.demo-chat-sent { align-self: flex-end; }
.demo-chat-bubble {
padding: 10px 14px; font-size: 13px; line-height: 1.5;
border-radius: 12px;
}
.demo-chat-received .demo-chat-bubble {
background: #fff; color: #333; border: 1px solid #e5e7eb;
border-bottom-left-radius: 4px;
}
.demo-chat-sent .demo-chat-bubble {
background: var(--ui-primary); color: #fff;
border-bottom-right-radius: 4px;
}
.demo-chat-time { font-size: 10px; color: #999; margin-top: 4px; }
.demo-chat-sent .demo-chat-time { text-align: right; }
.demo-chat-input-area {
display: flex; gap: 8px; padding: 12px; border-top: 1px solid #e5e7eb;
background: #fff;
}
.demo-chat-input {
flex: 1; padding: 10px 14px; border: 1px solid #e5e7eb;
border-radius: 20px; font-size: 13px; outline: none;
transition: border-color 0.2s;
}
.demo-chat-input:focus { border-color: var(--ui-primary); }
.demo-chat-send {
width: 40px; height: 40px; border-radius: 50%; border: none;
background: var(--ui-primary); color: #fff; cursor: pointer;
display: flex; align-items: center; justify-content: center;
transition: opacity 0.2s;
}
.demo-chat-send:hover { opacity: 0.85; }(function(){
var input = document.querySelector('.demo-chat-input');
var sendBtn = document.querySelector('.demo-chat-send');
var messages = document.querySelector('.demo-chat-messages');
function sendMessage(){
var text = input.value.trim();
if(!text) return;
var msg = document.createElement('div');
msg.className = 'demo-chat-msg demo-chat-sent';
var now = new Date();
var time = now.getHours()+':'+String(now.getMinutes()).padStart(2,'0');
msg.innerHTML = '<div class="demo-chat-bubble">'+text+'</div><div class="demo-chat-time">'+time+'</div>';
messages.appendChild(msg);
input.value = '';
messages.scrollTop = messages.scrollHeight;
setTimeout(function(){
var reply = document.createElement('div');
reply.className = 'demo-chat-msg demo-chat-received';
reply.innerHTML = '<div class="demo-chat-bubble">承知しました。確認いたします。</div><div class="demo-chat-time">'+time+'</div>';
messages.appendChild(reply);
messages.scrollTop = messages.scrollHeight;
}, 1000);
}
sendBtn.addEventListener('click', sendMessage);
input.addEventListener('keydown', function(e){ if(e.key==='Enter') sendMessage(); });
})();AIプロンプト
Basic
チャットUIをHTML/CSS/JSで作ってください。送信/受信メッセージが吹き出し形式で表示され、入力欄からメッセージを送信できます。
Custom
以下の仕様でチャットUIを実装してください。 - ヘッダー(アバター、名前、オンライン状態) - 送信メッセージ(右寄せ、プライマリカラー背景) - 受信メッセージ(左寄せ、白背景) - タイムスタンプ表示 - メッセージ入力欄と送信ボタン - プライマリカラー: #2563eb - 自動返信デモ機能
Advanced
リアルタイム対応のチャットUIを実装してください。 - WebSocket対応のメッセージ送受信 - タイピングインジケーター(相手が入力中の表示) - 既読表示(チェックマーク) - 画像・ファイル添付対応 - メッセージの引用返信 - インフィニットスクロール(過去メッセージの遅延読み込み) - オフライン時のメッセージキューイング - プッシュ通知対応