Tailwind css實戰,基于Kooboo構建AI對話框頁面(一)

在當今數字化時代,AI 助手已成為網站和應用不可或缺的一部分。本文將帶你一步步使用 Tailwind CSS 和 Kooboo 構建一個現代化的 AI 對話界面框。


一、選擇 Kooboo平臺 的核心優勢

  1. 智能提示:在輸入?class?屬性時,會自動觸發 Tailwind CSS 規則的智能聯想提示,顯著提升開發效率。
  2. 動態編譯優化:通過啟用樣式設置中的?UnoCSS?功能,可實現:
    • 按需編譯:僅打包實際使用的 CSS 類,剔除未引用規則,生成輕量且高效的樣式文件。
    • 自動集成:編譯后的最小化 CSS 文件會自動注入頁面,無需手動配置引用。
      進入站點后 -> 頁面 -> 樣式 -> 設置 -> 選擇原子化css -> 保存

二、HTML 結構

(一)最外層容器:<body>
<body class="bg-gray-200 min-h-screen flex items-center justify-center p-4">
  • 角色:整個頁面的根容器,控制整體布局和基礎樣式。
  • 關鍵屬性
    • bg-gray-200:背景色為淺灰色,營造柔和視覺基調。
    • min-h-screen:最小高度為視口高度(100vh),確保內容撐滿屏幕
    • flex items-center justify-center:使用彈性布局,子元素在垂直和水平方向居中,實現界面居中效果。
    • p-4:內邊距為 4 單位(Tailwind 中默認 1 單位 =?0.25rem,即總內邊距為?1rem),避免內容緊貼瀏覽器邊緣。
(二)主窗口容器:.max-w-3xl
<div class="max-w-3xl w-full bg-white rounded-lg shadow-xl overflow-hidden border border-gray-200">
  • 角色:模擬桌面應用的窗口外殼,包裹標題欄、消息容器和輸入區域。
  • 關鍵屬性
    • max-w-3xl:最大寬度為?3xl(Tailwind 預設值,約?48rem/768px),限制窗口寬度,適配不同屏幕。
    • w-full:在小于?3xl?的屏幕上自動占滿可用寬度,保證響應式。
    • bg-white:白色背景,與頁面淺灰背景形成對比,突出窗口主體。
    • rounded-lg shadow-xl:大圓角 + 深陰影,營造立體感和浮窗效果。
    • overflow-hidden border border-gray-200:隱藏溢出內容(防止圓角外的邊框顯示不全),添加淺灰色邊框增強邊界感。
(三)標題欄容器:.bg-gray-100
<div class="bg-gray-100 px-4 py-2 flex items-center justify-between border-b border-gray-200">

  • 角色:窗口頂部的功能欄,顯示標題和控制按鈕。
  • 關鍵屬性
    • bg-gray-100:淺灰色背景,與主窗口白色背景區分,形成層級感。
    • px-4 py-2:水平內邊距 4 單位,垂直內邊距 2 單位(總內邊距:水平?1rem,垂直?0.5rem)。
    • flex items-center justify-between:彈性布局,子元素垂直居中,左右內容兩端對齊(標題居左,按鈕居右)。
    • border-b border-gray-200:底部添加淺灰色邊框,分隔標題欄和消息容器。
標題欄子容器 1:左側標題組
<div class="flex items-center"><div class="w-8 h-8 flex items-center justify-center"><span class="text-blue-600">🤖</span></div><span class="ml-4 text-sm font-medium text-gray-700">AI小助手</span>
</div>
  • 布局:水平排列的圖標和標題。
    • 圖標容器
      • w-8 h-8:固定尺寸?2rem×2rem(約 32px),圓形背景(通過父級?rounded-full?實現)。
      • flex items-center justify-center:圖標居中顯示。
      • text-blue-600:深藍色圖標,與標題欄淺灰背景形成對比。
    • 標題文本
      • ml-4:左側邊距 4 單位(1rem),與圖標隔開。
      • text-sm font-medium text-gray-700:小字體、中等字重、深灰色文本,清晰易讀。
標題欄子容器 2:右側控制按鈕組
<div class="flex items-center space-x-3"><button class="text-gray-500 hover:text-gray-700 transition-colors"><i class="fa fa-window-minimize"></i></button><button class="text-gray-500 hover:text-gray-700 transition-colors"><i class="fa fa-window-maximize"></i></button><button class="text-gray-500 hover:text-red-500 transition-colors"><i class="fa fa-times"></i></button></div>
  • 布局:水平排列的三個按鈕(最小化、最大化、關閉)。
    • flex items-center space-x-3:按鈕垂直居中,水平間距 3 單位(0.75rem)。
    • 按鈕樣式
      • text-gray-500 hover:text-gray-700:默認淺灰色圖標,懸停時深灰色,關閉按鈕懸停時為紅色(hover:text-red-500)。
      • transition-colors:添加顏色過渡動畫,使交互更平滑。
    • 圖標:使用 Font Awesome 圖標(需引入庫),分別為?fa-window-minimizefa-window-maximizefa-times
(四)消息容器:#messageContainer
<div id="messageContainer" class="h-[60vh] overflow-y-auto p-4 space-y-4 bg-gray-50">
  • 角色:顯示歷史聊天記錄,支持垂直滾動
  • 關鍵屬性
    • h-[60vh]:高度為視口高度的 60%,固定區域大小。
    • overflow-y-auto:內容超出高度時顯示垂直滾動條。
    • p-4 space-y-4:內邊距 4 單位,子消息之間垂直間距 4 單位(1rem),避免消息緊貼。
    • bg-gray-50:淺灰色背景,與主窗口白色背景區分,突出消息氣泡。
消息容器子元素:單條消息(初始 AI 消息)
<!-- 初始消息 --><div class="flex items-start space-x-2"><div class="w-8 h-8 rounded-full bg-gray-200 flex items-center justify-center">🤖</div><div class="max-w-[70%]"><div class="bg-white p-4 rounded-lg rounded-tl-none shadow-sm"><p class="text-gray-800">您好!我是人工智能助手。有什么可以幫助您的嗎?</p><span class="text-xs text-gray-500 mt-1 block">10:30 AM</span></div></div></div>
  • 布局邏輯
    • flex items-start space-x-2:左側圖標與右側消息氣泡水平排列,間距 2 單位(0.5rem),氣泡頂部對齊圖標。
    • 圖標容器
      • rounded-full bg-gray-200:灰色圓形背景,機器人圖標居中。
    • 消息氣泡
      • max-w-[70%]:最大寬度占容器的 70%,避免長消息撐滿屏幕。
      • bg-white p-4 rounded-lg rounded-tl-none:白色背景,大圓角,左上角無圓角(模擬對話氣泡的指向性)。
      • shadow-sm輕微陰影,增強立體感。
      • 文本樣式
        • 消息內容:text-gray-800?深灰色,易讀性高。
        • 時間戳:text-xs text-gray-500?小字體、淺灰色,位于消息底部。
(五)輸入區域容器:.bg-white
<div class="bg-white p-4 border-t border-gray-200">
  • 角色:用戶輸入消息的區域,位于窗口底部。
  • 關鍵屬性
    • bg-white:白色背景,與消息容器的淺灰背景區分。
    • p-4 border-t border-gray-200:內邊距 4 單位,頂部添加淺灰色邊框,分隔輸入區域和消息容器。
輸入區域子容器:輸入框與按鈕組
        <div class="flex space-x-2"><input id="messageInput"type="text" placeholder="輸入消息..." class="flex-1 p-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"><button id="sendButton" class="px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors">發送</button></div></div>
  • 布局:水平排列的輸入框和發送按鈕。
    • flex space-x-2:彈性布局,輸入框和按鈕之間水平間距 2 單位(0.5rem)。
    • 輸入框
      • flex-1:占據剩余水平空間,自適應寬度。
      • p-2 border rounded-lg focus:ring-blue-500:內邊距、邊框、圓角,聚焦時藍色高亮環。
    • 發送按鈕
      • bg-blue-600 text-white hover:bg-blue-700:藍色主色調,懸停時顏色加深,符合操作按鈕視覺規范。
      • px-4 py-2 rounded-lg:內邊距、圓角,按鈕尺寸適中易點擊。

三、設計核心思路

  1. 層級分明的容器結構

    • 通過不同背景色(白、淺灰、深灰)和邊框分隔容器,增強視覺層次感。
    • 彈性布局(flex)和間距類(space-xspace-y)實現靈活響應式布局。
  2. 模擬真實交互體驗

    • 標題欄控制按鈕模仿桌面應用視覺習慣,提升用戶熟悉度。
    • 消息氣泡通過對齊方式(左對齊 AI,右對齊用戶)和顏色(白 / 藍)清晰區分角色。
  3. 漸進增強的交互邏輯

    • JavaScript 僅負責動態交互(發送消息、加載狀態、回復邏輯),靜態布局完全由 HTML/CSS 實現,保證基礎功能可用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907079.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907079.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907079.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python學習day2:進制+碼制+邏輯運算符

進制 Python 中的進制表示與轉換 進制的基本概念 二進制、八進制、十進制、十六進制的定義與特點不同進制在計算機科學中的應用場景 Python 中的進制表示 二進制表示&#xff1a;使用 0b 前綴八進制表示&#xff1a;使用 0o 前綴十六進制表示&#xff1a;使用 0x 前綴示例…

ROS2學習(11)------ROS2通信接口

操作系統&#xff1a;ubuntu22.04 IDE:Visual Studio Code 編程語言&#xff1a;C11 ROS版本&#xff1a;2 ROS 2 提供了多種通信接口&#xff0c;用于節點之間的數據交換。這些接口主要包括話題&#xff08;Topics&#xff09;、服務&#xff08;Services&#xff09;、動作&…

STM32G0xx基于串口(UART)Ymodem協議實現OTA升級包括Bootloader、上位機、應用程序

STM32G0xx基于串口Ymodem協議實現OTA升級包括Bootloader、上位機、應用程序 例程說明一、串口相關的底層配置二、OTA相關的應用層三、Flash相關的操作四、Flash存儲參數相關五、核心部分Ymodem相關六、其他宏配置七、主函數八、使用Python合并文件九、測試結果有疑問歡迎加交流…

Jenkins實踐(6):配置“構建歷史的顯示名稱,加上包名等信息“

Jenkins實踐(6):配置“構建歷史的顯示名稱,加上包名等信息“ 版本:Jenkins 4.262.2 需求:想要在構建歷史中展示,本次運行的是哪個版本或哪個包 操作步驟: 1、先安裝插件Build Name and Description Setter 2、Set Build Name 3、構建歷史處查看展示 插件特性說明 安裝依賴…

快速解決azure aks aad身份和權限問題

現狀分析 AKS cluster 1.31.8啟用aad 身份驗證和kubernetes RBAC 當嘗試執行kubectl get node命令時&#xff0c;系統返回以下錯誤信息&#xff1a; Error from server (Forbidden): nodes is forbidden: User "357517e8-4df5-4daa-88b4-94a84d763ec5" cannot list…

【玩轉騰訊混元大模型】騰訊混元大模型AIGC系列產品深度體驗

【玩轉騰訊混元大模型】騰訊混元大模型AIGC系列產品深度體驗 騰訊推出的系列AI產品&#xff1a;混元大模型、大模型圖像創作引擎、大模型視頻創作引擎、騰訊元寶&#xff0c;共同構成了一個強大的AI生態系統&#xff1b;憑借騰訊自研的大規模預訓練技術和先進的自然語言處理、計…

(自用)Java學習-5.13(Redis,OSS)

核心功能實現 1. 類別導航動態加載 前端實現&#xff1a; // 加載一級分類 $.ajax({url: /category/showFirstMenu?pid0,success: function(resp) {resp.forEach(item > {$(".index-menu").append(<li onmouseover"showSecondMenu(${item.id})">…

2025電工杯A題電工杯數學建模思路代碼文章教學:光伏電站發電功率日前預測問題

完整內容請看文章最下面的推廣群 已更新數據、思路和模型 問題1&#xff1a;基于歷史功率的光伏電站發電特性分析 建模與求解思路&#xff1a; 首先&#xff0c;需要收集光伏電站的歷史發電功率數據、地理位置信息&#xff08;經緯度、海拔、傾角等&#xff09;以及太陽輻照…

Visual Studio 調試中 PDB 與圖像不匹配

Visual Studio 調試中 PDB 與圖像不匹配 在使用 Visual Studio 進行本地或遠程調試時&#xff0c;很多開發者會遇到 PDB 加載失敗、符號不匹配的問題&#xff0c;甚至程序進程未退出&#xff0c;導致 .exe 文件無法成功覆蓋。本文詳細解析了從后臺進程清理、構建產物驗證、模塊…

WebRTC:實時通信的未來之路

WebRTC&#xff1a;實時通信的未來之路 目錄 WebRTC&#xff1a;實時通信的未來之路一、背景介紹二、使用方式三、前途展望 一、背景介紹 隨著互聯網的飛速發展&#xff0c;實時音視頻通信需求日益增長。傳統的音視頻通信多依賴于專有協議和插件&#xff08;如Flash、ActiveX等…

華為OD機試真題——猴子吃桃/愛吃蟠桃的孫悟空(2025B卷:200分)Java/python/JavaScript/C++/C語言/GO六種最佳實現

2025 B卷 200分 題型 本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析; 并提供Java、python、JavaScript、C++、C語言、GO六種語言的最佳實現方式! 本文收錄于專欄:《2025華為OD真題目錄+全流程解析/備考攻略/經驗分享》 華為OD機試真題《猴子…

【Java學習筆記】單例設計模式

單例設計模式 單例模式介紹 1. 所謂類的單例設計模式&#xff0c;就是采取一定的方法保證在整個的軟件系統中 &#xff08;1&#xff09;對某個類只能存在一個對象實例 &#xff08;2&#xff09;并且該類只提供一個取得對象實例的方法 2. 分類&#xff08;兩種方式&#xf…

vue實例 與組件實例

vue實例 與組件實例流程圖 &#x1f9e9; 基本解釋 ? Vue 實例 Vue 實例是通過 new Vue({…}) 創建的對象&#xff0c;是整個應用的根節點。 const vm new Vue({el: #app,data: { msg: Hello Vue } });是整個應用的起點。只有一個根 Vue 實例&#xff08;通常&#xff09;…

Hive 分桶(Bucketing)深度解析:原理、實戰與核心概念對比

一、分桶的意義&#xff1a;比分區更細的粒度管理 1.1 解決分區數據不均勻問題 分區的局限性&#xff1a;分區基于表外字段&#xff08;如時間字段&#xff09;劃分數據&#xff0c;但可能導致部分分區數據量過大&#xff0c;部分過小&#xff0c;無法進一步細化。 分桶的定…

pytest+allure+allure-pytest 報告輸出遇到的問題匯總

文章目錄 前言問題一&#xff1a;module allure has no attribute severity_level問題二&#xff1a;ERROR:file or directory not found: ‐vs問題三&#xff1a;生成的 html 報告是空的&#xff0c;明明有測試用例執行完成&#xff0c;但報告沒有顯示數據 前言 pytestallure…

升級node@22后運行npm install報錯 distutils not found

從node20升級到node22后&#xff0c;在運行 npm install 的時候報了很多 gyp 錯誤&#xff0c;其中包括 npm error npm error ModuleNotFoundError: No module named distutils。 問題原因是我在使用 brew install node22 的過程中自動把 python 升級到了 3.13。而 distutils …

IPD流程落地:項目任務書Charter開發

目錄 簡介 第一個方面&#xff0c;回答的是Why的問題。 第二點&#xff0c;要回答做什么的問題&#xff0c;也就是產品定義What的問題。 第三點就是要回答執行策略與計劃的問題&#xff0c;也就是How、When、Who的問題。 第四點是對上述這些分析的總結分析&#xff0c;要為…

Qt popup窗口半透明背景

半透明彈窗需要paintEvent()接口支持 方法一&#xff1a;使用setStyleSheet設置半透明樣式&#xff0c;如果是子窗口&#xff0c;則可注釋構建函數內屬性設置 class TranslucentWidget : public QWidget { public: explicit TranslucentWidget(QWidget *parent nullptr)…

Excel快捷鍵大全

Excel快捷鍵 工作表操作快速選擇區域快速跳轉/視圖操作單元格公式批量填充與編輯功能鍵打開/關閉工作簿 工作表操作 快捷鍵功能ShiftF11(或Alt→H→I→S)默認插入新工作表到當前工作表左側的左側Alt→E→L→Enter刪除當前工作表&#xff0c;刪除后不可銷&#xff0c;須謹慎操作…

SQLMesh 用戶定義變量詳解:從全局到局部的全方位配置指南

SQLMesh 提供了靈活的多層級變量系統&#xff0c;支持從全局配置到模型局部作用域的變量定義。本文將詳細介紹 SQLMesh 的四類用戶定義變量&#xff08;global、gateway、blueprint 和 local&#xff09;以及宏函數的使用方法。 一、變量類型概述 SQLMesh 支持四種用戶定義變量…