DataLife Engine > Версия для печати > Цифровые часы на jQuery и CSS3

Все началось тогда, когда мы наткнулись на этот снимок в dribbble. Нам тут же захотелось преобразовать это в рабочие часы и поделиться ими с читателями. Если вам хочется узнать, как сделать это, продолжайте читать!

Разметка

Здесь вам не понадобится много HTML-кода. Так как большая часть – названия дней недели и код цифр – генерируется динамически. Представляем вам код, который вам понадобится для того, чтобы использовать часы:

index.html


    
        
        
        
        
    

Главный элемент, div #clock, содержит .display, который в свою очередь содержит список дней недели, ярлык AM/PM, иконку будильника и время. Давайте рассмотрим сгенерированную разметку для одной из цифр:


    
    
    
    
    
    
    

Элемент .digits будет содержать 6 таких div’ов со span-элементами – по одному на каждую цифру. Как видно из представленного выше фрагмента, эти div’ы получают класс от zero до nine (подробнее об этом во второй части), и содержат 7 span-элементов с уникальными классами. Эти span-элементы представляют собой часть цифр как в старых цифровых часах: 1373381447_1372841874_the_digits_explained-1433826 Все они полностью оформлены при помощи CSS и уровень непрозрачности (opacity) по умолчанию выставлен на 0. Класс, заданный к их родительскому div-элементу, это именно то, что делает их видимыми. Предлагаем вам CSS-код для ноля:

assets/css/styles.css

/* 0 */

#clock .digits div.zero .d1,
#clock .digits div.zero .d3,
#clock .digits div.zero .d4,
#clock .digits div.zero .d5,
#clock .digits div.zero .d6,
#clock .digits div.zero .d7{
    opacity:1;
}

Все отделения видны за исключением центрального (потому что иначе это будет 8). Мы добавили свойство CSS3 transition ко всем этим span-элементам, которое позволит нам анимировать уровень непрозрачности при смене цифр.В файле также есть множество другого кода, но о нем мы вам рассказывать сейчас не будем. Нам кажется, что лучше всего изучать CSS посредством редактирования в реальном времени при помощи Firebug, Inspector в Chrome, либо при помощи инструментов разработчиков в вашем любимом браузере. 1373381140_1372841874_the_dark_theme-4433591

jQuery-код

Чтобы наши часы заработали, нам нужно использовать jQuery, чтобы сгенерировать разметку для каждой цифры, и выставить таймер на обновление классов каждую секунду. Чтобы облегчить нашу жизнь, мы воспользуемся библиотекой moment.js, чтобы компенсировать отсутствие родных функций javascript – date и time.

assets/js/script.js

$(function(){

    // Cache some selectors

    var clock = $('#clock'),
        alarm = clock.find('.alarm'),
        ampm = clock.find('.ampm');

    // Map digits to their names (this will be an array)
    var digit_to_name = 'zero one two three four five six seven eight nine'.split(' ');

    // This object will hold the digit elements
    var digits = {};

    // Positions for the hours, minutes, and seconds
    var positions = [
        'h1', 'h2', ':', 'm1', 'm2', ':', 's1', 's2'
    ];

    // Generate the digits with the needed markup,
    // and add them to the clock

    var digit_holder = clock.find('.digits');

    $.each(positions, function(){

        if(this == ':'){
            digit_holder.append('');
        }
        else{

            var pos = $('');

            for(var i=1; i