#javascript #css #html
#javascript #css #HTML
Вопрос:
При обновлении данных в div у меня работает эффект fade-in fade-out. Но я хочу изменить цвета во время выполнения функции fade-in fade-out, чтобы привлечь внимание к изменяющемуся значению.
Текст меняет цвет, но в нем всегда используется последний используемый цвет. Я не могу получить желаемый эффект изменения цвета
как я могу это сделать?
Это html-страница:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="result">Loading data. Please, wait...</div>
<script type="text/javascript">
if(typeof(EventSource) !== "undefined") {
var source = new EventSource("demo_sse.php");
source.addEventListener('message', function(e) {
if (!is_stopped) {
$('#result').css('color', 'green');
$('#result').fadeOut(1000);
$('#result').css('color', 'red');
$('#result').html(event.data "<br>");
$('#result').css('color', 'blue');
$('#result').fadeIn(1000);
}
}, false);
source.addEventListener('open', function(e) {
// Connection was opened.
//alert('Connection opened');
}, false);
source.addEventListener('close', function(e) {
// Connection was opened.
alert('Connection closed');
}, false);
source.addEventListener('error', function(e) {
if (e.readyState == EventSource.CLOSED) {
// Connection was closed.
alert('Connection closed');
}
}, false);
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
}
</script>
</body>
</html>
и это файл php:
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "retry: 4000n";
echo "data: The server time is: {$time}nn";
//error_log('XXXX');
flush();
?>
Ответ №1:
@PeterPam — давайте попробуем разбить это на действительно конкретный маленький кусочек головоломки.
Можете ли вы просто написать, к чему вы стремитесь?
- Данные исчезают
- в элемент вставляются новые данные
- цвет изменяется / или исчезает с ______ на _______
- и т.д…
Это помогло бы. : ) — вот попытка упростить до самого маленького примера.
<div id="result">starting thing</div>
<button>do it</button>
..
function doThings() {
$('#result')
.css('color', 'green')
.fadeOut(1000)
.css('color', 'red')
.html('other-thing')
.css('color', 'blue')
.fadeIn(1000)
; // (also) you can 'chain' them like this
}
$('button').on('click', doThings);
вот этот пример: https://jsfiddle.net/sheriffderek/8w21gfam /
и вот возможное направление: https://jsfiddle.net/sheriffderek/qmhf3vwL /
.fadeOut(duration, optionalCallback) {}
— ознакомьтесь с подробностями подписи функции. Вы можете использовать обратный вызов.
помогите конкретизировать ожидания анимации. : )
Комментарии:
1. ключ — это обратный вызов при затухании. Спасибо!