gpt4 book ai didi

css - 在 html 分离中实现消息和文本区域/输入布局

转载 作者:太空宇宙 更新时间:2023-11-04 07:12:43 25 4
gpt4 key购买 nike

我正在尝试实现类似于 slack 的消息呈现的东西,其中文本区域始终位于底部,而消息始终位于文本区域上方

使用 boostrap 所以这是 html

<div id="chat" class="container top-padding">
<div class="col-md-12" id="message-box">
<div class="card">
<div class="card-body">
Message 1
</div>
</div>

<div class="card">
<div class="card-body">
Message 2
</div>
</div>

...
</div>
<textarea class="form-control col-md-12" id="text-box"></textarea>
</div>

CSS

.top-padding {
padding-top: 10px;
}

#chat .card {
margin-bottom: 5px;
}

#text-box {
position: absolute;
bottom: 8px;
width: 88%;
}

#message-box {
height: calc(100% - 18px);
}

结果截图

enter image description here

这显示 position absolute 在 textarea 和底部 10px 它将位于底部,当您向下滚动时它将开始向上移动。还尝试将高度用作 calc(100% - 18px)message-box 以限制带有 card 的 div 的高度不会'也工作。

最佳答案

由于 message-box 没有 overflow 属性(它为其提供默认的 visible 属性),向下滚动将导致滚动父元素,即 chat 元素。这导致 textarea 向上移动。

您的问题的解决方案很简单,只需将 overflow-y: auto 添加到 message-box 元素即可。

更新:高度也必须从 (100% - 18px) 更改为 (100vh - 90px),注意变化%vh。查看下面更新的代码段:

<style>
.top-padding {
padding-top: 10px;
}

#chat .card {
margin-bottom: 5px;
}

#text-box {
position: absolute;
bottom: 8px;
width: 88%;
}

#message-box {
overflow-y: auto;
height: calc(100vh - 90px);
}
</style>
<html>
<head>
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.bundle.min.js" integrity="sha384-u/bQvRA/1bobcXlcEYpsEdFVK/vJs3+T+nXLsBYJthmdBuavHvAW6UsmqO2Gd/F9" crossorigin="anonymous"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
</head>
<body>
<div id="chat" class="container top-padding">
<div class="col-md-12" id="message-box">
<div class="card">
<div class="card-body">
Message 1
</div>
</div>

<div class="card">
<div class="card-body">
Message 2
</div>
</div>

<div class="card">
<div class="card-body">
Message 3
</div>
</div>

<div class="card">
<div class="card-body">
Message 4
</div>
</div>

<div class="card">
<div class="card-body">
Message 5
</div>
</div>

<div class="card">
<div class="card-body">
Message 6
</div>
</div>

<div class="card">
<div class="card-body">
Message 7
</div>
</div>

<div class="card">
<div class="card-body">
Message 8
</div>
</div>

<div class="card">
<div class="card-body">
Message 9
</div>
</div>

<div class="card">
<div class="card-body">
Message 10
</div>
</div>

<div class="card">
<div class="card-body">
Message 11
</div>
</div>

<div class="card">
<div class="card-body">
Message 12
</div>
</div>
</div>
<textarea class="form-control col-md-12" id="text-box"></textarea>
</div>
</body>
</html>

关于css - 在 html 分离中实现消息和文本区域/输入布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51024239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com