Я создаю приложение чата и хочу, чтобы новое сообщение отображалось в самом низу, а старые сообщения должны отображаться поверх нового сообщения.Я новичок в CSS, поэтому я нашел этот пример в Интернете, который использует свойства CSS transform
и direction
, вращая контейнер chatArea
в правом направлении и поворачивая сообщения в левом направлении.
Хотя это работает, это кажется мне излишним, и его трудно поддерживать, потому что ориентация этих элементов теперь "вверх ногами".Например, поскольку chatArea
div был повернут сейчас для установки border-top
свойства CSS, мне действительно нужно установить свойство border-bottom
.
Поэтому мне было интересно, есть ли более простое решение.Сейчас я добавляю новое сообщение к старым сообщениям, используя jQuery
, и я перепробовал множество комбинаций с prepend/append/prependTo
, и это единственное сработавшее, но я не уверен, какая комбинация до / добавления плюс прощеCSS будет работать.
Это код jQuery
, который нужно добавить:
let $messages = jQuery('.messages');
let $message = jQuery('<li class="list-group-item"></li>');
$message.append('<p><strong>' + message.name + ' ' + tm + '</strong></p>');
$message.append('<p>' + message.text + '</p>');
$message.hide().fadeIn(FADE_TIME);
$message.prependTo($messages);
Это HTML:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Socket.IO</title>
<link rel="stylesheet" href="./css/bootstrap4.1.min.css">
<link rel="stylesheet" href="./css/styles.css">
</head>
<body>
<div class="container">
<div id="conversation" class="row">
<div class="col-md-6 offset-md-3 card">
<a href="./index.html">Change Settings</a>
<h1 class="room-title text-center"></h1>
<div class="chatArea">
<ul class="messages list-group">
<!-- Messages end up here! -->
</ul>
</div>
<form id="message-form">
<div class="form-group">
<input type="text" name="message" class="form-control"/>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary"/>
<button type="button" id="showUsersButton" class="btn btn-info">Show room users</button>
</div>
</form>
</div>
</div>
</div>
<script src="js/jquery-3.3.1.min.js"></script>
<script src="js/socket.io-1.3.7.js"></script>
<script type="module" src="js/app.js"></script>
<script src="js/moment-2.22.1.js"></script>
<script type="module" src="js/queryParams.js"></script>
</body>
</html>
, и это CSS для достижениявращение:
.messages p {
height: 100%;
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
direction: ltr;
}
.chatArea {
height: 500px;
overflow-y: scroll;
padding-bottom: 60px;
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
direction: rtl;
border-bottom: 1px solid #ccc;
}