Показать сообщение отдельно
  #100 (permalink)  
Старый 09.02.2018, 18:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А причем тут код блока погоды?

В общем так, если так как на картинке отображать курс, то можно это решить, например, посредством пседоэлементов :before/:after. Так как цвет стрелок вверх/вниз разный, то структура json, которую отдает сервер не годится. Выгоднее возвращать признак роста/падения курса.

В файле current.php измените вот эти две строки кода, на указанные:

//было
'rate' => $usd_curr > $usd_prev ? '▲' : '▼'
//заменить на
'rate' => intval($usd_curr > $usd_prev)
//было
'rate' => $usd_prev > $last ? '▲' : '▼'
//заменить на
'rate' => intval($usd_prev > $last)


Добавить в файл стилей следующие правила:

/*общие правила для элементов отображающих курс*/
span[class|=rate] {
    display: block;
    text-align: center;
    padding: 3px 0;
    color: #000;
    font-weight: bold;
}

/*правила для знака доллара*/
span[class|=rate]:before {
    margin-right: 10px;
    content: "$";
}

/*общие правила для стрелок*/
span[class|=rate]:after {
    margin-left: 10px;
}

/*правила для стрелки вверх*/
.rate-1:after {
    content: "▲";
    color: #BC0101;
}

/*правила для стрелки вниз*/
.rate-0:after {
    content: "▼";
    color: #089301;
}


То есть, что будет в качестве стрелок и знака доллара задается в стилях, а какая стрелка будет отображена определяется именем класса, который определяется динамикой курса.

Код блока вывода:

<div id="usd" class="">
    <span id="current" class="rate-0"></span>
    <span id="previous" class="rate-0"></span>
</div>


JS код вывода:

$.getJSON("http://domain_1", function(data) {
    $.each(data, function(k, o) {
        $('#'+k).text(o.value).attr('class', function() {
            return this.className.replace(/\d/, o.rate)    
        })
    })
});


На что нужно заменить http://domain_1, думаю пояснять больше не надо.

Последний раз редактировалось laimas, 09.02.2018 в 18:17.
Ответить с цитированием