Статьи

Плавный скроллинг без jQuery

Делать одностраничные сайты – модный нынче тренд. Но всегда встает вопрос написания плавной анимации по разделам сайта. Можно конечно взять jQuery и какой-никакой готовый плагин. Но не для всех страниц есть смысл подключать «массивную» библиотеку, проще написать свое решение.

Напишем наше меню:

<ul class="menu">
    <li><a onclick="return app.scrollTo(this)" href="#news">Новости</a></li>
    <li><a onclick="return app.scrollTo(this)" href="#about">О нас</a></li>
    <li><a onclick="return app.scrollTo(this)" href="#contacts">Контакты</a></li>
</ul>

Дабы не писать метод добавления обработчика кликов по меню, я вписал вызов функции прямо в ссылку: onclick="return app.scrollTo(this)". Не самое лучшее, но сто процентов работающее решение.

В начале каждого раздела для любого элемента должен быть проставлен id с соответствующим значением, например id="news".

var app = {
    scrolled: 0,
    newPosition: 0,
    interval: null,
    speed: 0,

    scrollTo: function(el) {
        var link = el.getAttribute('href').replace('#', ''),
            anchor = document.getElementById(link);

        var location = 0;
        if (anchor.offsetParent) {
            do {
                location += anchor.offsetTop;
                anchor = anchor.offsetParent;
            } while (anchor);
        }
        location = location >= 0 ? location : 0;

        this.animateScroll(location);
        return false;
    },

    animateScroll: function(pos) {
        document.documentElement.scrollTop = 1;
        var element = (document.documentElement && document.documentElement.scrollTop) ? document.documentElement : document.body,
            start = element.scrollTop,
            change = pos - start,
            currentTime = 0,
            increment = 20,
            duration = 300;

        var animateScroll = function(){        
            currentTime += increment;
            var val = Math.easeInOutQuad(currentTime, start, change, duration);
            element.scrollTop = val;
            if(currentTime < duration) {
                setTimeout(animateScroll, increment);
            }
        };
        animateScroll();
    }
};      

Функция, реализующая ускоряющуюся и замедляющуюся в конце анимацию (не моя):

Math.easeInOutQuad = function (t, b, c, d) {
    t /= d/2;
    if (t < 1) return c/2*t*t + b;
    t--;
    return -c/2 * (t*(t-2) - 1) + b;
};
02 сентября 2014
8.1 тыс.
2 мин

MAMP, что делать, если не стартует Apache

Иногда случается так, что сервер MAMP отказывается запускать Apache. При этом MySQL работает вполне исправно. Понять почему это происходит очень трудно. Но решение есть!

  • Шаг первый.

Необходимо открыть Terminal (Терминал) и набрать /Applications/MAMP/Library/bin/apachectl start.

Там вы увидите уведомление об ошибке:

dyld: Symbol not found: _iconv
  Referenced from: /usr/lib/libmecabra.dylib
  Expected in: /Applications/MAMP/Library/lib/libiconv.2.dylib
 in /usr/lib/libmecabra.dylib
/Applications/MAMP/Library/bin/apachectl: line 80: 33793 Trace/BPT trap: 5       $HTTPD -k $ARGV
  • Шаг второй.

Все там же набираем cd /Applications/MAMP/Library/bin

Вы окажетесь в директории библиотек MAMP.

  • Шаг третий.

Переименовываем файл envvars вот такой командой mv envvars _envvars

  • Шаг четвертый.

Все работает, пользуйтесь.

29 августа 2014
9.7 тыс.
30 сек

Стокгольм, Швеция

В отсутствие работающей камеры в телефоне, фотографий из Стокгольма сделал мало.

Летом Стокгольм утопает в зелени.

25 августа 2014
4.2 тыс.
16 сек

Выезжающее меню на CSS

В продолжение примеров различных UI-элементов сайтов, которые можно сделать без Javascript, сегодня распишу как можно сделать выезжающее меню на чистом CSS.

И снова ДЕМО, для начала.

13 августа 2014
49.1 тыс.
3 мин

Affinity Designer – новый графический редактор для Mac OS

Мир графических редакторов на компьютерах пользователей и разработчиков чаще всего ограничивается Adobe Photoshop и его бесплатной альтернативой – Gimp. Недавно на рынке этих программ для Mac OS появился еще один игрок – Affinity Designer.

Пока проект находится в стадии разработки, но его бета-версия уже доступна для скачивания. Программа имеет ряд неоспоримых преимуществ:

  • скорость работы
  • поддержка большого количества форматов
  • возможность работы с векторными изображениями
  • экспорт в самые популярные форматы для веба

К ознакомлению рекомендуется.

08 августа 2014
4.2 тыс.
24 сек

Резиновая карусель на CSS

Карусели, несмотря на всю свою ущербность, продолжают отсаватся очень востребованным компонентом на тысячах сайтов. Чаще всего для из создания используется Javascript. В этой статье я попробую описать технику создания отзывчивой (резиновой, responsive) карусели на чистом CSS.

Для начала ДЕМО.

04 августа 2014
18.3 тыс.
4 мин

Ускоряем загрузку сайта

Любой веб-сайт с годами становится все больше и больше. Не смотря на рост скорости интернета, сайт все равно грузится все дольше и дольше. Что же делать?

02 августа 2014
4.1 тыс.
3 мин

Про Белавиа и билеты

Я, честно, считаю, что грамотно купленные билеты из Минска – куда-либо – в Минск не намного дороже лоукоста из Литвы. Например купленные мною места в Милан и обратно обошлись мне в 106 евро в одну сторону. Но у меня был багаж, еда, напитки и мне не надо было ехать в Литву, или Польшу, или Москву, или Киев. Билеты купил, кстати, у Белавиа.

Однако в Милан я не полетел по этому билету, поперся немного позже другим рейсом. В Италии пришел в аэропрт, говорю вот у меня билет на рейс Милан-Минск. А мне в ответ. Вы сюда не полетели и Белавиа отменила ваши билеты. Оба, мать их, потому что куплены они были вместе. Какого ***, хотелось бы спросить! Где в таком случае мои деньги? Какая перевозчику разница, зарегистрировался я на рейс или нет? Пусть самолет летит с пустым местом, все равно деньги за это уплачены.

Спасибо менеджеру, который работает в Air Canada и решил мою проблему, зарегистрировав меня на рейс. А белорусскому национальному перевозчику – стыд и позор.

P.S. Перелет Минск-Лондон, Лондон-Дублин, Дублин-Минск обошелся мне в прошлом году всего в 300 баксов. Умейте искать билеты.

25 июля 2014
3.3 тыс.
1 мин

Cypher – чемпион мира по Quake Live

© Cypher

Вчера белорус Алексей Cypher Янушевский выиграл чемпионат мира по игре Quake Live QuakeCon 2014, проходивший в Далласе, США.

Проиграв по ходу плей-оф всего одну карту.

Искренние поздравления!

21 июля 2014
3.6 тыс.
10 сек

Телефонное

То, что в блог не попало, но разбавило мой инстаграм.

21 июля 2014
2.6 тыс.
4 сек