Firefox, button and flexbox

Как интересно! Если вы хотите красиво расположить внутри кнопки несколько элементов, используя чудную технологию flexbox, то вас может ждать неприятный сюрприз. Внутри элемента button в Firefox 46.0.1 (в других не проверял) flexbox не работает :(
Как это хотелось бы видеть и как это выглядит в Хроме и даже в ИЕ11:
flexbox внутри button в Хроме
И как это в Firefox:
flexbox внтури кнопки в Firefox

See the Pen eZqEGy by Sergey Kirichenko (@oknechirik) on CodePen.

P.S. Для себя эту проблему решил, обернув содержимое кнопки div’ом.
P.P.S. И баг есть такой.

Update: проблема решена в Firefox 52!!!

Используете ли вы Flexbox?

Чудесная технология для верстки этот flexbox. Чем больше им пользуюсь, тем больше нравится.
На текущем проекте использую подход, позаимствованный у Angular Material. Angular Material вместо CSS-классов использует атрибуты. Вот и ваш покорный слуга решил использовать этот подход. Для задания свойства display: flex; flex-direction: row; атрибут mo-layout без значения, а для display: flex; flex-direction: column; тот же атрибут но со значением column. Примерно так:

[mo-layout] {
    display: flex;
    flex-direction: row;
}
[mo-layout="column"] {
    display: flex;
    flex-direction: column;
}

Flexbox

Чудесная технология. Позволяет решить практически любую задачу по разметке. Исключением будет разве что необходимость сверстать грид с табличной гибкой структурой. То есть, когда есть необходимость растяжения колонок на ширину самой широкой ячейки. Но для этого есть display: table;display: table-row;display: table-cell;. Сам я изучил flexbox по простому и исчерпывающему гайду на CSS-Tricks.

Ошибка Error: `libsass` bindings not found

Если при выполнении команды grunt serve вы получаете ошибку

Error: `libsass` bindings not found in C:\Users\Sergey\WebstormProjects\main-links\node_modules\grunt-sass\node_modules\nod
e-sass\vendor\win32-x64-46\binding.node. Try reinstalling `node-sass`?

запустите

npm rebuild node-sass

This command runs the npm build command on the matched folders. This is useful when you install a new version of node, and must recompile all your C++ addons with the new binary.

(Эта команда полезна после обновления nodejs до новой версии).
npm-rebuild

Home и End страницы при помощи мышки

Случайно обнаружил в Chrome на Windows 8, что если зажать на мышке правую кнопку (для правшей), ту, что вызывает контекстное меню, и повернуть колесико мышки, то вы окажетесь в конце или начале страницы, как если бы нажали клавишу End или Home соответственно. Классно, не знал. В Файрфоксе не так. Коллега сказал, что в хроме не убунте не работает так.

Скрол, что не останавливается

Если вы хотите, чтобы на устройствах с тачскрином скроллинг не останавливался, когда вы прекращаете скролить (отрываете палец от экрана), а продолжался ещё некоторое время, используйте свойство -webkit-overflow-scrolling.

У него есть два значения: auto и touch. И если вам нужно описанное выше поведение, используйте значение touch.

.box {
    -webkit-overflow-scrolling: touch;
}

ИЕ10+ и нелюбовь. Небольшой хак для CSS для IE10+

Моя нелюбовь как разработчика к Internet Explorer насчитывает уже много лет. Но уже достаточно долго я не ругался на него так, как за последние недели. В очередном проекте со навороченными интерфейсами ИЕ проявил себя во всей красе. И мне пришлось, как и много лет назад, искать хаки для ИЕ. Благо на проекте поддерживается ИЕ только в версиях от 10-го и выше. Найденный хак @media -ms-high-contrast очень облегчил мне жизнь:


@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
   /* стили только для IE10+ */
}

Update: Мне нужен был хак, чтобы разоброться с багами в ИЕ с flexbox. Вместо долгого и пространного описания дам ссылку на известные баги с flexbox’ом.

Разная скорость анимации при использовании css-transition на события mouseover и mouseout

Скажем, возникла необходимость, чтобы скорость анимации для CSS-transition была разная при событиях mouseover и mouseout. Пусть при наведении (mouseover) курсора прозрачность элемента меняется плавно, а при уходе с элемента (mouseout) прозрачность восстанавливается быстрее.
Для этого надо написать следующую последовательность CSS-правил:


.selector {
    opacity: 1;/*for example*/
    transition: opacity .5s ease-in-out;
}
.selector:hover {
    opacity: .5;/*for example*/
    transition: opacity 1s ease-in-out;
}

Время анимации указанное в первом правиле будет использовано при анимации на mouseout!
А время из второго правила — для анимации на mouseover!

P.S. Браузерные префиксы к transition можете добавить как вручную, так и используя пре- или пост-процессоры для CSS (grunt, gulp плагины etc).

Odesk и тест на знание

Зарегистрировался из любопытства на сервисе Odesk и указал навыки. Заглянул в профиль и увидел предложение пройти тесты, чтобы оценить указанное. Я уж грешным делом думал, что знаю CSS, мой инструмент и хлеб. Но вопросы, предложенные в тесте, оказались таковы, что я набрал только 3.25 из 5 баллов. Хоть это и выше среднего, но всё равно печально )
Надо подтянуть теоретические знание будет, а то использование GRUNT, SASS и LESS, сняв с меня много рутины с помощью миксинов, префиксеров и т.п., расслабило сильно. Учим мат.часть на зимних каникулах.