HTMLify

Chat
Views: 45 | Author: djdj
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>Responsive Chat UI</title>
  <style>
    * {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
      font-family: Arial, sans-serif;
    }

    body {
      background-color: #f1f1f1;
    }

    .chat-container {
      max-width: 600px;
      margin: auto;
      display: flex;
      flex-direction: column;
      height: 100vh;
      border: 1px solid #ccc;
      background-color: #fff;
    }

    .chat-header {
      display: flex;
      align-items: center;
      padding: 10px;
      background-color: #007bff;
      color: #fff;
    }

    .chat-header img {
      width: 40px;
      height: 40px;
      border-radius: 50%;
      margin-right: 10px;
    }

    .chat-header .name {
      font-weight: bold;
      font-size: 18px;
    }

    .chat-box {
      flex: 1;
      padding: 15px;
      overflow-y: auto;
      display: flex;
      flex-direction: column;
    }

    .date-label {
      text-align: center;
      font-size: 12px;
      color: #555;
      margin: 10px 0;
    }

    .message {
      position: relative;
      margin: 8px 0;
      padding: 10px 40px 18px 10px;
      max-width: 70%;
      border-radius: 10px;
      word-wrap: break-word;
    }

    .message.user {
      background-color: #dcf8c6;
      align-self: flex-end;
    }

    .message.other {
      background-color: #f1f0f0;
      align-self: flex-start;
    }

    .timestamp {
      position: absolute;
      bottom: 4px;
      right: 10px;
      font-size: 10px;
      color: #555;
    }

    .chat-input {
      display: flex;
      padding: 10px;
      border-top: 1px solid #ccc;
      background-color: #f9f9f9;
    }

    .chat-input input {
      flex: 1;
      padding: 10px;
      border: 1px solid #ccc;
      border-radius: 5px;
    }

    .chat-input button {
      margin-left: 10px;
      padding: 10px 15px;
      border: none;
      background-color: #007bff;
      color: #fff;
      border-radius: 5px;
      cursor: pointer;
    }

    .chat-input button:hover {
      background-color: #0056b3;
    }

    @media (max-width: 600px) {
      .chat-container {
        border: none;
      }
    }
  </style>
</head>
<body>
  <div class="chat-container">
    <div class="chat-header">
      <img src="https://htmlify.artizote.com/djdj/312.jpg" alt="User Avatar" />
      <div class="name">Username</div>
    </div>
    <div class="chat-box" id="chatBox">
      <!-- Messages will be appended here -->
    </div>
    <div class="chat-input">
      <input type="text" placeholder="Type your message..." id="messageInput" />
      <button onclick="sendMessage()">Send</button>
    </div>
  </div>

  <script>
    let lastMessageDate = '';

    function formatTime(date) {
      return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
    }

    function formatDate(date) {
      return date.toLocaleDateString([], {
        day: 'numeric', month: 'short', year: 'numeric'
      });
    }

    function sendMessage() {
      const input = document.getElementById('messageInput');
      const msg = input.value.trim();
      if (msg !== '') {
        const chatBox = document.getElementById('chatBox');
        const now = new Date();
        const todayStr = formatDate(now);

        // Add date label if new day
        if (lastMessageDate !== todayStr) {
          const dateLabel = document.createElement('div');
          dateLabel.className = 'date-label';
          dateLabel.textContent = todayStr;
          chatBox.appendChild(dateLabel);
          lastMessageDate = todayStr;
        }

        // Create message div
        const div = document.createElement('div');
        div.className = 'message user';
        div.innerHTML = `${msg}<span class="timestamp">${formatTime(now)}</span>`;
        chatBox.appendChild(div);

        chatBox.scrollTop = chatBox.scrollHeight;
        input.value = '';
      }
    }

    // Demo messages
    window.onload = function () {
      const chatBox = document.getElementById('chatBox');
      const now = new Date();
      const todayStr = formatDate(now);
      lastMessageDate = todayStr;

      const dateLabel = document.createElement('div');
      dateLabel.className = 'date-label';
      dateLabel.textContent = todayStr;
      chatBox.appendChild(dateLabel);

      const msg1 = document.createElement('div');
      msg1.className = 'message other';
      msg1.innerHTML = `Hi, how are you?<span class="timestamp">${formatTime(now)}</span>`;
      chatBox.appendChild(msg1);

      const msg2 = document.createElement('div');
      msg2.className = 'message user';
      msg2.innerHTML = `I'm good, what about you?<span class="timestamp">${formatTime(now)}</span>`;
      chatBox.appendChild(msg2);

      const msg3 = document.createElement('div');
      msg3.className = 'message other';
      msg3.innerHTML = `Doing great, thanks!<span class="timestamp">${formatTime(now)}</span>`;
      chatBox.appendChild(msg3);

      chatBox.scrollTop = chatBox.scrollHeight;
    };
  </script>
</body>
</html>

Comments