Я хотел бы попросить помощи относительно перехода CSS, который работает, но не работает, когда я обновляю страницу с отзывом ajax.
Я пытаюсь объяснить:
Я определил объект CSS компаса и стрелку этого компаса, которые должны быть ориентированы в компасе как ветер (направление ветра обновляется каждую секунду).
Я создал объект CSS, и стрелка медленно перемещается в исходное положение с эффектом перехода. Затем каждую секунду происходит обновление данных о ветре, и я использую Ajax-вызов для обновления страницы.
Учтите, что функция windDirUpdater возвращает обновленное направление ветра (json [‘now’]). Стрелка обновляет положение, но без перехода. Кто-нибудь может мне помочь, пожалуйста?
Ниже приведена часть кода, которую я сейчас использую для определения объекта CSS и вызова ajax.
Спасибо
Fabio
[email protected]
</style>
<table style="width:98%;margin:0 auto">
<tr>
<td>
<div class="compass" id="nowDirDiv">
<div class="direction">
<p style="font-size:1.2em"><?php echo $direction['nowwind']?> <?php echo unitFormatter($displayWindUnits)?><span><?php echo $direction['nowdir']?>° (<?php echo $direction['nowdirabb']?>) </span></p>
</div>
<div class="arrow x<?php echo $direction['nowdir']?>"></div>
</div></td>
</tr><script>
windDirupdater();
setInterval(function(){ windDirupdater(); }, (1*1000));function windDirupdater(){
$.ajax({
url : "homepage/blocks/windDir/windDirUpdater.php",
dataType : 'json',
success : function (json) {
html = '<div class="direction"><p style="font-size:1.2em">'+json['nowwind']+' <?php echo unitFormatter($displayWindUnits)?><span>'+json['nowdir']+'° ('+json['nowdirabb']+')'+'</span></p></div><div class="arrow x'+json['nowdir']+'"></div>';
$("#nowDirDiv").html(html);}
})
}</script>
Как я уже говорил выше, проблема в том, что вы меняете весь элемент, и, таким образом, больше нет возможности осуществить переход. Вместо этого вы должны просто изменить класс и сохранить элемент.
Вы можете обновить свою функцию успеха следующим образом:
success : function (json) {
$("#nowDirDiv .arrow").attr('class','arrow '+json['now']);
}
Также ваш CSS может быть упрощен следующим образом:
.compass .arrow {
transition: transform 3s;
}
.compass .arrow.nne {
transform: rotate(22.5deg);
}
.compass .arrow.ne {
transform: rotate(45deg);
}
.compass .arrow.ene {
transform: rotate(67.5deg);
}
.compass .arrow.e {
transform: rotate(90deg);
}
Других решений пока нет …