gpt4 book ai didi

javascript - 聊天 - 当元素到达底部时将绝对位置更改为相对位置

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:02 29 4
gpt4 key购买 nike

我创建了一个聊天,用户可以在其中输入文本的输入字段。当他输入文本并按下发送(或输入)时,文本位于输入字段上方。像这样: enter image description here

我想要的:我希望输入字段位于页面底部。我使用 position: absolute;

实现了这一点

enter image description here

但是当聊天有很多字段时,您无法向后滚动并查看聊天。

当我将位置设置为 position: relative; 时,您可以向后滚动聊天。

enter image description here

所以我的问题是:

如何将输入字段设置为始终位于底部,并且当聊天文本到达顶部时,用户应该能够滚动回顶部。

这是 HTML:

<div class="container custom_chat">
<div class="box box-warning direct-chat direct-chat-warning">
<div class="box-body">
<div class="direct-chat-messages">
<div class="direct-chat-msg" ng-repeat="message in listOfMessages track by $index" ng-class="{'right':!message.me}">
<div class="direct-chat-info clearfix" style="margin-top:20px;">
<span class="direct-chat-timestamp " ng-class="{'pull-left':message.me, 'pull-right':!message.me}">{{ message.timeMessage }}</span>
<span class="direct-chat-name" ng-class="{'pull-left':!message.me, 'pull-right':message.me}"><strong>{{ message.senderFirstName }}</strong></span>
</div>
<div class="direct-chat-text right">
<span style="word-break: break-all;">{{ message.content }}</span>
</div>
</div>
</div>
<div class="box-footer" style="margin-top:20px">
<form ng-submit="sendMessage()">
<div class="input-group">
<input type="text" placeholder="Type message..." autofocus="autofocus" class="form-control" ng-model="message.content" ng-enter="sendMessage()">
<span class="input-group-btn">
<button type="submit" class="btn btn-warning btn-flat">Send</button>
</span>
</div>
</form>
</div>
</div>
</div>
</div>

这是 CSS:

    .custom_chat {
position: relative;
bottom: 30px;
width: 40%;
margin-left: 33%;
}

我试过在这个 div 之外使用一个容器并使该容器position:relative;我不明白 offSet 如何在这里帮助我。如果您使用偏移量,请说明。

最佳答案

我认为您使用 position:absolute 的方法很好。但是你需要将 overflow:auto 设置为你的 chat-area

检查下面的代码示例。

var formatsApp = angular.module('FormatsApp', []);

formatsApp.controller('LinksController', function LinksController($scope) {
$scope.listOfMessages = ["asdasd"]
$scope.message = "";
$scope.sendMessage = function(x) {
$scope.listOfMessages.push($scope.message)
}
});
.direct-chat-messages,
.box-footer {
position: absolute;
bottom: 30px;
width: 40%;
margin-left: 33%;
}

.direct-chat-messages {
overflow: auto;
max-height: 100%;
}

body {
height: 400px;
}
<!DOCTYPE html>
<html ng-app="FormatsApp" ng-controller="LinksController">

<head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js"></script>

<meta charset="utf-8" />
</head>

<body>

<div class="container custom_chat">
<div class="box box-warning direct-chat direct-chat-warning">
<div class="box-body">
<div class="direct-chat-messages">
<div class="direct-chat-msg" ng-repeat="message in listOfMessages track by $index" ng-class="{'right':!message.me}">
<div class="direct-chat-info clearfix" style="margin-top:20px;">
<span class="direct-chat-timestamp " ng-class="{'pull-left':message.me, 'pull-right':!message.me}">{{ message }}</span>
<span class="direct-chat-name" ng-class="{'pull-left':!message.me, 'pull-right':message.me}"><strong></strong></span>
</div>
<div class="direct-chat-text right">
<span style="word-break: break-all;">{{ message.content }}</span>
</div>
</div>
</div>
<div class="box-footer" style="margin-top:20px">
<form ng-submit="sendMessage()">
<div class="input-group">
<input type="text" placeholder="Type message..." autofocus="autofocus" class="form-control" ng-model="message" ng-enter="sendMessage(this)">
<span class="input-group-btn">
<button type="submit" class="btn btn-warning btn-flat">Send</button>
</span>
</div>
</form>
</div>
</div>
</div>
</div>
</body>

</html>

关于javascript - 聊天 - 当元素到达底部时将绝对位置更改为相对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45976711/

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