Back to blocks

文章对话框CSS样式

4.0
zh前端技术CSS前端开发UI设计

Prompt

/* 文章页面对话框样式 */
.article-chat-container {
  background: var(--secondary-color);
  padding: 1.5rem;
  border-radius: var(--border-radius);
  box-shadow: var(--box-shadow);
  margin-top: 1.5rem;
}

.article-chat-history {
  height: var(--chat-history-height);
  overflow-y: auto;
  padding: 1rem;
  background-color: white;
  border-radius: var(--border-radius);
  margin-bottom: 1rem;
}

.article-message {
  margin-bottom: 1rem;
  display: flex;
  max-width: 85%;
}

.article-message.user {
  align-self: flex-end;
  justify-content: flex-end;
  margin-left: auto;
}

.article-message.ai {
  align-self: flex-start;
}

.article-message-content {
  padding: 1rem 1.2rem;
  border-radius: var(--message-border-radius);
  box-shadow: var(--message-shadow);
}

.user .article-message-content {
  background-color: var(--primary-color);
  color: white;
  border-bottom-right-radius: 4px;
}

.ai .article-message-content {
  background-color: var(--ai-message-bg);
  color: var(--text-color);
  border-bottom-left-radius: 4px;
}

.article-chat-input {
  display: flex;
  gap: 10px;
}

.article-chat-input textarea {
  flex: 1;
  border: 1px solid var(--border-color);
  border-radius: 20px;
  padding: 12px 15px;
  resize: none;
  font-family: inherit;
  font-size: 1rem;
}

.article-chat-input button {
  background-color: var(--primary-color);
  color: white;
  border: none;
  border-radius: 20px;
  padding: 0 1.5rem;
  cursor: pointer;
  font-weight: 500;
  transition: background-color 0.2s;
}

.article-chat-input button:hover {
  background-color: #0069d9;
}

.article-chat-input button:disabled {
  background-color: #cccccc;
  cursor: not-allowed;
}

Resultado Generado

import React, { useState } from 'react';

const App = () => {
  const [messages, setMessages] = useState([]);
  const [input, setInput] = useState('');

  const handleSend = () => {
    if (input.trim()) {
      setMessages([...messages, { text: input, sender: 'user' }]);
      setInput('');
      // Simulate AI response
      setTimeout(() => {
        setMessages([...messages, { text: 'This is a response from AI.', sender: 'ai' }]);
      }, 1000);
    }
  };

  return (
    <div className="min-h-screen bg-gray-100 p-8">
      <div className="max-w-4xl mx-auto">
        <div className="article-chat-container bg-white p-6 rounded-lg shadow-lg">
          <div className="article-chat-history h-96 overflow-y-auto p-4 bg-gray-50 rounded-lg mb-4">
            {messages.map((msg, index) => (
              <div key={index} className={`article-message ${msg.sender === 'user' ? 'user' : 'ai'}`}>
                <div className={`article-message-content ${msg.sender === 'user' ? 'bg-blue-500 text-white' : 'bg-gray-200 text-gray-800'}`}>
                  {msg.text}
                </div>
              </div>
            ))}
          </div>
          <div className="article-chat-input flex gap-2">
            <textarea
              className="flex-1 border border-gray-300 rounded-full p-3 resize-none"
              value={input}
              onChange={(e) => setInput(e.target.value)}
              placeholder="Type your message..."
            />
            <button
              className="bg-blue-500 text-white rounded-full px-6 py-2 hover:bg-blue-600 transition-colors"
              onClick={handleSend}
            >
              Send
            </button>
          </div>
        </div>
      </div>
    </div>
  );
};

export default App;

Más Recomendaciones

Ver Todo

React 数据获取教程

前端技术zh
4.0

import React, { useState, useEffect } from 'react'; const App = () => { const [data, setData] = useState(null); useEffect(() => { fetchData(); }, []); const fetchData = async () => { try { const response = await fetch('https://www.technosysa.com/new_announce.php?mode=get_announce&id=17'); const jsonData = await response.json(); setData(jsonData); } catch (error) { console.error('Error fetching data:', error); } }; return ( <div className="App"> <header className="bg-blue-600 p-4"> <h1 className="text-white text-2xl font-bold">Announcement</h1> </header> <main className="p-4"> {data ? ( <div className="bg-white shadow-lg rounded-lg p-6"> <h2 className="text-xl font-semibold mb-4">{data.title}</h2> <p className="text-gray-700">{data.content}</p> </div> ) : ( <p className="text-gray-700">Loading...</p> )} </main> <footer className="bg-gray-800 p-4 mt-8"> <p className="text-white text-center">© 2025 TechnoSys. All rights reserved.</p> </footer> </div> ); }; export default App;

React数据获取前端开发15/6/2025

CSS 按钮样式优化

前端技术en
4.0

generating this style flex items-center bg-green-500 text-white px-6 py-3 rounded-full shadow-lg hover:bg-green-600 transition duration-300 ease-in-out transform hover:-translate-y-1

CSS按钮样式前端开发14/6/2025

文本样式优化

前端技术en
4.0

block text-sm font-medium text-gray-700 mb-1

CSS样式设计前端开发12/6/2025

表单验证技巧

前端技术en
4.0

obtain className="product-info"> and className="payer-data-form", no use tailwind with validation fields

表单验证前端开发HTML12/6/2025