登录

仿chatGPT或chatPDF的前端界面布局,css实现对话聊天布局代码,响应式左右分栏布局(附完整源代码)

chatPDF或者chatGPT的界面挺简洁的,就是一个左侧的列表以及右侧的对话列表,现在使用css实现这样的布局

充分运用了flex布局方式实现,左右分栏,以及对话形式展示效果

下面是效果图:

5f26a7b15d4cb3f05e2500320d9b6bf.png


在手机设备看就隐藏左侧,右侧100%适应

3b89b51a54dc70077990b19925fea17.png

 下面就是html和css的布局代码

<style>
    .chatpdf{
        display: flex;
        height: 100vh;
        flex-direction: row;
    }
    .chatpdf .pannel{
        width: 255px;
        background-color: rgb(0, 21, 41);
    }
    .chatpdfBox{
        display: flex;
        flex-direction: column;
        flex: 1;
        background: linear-gradient(to bottom right,#dbe6fb, #f3f4f8);
        background-size: cover;
        background-attachment: fixed;
    }
    .chatpdfLine{
        flex: 1;
        width: 100%;
        max-width: 1000px;
        margin: 0 auto;
        overflow-y: auto;
    }
    .chatpdfRow{
        margin: 20px 10px;
        display: flex;
    }
    .chatpdfAsk{
        justify-content: flex-end;
    }
    .chatpdfContent{
        display: inline-block;
        border-radius: 8px;
        padding: 6px 12px;
        max-width: 500px;
        background: rgba(255, 255, 255, 0.6);
        font-size: 14px;
        box-shadow:  0px 0.3px 0.9px rgba(0, 0, 0, 0.12), 0px 1.6px 3.6px rgba(0, 0, 0, 0.16);
    }
    .chatpdfAsk .chatpdfContent{
        background: linear-gradient(90deg, #2870EA 10.79%, #1B4AEF 87.08%);;
        color: #fff;
    }
    .chatpdfArea{
        display: flex;
        padding: 5px 10px;
        max-width: 1000px;
        margin: 0 auto;
        width: 100%;
    }
    .chatpdfArea textarea{
        flex: 1;
        border-color: #d9d9d9;
        resize: none;
        outline: none;
        padding: 0px 5px;
        height: 35px;
        line-height: 30px;
        color: #404040;
        border-radius: 10px 0px 0px 10px;
        transition: all 0.3s,height 0s;
    }
    .chatpdfArea textarea:hover{
        border-color: #4096ff;
    }
    .chatpdfArea button{
        height: 35px;
        color: #fff;
        background: linear-gradient(90deg, #2870EA 10.79%, #1B4AEF 87.08%);
        box-shadow: 0 2px 0 rgba(5, 145, 255, 0.1);
        border: none;
        padding: 0 20px;
        border-radius: 0px 8px 8px 0px;
        cursor: pointer;
    }
    .chatpdfArea button:hover{
        background-color: #388aff;
    }
    .chatpdf .fileTitle{
        background-color: #1677ff;
        color: #fff;
        border-radius: 8px;
        padding: 10px;
        margin: 10px;
        font-size: 14px;
        cursor: pointer;
    }
    @media (max-width: 768px) {
        .pannel{
            display: none;
        }
    }</style>
<div class="chatpdf">
        <div class="pannel">
            <div class="fileList">
                <div class="fileTitle">新浪网技术(中国)有限公司.docx</div>
                <div class="fileTitle">新浪网技术(中国)有限公司.pdf</div>
                <div class="fileTitle">新浪网技术(中国)有限公司.xlsx</div>
            </div>
        </div>
        <div class="chatpdfBox">
            <div class="chatpdfLine">
                <div class="chatpdfRow">
                    <div class="chatpdfContent">我是知识库机器人,一个专门响应人类指令的大模型</div>
                </div>
                <div class="chatpdfRow">
                    <div class="chatpdfContent">我服务于人类,致力于让生活更美好</div>
                </div>
                <div class="chatpdfRow">
                    <div class="chatpdfContent">我是知识库机器人,一个专门响应人类指令的大模型</div>
                </div>
                <div class="chatpdfRow chatpdfAsk">
                    <div class="chatpdfContent">自建私有数据知识库 &middot; 与知识库AI聊天</div>
                </div>
            </div>
            <div class="chatpdfArea">
                <textarea></textarea>
                <button>
                    <svg t="1682141916531" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1271" width="16" height="16"><path d="M0 1024l106.496-474.112 588.8-36.864-588.8-39.936L0 0l1024 512z" fill="#ffffff" p-id="1272"></path></svg>
                </button>
            </div>
        </div>
    </div>