#заметка дня
Вы наверняка заметили, что призывы отказаться от пикселей звучат всё чаще и чаще. Я не буду сейчас описывать плюсы и минусы перехода на относительные единицы, я покажу простейшее решение.
Любителям шлюзов будет другая статья. Хотите — обсудим в чате.
vw+vh
Итак, вам кровь из носу нужно, чтобы сайт был абсолютно резиновым и реагировал на изменение размера окна пропорционально. Прочитали, что нужно использовать
1vw это 1% от ширины видимой области экрана включая скроллбар, 1vh от, соответственно, высоты. Я рекомендую
Теперь такой простой, но такой сложный секрет: чтобы ваши блоки изменяли размер пропорционально изменению ширины или высоты окна, нужно использовать что-то одно.
Единицы
Второе: если уж взялись, то используйте их везде: размер блоков, шрифта, отступы, поля, базис – всё должно быть или в v-единицах (или в процентах, кто понимает). Это же касается, впрочем, и
Третье: чтобы не сидеть с калькулятором (знаю таких кадров лично), я предлагаю воспользоваться следующей функцией для SCSS:
Пример:
100px это ширина блока на макете 1920px. Не при разрешении экрана в 1920 по ширине, а на вашем макете от дизайнера. То есть: 100px ➗ 1920px ✖️ 100vw, по формуле простых процентов.
Многих смущает функция strip-unit. Мол, там же единица получается в знаменателе.
Нет, ребята. Не единица. По правилам SCSS 20px ➗ 1 = 20px, а 20px ➗ 1px = 20. Это простая алгебра дробей. Ну и соответственно, 20px ✖️ 100vw не имеет никакого смысла, а 20 ✖️ 100vw — имеет. Не умножайте сантиметры на килограммы (и не смейтесь над мемами с учителями).
Четвёртое: не забывайте про скроллбар, он ненулевой ширины, но при расчёте v-единиц не учитывается.
Пятое: сайт, свёрстанный таким образом, перестаёт зумиться на десктопах. Зато на мобильных – просто сказка, горячо рекомендую.
И шестое: в какой-то момент сайт станет просто мелким :)
rem
С
Пример:
Почему 16? Потому что 16px это размер шрифта тега
Хотя ладно, тут кому как.
Главное: не ставьте никогда размер шрифта
К плюсам
Второй плюс: когда дизайнер неопытный, он запросто может вам прислать макет в 1440px, например. А большинство экранов имеют размер 1280 и 1366. Не каждый макет можно аккуратно адаптировать. И вот тут магия быстрого изменения масштаба очень нужна. Меняете себе размер шрифта по медиа-запросам и готово.
Минусы – зум будет работать, но не очень адекватно.
Шлюзы,
Краткий вывод
Верстать весь сайт в
Когда верстаете в px (всё же они проще), шрифт вполне можно указывать в
#css #em #rem #vh #vw
Вы наверняка заметили, что призывы отказаться от пикселей звучат всё чаще и чаще. Я не буду сейчас описывать плюсы и минусы перехода на относительные единицы, я покажу простейшее решение.
Любителям шлюзов будет другая статья. Хотите — обсудим в чате.
vw+vh
Итак, вам кровь из носу нужно, чтобы сайт был абсолютно резиновым и реагировал на изменение размера окна пропорционально. Прочитали, что нужно использовать
vw
(viewport width) или vh
(viewport height).1vw это 1% от ширины видимой области экрана включая скроллбар, 1vh от, соответственно, высоты. Я рекомендую
vw
, ибо чаще всего, ширина макета это константа (я про макеты! не про результат, ниже поясню).Теперь такой простой, но такой сложный секрет: чтобы ваши блоки изменяли размер пропорционально изменению ширины или высоты окна, нужно использовать что-то одно.
Единицы
vh
и vw
– разные по определению! Прямоугольник 10vw на 10vh это не квадрат! Если вы изменяете ширину окна, высота-то остаётся постоянной. И наоборот. Второе: если уж взялись, то используйте их везде: размер блоков, шрифта, отступы, поля, базис – всё должно быть или в v-единицах (или в процентах, кто понимает). Это же касается, впрочем, и
rem
.Третье: чтобы не сидеть с калькулятором (знаю таких кадров лично), я предлагаю воспользоваться следующей функцией для SCSS:
$base-width: 1920;
@function strip-unit($num) {
@return $num / ($num * 0 + 1);
}
@function vw($num) {
@return strip-unit($num) / $base-width * 100vw;
}
Пример:
.my-block {
width: vw(100px);
padding: vw(20px);
}
100px это ширина блока на макете 1920px. Не при разрешении экрана в 1920 по ширине, а на вашем макете от дизайнера. То есть: 100px ➗ 1920px ✖️ 100vw, по формуле простых процентов.
Многих смущает функция strip-unit. Мол, там же единица получается в знаменателе.
Нет, ребята. Не единица. По правилам SCSS 20px ➗ 1 = 20px, а 20px ➗ 1px = 20. Это простая алгебра дробей. Ну и соответственно, 20px ✖️ 100vw не имеет никакого смысла, а 20 ✖️ 100vw — имеет. Не умножайте сантиметры на килограммы (и не смейтесь над мемами с учителями).
Четвёртое: не забывайте про скроллбар, он ненулевой ширины, но при расчёте v-единиц не учитывается.
Пятое: сайт, свёрстанный таким образом, перестаёт зумиться на десктопах. Зато на мобильных – просто сказка, горячо рекомендую.
И шестое: в какой-то момент сайт станет просто мелким :)
rem
С
rem
(root em), единый размер шрифта корневого элемента, html
, верны ровно всё те же утверждения и применима всё та же формула:$base-font: 16;
@function rem($num) {
@return strip-unit($num) / $base-font * 1rem;
}
Пример:
.my-block {
width: rem(100px);
padding: rem(20px);
}
Почему 16? Потому что 16px это размер шрифта тега
html
по-умолчанию в любом браузере. Не надо ставить 62.5% на html
в надежде получить 10px, я вас умоляю! Да, числа выглядят красиво, но в вашу логику кому-то ещё въехать предстоит. Что понятнее, 10rem из 62.5% или rem(100px)? Хотя ладно, тут кому как.
Главное: не ставьте никогда размер шрифта
html
в px, вы потеряете всю красоту доступности rem
для людей, которые изменяют размер шрифта браузера по-умолчанию.К плюсам
rem
точно можно отнести возможность изменять размер всего сайта простым переключением размера шрифта. Например, на сайте Минэкономразвития РФ так сделана панель для слабовидящих (но ошибка с 16px в корне присутствует). Второй плюс: когда дизайнер неопытный, он запросто может вам прислать макет в 1440px, например. А большинство экранов имеют размер 1280 и 1366. Не каждый макет можно аккуратно адаптировать. И вот тут магия быстрого изменения масштаба очень нужна. Меняете себе размер шрифта по медиа-запросам и готово.
Минусы – зум будет работать, но не очень адекватно.
Шлюзы,
em
, правильную резину и проценты я рассмотрю как-нибудь позже.Краткий вывод
Верстать весь сайт в
vh
и vw
имеет смысл только если у вас реально что-то сложное, с большим количеством просчитанных заранее взаимодействий. Когда верстаете в px (всё же они проще), шрифт вполне можно указывать в
rem
, а отступы — в em
.#css #em #rem #vh #vw
👍34🤔8❤7
#уточнение дня
В чате к предыдущей заметке задали вопрос по поводу функции strip-unit: "Почему сложение, к примеру, 50px * 0 + 1 = 1px, а не просто 1?"
Господа, ну так работает SCSS. Вы имеете полное право складывать 2px + 2 и получать 4px: https://codepen.io/alinaki/pen/OJQzvzV
Это не сложение яблок с единицей, как в алгебре. Это увеличение числа яблок на одно яблоко.
Ссылка на документацию: https://sass-lang.com/documentation/operators/numeric
А вот делить пиксели на ремы вы права не имеете, потому что никакого ожидаемого смысла в этом нет. Как и складывать, указывая разные единицы:
Зачем я умножаю на 0? Потому что strip-unit должна быть независимой от единиц измерения. 0px + 1 = 1px, 0vw + 1 = 1vw. А в знаменателе мне нужно полное соответствие, чтобы алгебраически px и vw уничтожить, получив соотношение числом.
#css #scss
В чате к предыдущей заметке задали вопрос по поводу функции strip-unit: "Почему сложение, к примеру, 50px * 0 + 1 = 1px, а не просто 1?"
Господа, ну так работает SCSS. Вы имеете полное право складывать 2px + 2 и получать 4px: https://codepen.io/alinaki/pen/OJQzvzV
Это не сложение яблок с единицей, как в алгебре. Это увеличение числа яблок на одно яблоко.
Ссылка на документацию: https://sass-lang.com/documentation/operators/numeric
@debug 100px + 50; // 150px
@debug 4s * 10; // 40s
А вот делить пиксели на ремы вы права не имеете, потому что никакого ожидаемого смысла в этом нет. Как и складывать, указывая разные единицы:
@debug 100px + 10s;
// ^^^^^^^^^^^
// Error: Incompatible units px and s.
Зачем я умножаю на 0? Потому что strip-unit должна быть независимой от единиц измерения. 0px + 1 = 1px, 0vw + 1 = 1vw. А в знаменателе мне нужно полное соответствие, чтобы алгебраически px и vw уничтожить, получив соотношение числом.
#css #scss
👍11
#фишка дня
Вы могли читать в разных учебниках или слышать на разных курсах по GIT, что GIT — это "машина времени" или "бесконечная отмена". Так-то оно так, но...
Но что если вы что-то сохранили раз, два, три, десять... захотели отменить одно из старых изменений — а коммитов-то не было?
Wes Bos подсказывает, что на помощь придёт инструмент Timeline в VS Code!
Ну и собственно фишка эта появилась в VS Code в начале апреля. В Твиттере разработчиков есть большой разбор нововведений, и этого тоже: https://twitter.com/code/status/1511463346167496706
Надеюсь, вам не жалко нескольких десятков килобайт на диске ради возможности путешествий во времени :)
P. S. из чата пишут, что в в различных IDE от JetBrains тоже имеется Local History. И хранит он изменения прилично долго. Так что, конечно, фишка не уникальна.
#vscode #feature #timeline
Вы могли читать в разных учебниках или слышать на разных курсах по GIT, что GIT — это "машина времени" или "бесконечная отмена". Так-то оно так, но...
Но что если вы что-то сохранили раз, два, три, десять... захотели отменить одно из старых изменений — а коммитов-то не было?
Wes Bos подсказывает, что на помощь придёт инструмент Timeline в VS Code!
Ну и собственно фишка эта появилась в VS Code в начале апреля. В Твиттере разработчиков есть большой разбор нововведений, и этого тоже: https://twitter.com/code/status/1511463346167496706
Надеюсь, вам не жалко нескольких десятков килобайт на диске ради возможности путешествий во времени :)
P. S. из чата пишут, что в в различных IDE от JetBrains тоже имеется Local History. И хранит он изменения прилично долго. Так что, конечно, фишка не уникальна.
#vscode #feature #timeline
👍14🔥4
#такое дня
Кто хочет на ночь глядя написать всё, что думает о канале в комментарии?
Чего не хватает? Чего нет совсем? Чего вроде ок, но охота побольше? А чего — поменьше...
Не стесняйтесь. А то что-то на мемы вы были жадные :(
Кто хочет на ночь глядя написать всё, что думает о канале в комментарии?
Чего не хватает? Чего нет совсем? Чего вроде ок, но охота побольше? А чего — поменьше...
Не стесняйтесь. А то что-то на мемы вы были жадные :(
🔥3
#фишка дня
Я неоднократно выкладывал разные SVG-инструменты и генераторы. Вот, например: https://t.iss.one/htmlshit/447
У многих есть одно общее: генератор блямб. Или капель. Я честно не уверен, как это должно называться по-русски. Blob, короче.
Почему-то эти капли попали в тренды и пока там держатся. Но совсем не обязательно делать их на SVG.
CSS тоже отлично справляется.
На чем это основано? На геометрии кривых :) Эллипсов, точнее. Через слэш задаются вертикальный и горизонтальный радиусы эллипсов соответственно. А дальше — математика спряжения кривых. Вот тут подробнее: https://www.w3.org/TR/css-backgrounds-3/#border-radius
А тут — попопулярнее: https://www.sitepoint.com/setting-css3-border-radius-with-slash-syntax/
Кто смелый анимировать их? :)
#css #blob
Я неоднократно выкладывал разные SVG-инструменты и генераторы. Вот, например: https://t.iss.one/htmlshit/447
У многих есть одно общее: генератор блямб. Или капель. Я честно не уверен, как это должно называться по-русски. Blob, короче.
Почему-то эти капли попали в тренды и пока там держатся. Но совсем не обязательно делать их на SVG.
CSS тоже отлично справляется.
На чем это основано? На геометрии кривых :) Эллипсов, точнее. Через слэш задаются вертикальный и горизонтальный радиусы эллипсов соответственно. А дальше — математика спряжения кривых. Вот тут подробнее: https://www.w3.org/TR/css-backgrounds-3/#border-radius
А тут — попопулярнее: https://www.sitepoint.com/setting-css3-border-radius-with-slash-syntax/
Кто смелый анимировать их? :)
#css #blob
👍7❤4
#фишка дня
Давайте что-нибудь наболевшее.
Вот, например, если установить атрибут
Удобно, если ваша компания называется "Clean Beam" или ещё какая-то подобная глупость.
И вообще, не забывайте на
#html #attribute #translate
Давайте что-нибудь наболевшее.
Вот, например, если установить атрибут
translate="no"
на тег, содержащий название компании, то он не подвергнется автоматическому переводу (типа Google Translate): https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/translateУдобно, если ваша компания называется "Clean Beam" или ещё какая-то подобная глупость.
И вообще, не забывайте на
html
ставить атрибут lang
с верным кодом языка. Вы не представляете, как бесит, когда финские и шведские сайты это игнорируют, и переводчик иногда отказывается работать.#html #attribute #translate
👍36
#баг дня
Google весьма знамениты тем, что у них на поток поставлена палочная система.
Если коротко, для достижения следующего грейда, тебе надо внедрить инновацию. Напоминает СССР, не правда ли?
Один сначала вводит инновацию, второй — проводит рационализацию. Оба получили премию.
Вспомним десяток обновлений интерфейса GMail.
Итак, в чём же конкретно проблема: https://issuetracker.google.com/issues/232060574
Есть такой язык и среда — Google Apps Script. Это JavaScript, на самом деле. Используется для написания приложений GSuite (расширения к формам, доксам и таблицам).
У него одновременно поддерживаются две системы развёртывания (деплоя): legacy и текущая.
Мы сидим пока на legacy, поскольку в текущей полно нововведений, несовместимых с жизнью.
Но за каким-то лешим один из сотрудников Google решил провести инновацию и заменил нативные HTML-селекты на самодельные в стиле Material UI.
И естественно, не обошлось без косяка: рендер выпадающей части происходил за пределами самого селекта, через портал. И отступы считались в зависимости от числа элементов в дропдауне.
А у нас их там 2000. Естественно, меню улетело за пределы экрана.
Зачем было трогать легаси-среду? Вопрос риторический.
Браво, Google. Браво. Зато инновация внедрена и премия получена
#google #bug
Google весьма знамениты тем, что у них на поток поставлена палочная система.
Если коротко, для достижения следующего грейда, тебе надо внедрить инновацию. Напоминает СССР, не правда ли?
Один сначала вводит инновацию, второй — проводит рационализацию. Оба получили премию.
Вспомним десяток обновлений интерфейса GMail.
Итак, в чём же конкретно проблема: https://issuetracker.google.com/issues/232060574
Есть такой язык и среда — Google Apps Script. Это JavaScript, на самом деле. Используется для написания приложений GSuite (расширения к формам, доксам и таблицам).
У него одновременно поддерживаются две системы развёртывания (деплоя): legacy и текущая.
Мы сидим пока на legacy, поскольку в текущей полно нововведений, несовместимых с жизнью.
Но за каким-то лешим один из сотрудников Google решил провести инновацию и заменил нативные HTML-селекты на самодельные в стиле Material UI.
И естественно, не обошлось без косяка: рендер выпадающей части происходил за пределами самого селекта, через портал. И отступы считались в зависимости от числа элементов в дропдауне.
А у нас их там 2000. Естественно, меню улетело за пределы экрана.
Зачем было трогать легаси-среду? Вопрос риторический.
Браво, Google. Браво. Зато инновация внедрена и премия получена
#google #bug
👍10
#статья дня
Роман Шамин из «Злых марсиан» (Андрей Ситник оттуда, если вы не в курсе кто это — shame on you) о том, как минимальными усилиями со стороны дизайнера добиться максимальной доступности интерфейсов.
https://teletype.in/@romanshamin/a11y-for-designers
Крайне рекомендую. Может многие пункты покажутся банальными и простыми, но почему-то про них часто забывают.
#design #a11y
Роман Шамин из «Злых марсиан» (Андрей Ситник оттуда, если вы не в курсе кто это — shame on you) о том, как минимальными усилиями со стороны дизайнера добиться максимальной доступности интерфейсов.
https://teletype.in/@romanshamin/a11y-for-designers
Крайне рекомендую. Может многие пункты покажутся банальными и простыми, но почему-то про них часто забывают.
#design #a11y
Teletype
Доступность в дизайне
20% усилий дизайнера, дающие 80% доступности экранных интерфейсов
👍14
#такое дня
Что-то я замотался и пропустил важную дату: каналу вчера стукнуло 4 года 🎉
Я его начинал под названием “Будни верстальщика” и изначально планировал вести в Твиттер-формате с забавными рабочими моментами и просто какими-то цитатами. Но быстро стало понятно, что Телега не про это.
Потом я начал модерить чат @css_ru и заметил, что вопросы у людей одни и те же. На канале стали появляться первые заметки и линкдампы.
Спустя некоторое время GeekBrains включили меня в свою email-рассылку и за сутки присоединилось больше 2000 человек. Это было похоже на взрыв.
Но поскольку в Телеге почти нет органического продвижения, а славы охота — я начал покупать и ставить рекламу. Да, тщеславие — оно такое, выражается админским сленгом “фулл реинвест”.
Но кто бы ты ни был, дорогой подписчик: пришедший из тех тёмных времён чата или по рекламе — я каждого ценю и спасибо, что вы со мной.
Всем lowercase hex, котаны!
Что-то я замотался и пропустил важную дату: каналу вчера стукнуло 4 года 🎉
Я его начинал под названием “Будни верстальщика” и изначально планировал вести в Твиттер-формате с забавными рабочими моментами и просто какими-то цитатами. Но быстро стало понятно, что Телега не про это.
Потом я начал модерить чат @css_ru и заметил, что вопросы у людей одни и те же. На канале стали появляться первые заметки и линкдампы.
Спустя некоторое время GeekBrains включили меня в свою email-рассылку и за сутки присоединилось больше 2000 человек. Это было похоже на взрыв.
Но поскольку в Телеге почти нет органического продвижения, а славы охота — я начал покупать и ставить рекламу. Да, тщеславие — оно такое, выражается админским сленгом “фулл реинвест”.
Но кто бы ты ни был, дорогой подписчик: пришедший из тех тёмных времён чата или по рекламе — я каждого ценю и спасибо, что вы со мной.
Всем lowercase hex, котаны!
🎉72👍12🔥3👏2❤1
#статья дня
Введение в SVG-анимации для верстальщиков
На моей памяти Хабрахабр умирал уже раза три.
Естественно, он умер, когда меня запихали в ридонли. Но речь не об этом.
На нём всё ещё выходят шикарные статьи, например, вроде этой: https://habr.com/ru/post/667116/
Очень хорошо написано, с небольшим, но достаточным, экскурсом в историю. Разобраны критичные отличия от CSS-анимаций. Уделено время правильному экспорту из редакторов.
В общем, мне такой в своё время очень не хватало, я бы возился меньше с, казалось бы, простыми анимациями вроде этой: https://codepen.io/alinaki/pen/qoPRRE или этой https://codepen.io/alinaki/pen/oNXjEzz (впрочем, спиннер не разбирал только ленивый).
#svg #css #animate
Введение в SVG-анимации для верстальщиков
На моей памяти Хабрахабр умирал уже раза три.
Естественно, он умер, когда меня запихали в ридонли. Но речь не об этом.
На нём всё ещё выходят шикарные статьи, например, вроде этой: https://habr.com/ru/post/667116/
Очень хорошо написано, с небольшим, но достаточным, экскурсом в историю. Разобраны критичные отличия от CSS-анимаций. Уделено время правильному экспорту из редакторов.
В общем, мне такой в своё время очень не хватало, я бы возился меньше с, казалось бы, простыми анимациями вроде этой: https://codepen.io/alinaki/pen/qoPRRE или этой https://codepen.io/alinaki/pen/oNXjEzz (впрочем, спиннер не разбирал только ленивый).
#svg #css #animate
👍6
#фишка дня
Я, конечно, дико извиняюсь, но недавно я впервые сконвертировал SVG в PNG используя средства разработчика в Chrome.
Поскольку SVG это просто код, я немного подвигал элементы туда-сюда, поменял их контрастность и решил, что мне срочно нужен PNG не дожидаясь дизайнера. Figma, к сожалению, этот SVG била.
Оказалось, в DevTools есть ошеломительная штука: “Capture node screenshot”. Она прекрасно работает, естественно, не только для SVG, но и для любых DOM-нод. К сожалению, прозрачность не поддерживается.
Понятное дело, что фишка эта применима не только для конвертации изображений :)
Сохранить изображение с canvas так тоже не удастся, но эта возможность встроена в контекстное меню самого холста и так.
И ещё — не работает в iframe… эх.
#svg #png #screenshot #devtools
Я, конечно, дико извиняюсь, но недавно я впервые сконвертировал SVG в PNG используя средства разработчика в Chrome.
Поскольку SVG это просто код, я немного подвигал элементы туда-сюда, поменял их контрастность и решил, что мне срочно нужен PNG не дожидаясь дизайнера. Figma, к сожалению, этот SVG била.
Оказалось, в DevTools есть ошеломительная штука: “Capture node screenshot”. Она прекрасно работает, естественно, не только для SVG, но и для любых DOM-нод. К сожалению, прозрачность не поддерживается.
Понятное дело, что фишка эта применима не только для конвертации изображений :)
Сохранить изображение с canvas так тоже не удастся, но эта возможность встроена в контекстное меню самого холста и так.
И ещё — не работает в iframe… эх.
#svg #png #screenshot #devtools
👍25
#статья дня
Вы когда-нибудь задумывались, что же делает шрифты приятным для чтения? Конкретно — кириллические шрифты?
А вот Александра Королькова точно задумывалась. И это неудивительно, она же автор «Живой типографики». Кстати, книга эта официально в бесплатном доступе: https://t.iss.one/htmlshit/955
Так вот. Статья на сайте небезызвестных Паратайп так и называется: «Как разобраться в кириллице».
Конструкция букв, курсивы и наклонные шрифты, кернинг и распределение толщин — всё доступно и понятно.
Вот где клад для нашей жабы, котаны!
#fonts #cyrillic
Вы когда-нибудь задумывались, что же делает шрифты приятным для чтения? Конкретно — кириллические шрифты?
А вот Александра Королькова точно задумывалась. И это неудивительно, она же автор «Живой типографики». Кстати, книга эта официально в бесплатном доступе: https://t.iss.one/htmlshit/955
Так вот. Статья на сайте небезызвестных Паратайп так и называется: «Как разобраться в кириллице».
Конструкция букв, курсивы и наклонные шрифты, кернинг и распределение толщин — всё доступно и понятно.
Вот где клад для нашей жабы, котаны!
#fonts #cyrillic
👍7🔥2❤1
#видео дня
Кому технического стендапа? Егор Малькевич как всегда: https://www.youtube.com/watch?v=b8k0FLrW4xw
Весьма по верхам, весьма хайпово — как раз то, что нужно, чтобы окинуть платформу как таковую. В целом, многие вещи становятся чуть понятнее.
Немного поржал с подачи, что Node.js это буквально просто вызовы API над Си.
Какое совпадение, не подскажете, за счёт чего PHP всё ещё держит позиции в крупных проектах? 😬
В общем, на ночь — самое то.
#video #nodejs
Кому технического стендапа? Егор Малькевич как всегда: https://www.youtube.com/watch?v=b8k0FLrW4xw
Весьма по верхам, весьма хайпово — как раз то, что нужно, чтобы окинуть платформу как таковую. В целом, многие вещи становятся чуть понятнее.
Немного поржал с подачи, что Node.js это буквально просто вызовы API над Си.
Какое совпадение, не подскажете, за счёт чего PHP всё ещё держит позиции в крупных проектах? 😬
В общем, на ночь — самое то.
#video #nodejs
YouTube
Обзор Node.js платформы в 2021
NodeJs. Чем Нода стала в 21-ом году. Запуск стартапов на NodeJs, какие тулзы лучше взять и почему + тренды. Так что, заваривайте чаинский/кофеинский - будет интересно 😉
План:
✅ Зачем интернет?
✅ Где используется Node.js?
✅ Время посмотреть, что где-то есть…
План:
✅ Зачем интернет?
✅ Где используется Node.js?
✅ Время посмотреть, что где-то есть…
👍11🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня
Продолжаем наше путешествие по уже-не-столь-будущему псевдоселектору :has aka родительский селектор.
На сей раз абсолютно прекрасная штука, сочетание :has и object-view-box (aka фокусировка на части изображения):
Залипаем на видео, смотрим кодпен:
https://codepen.io/jh3y/pen/QWQrVwj
Ах, простите. Смотрим кодпен только в Chrome Canary с флагом Experimental Web Platform Features 😜
Но заглянуть в будущее всегда приятно.
#css #has #future
Продолжаем наше путешествие по уже-не-столь-будущему псевдоселектору :has aka родительский селектор.
На сей раз абсолютно прекрасная штука, сочетание :has и object-view-box (aka фокусировка на части изображения):
img {
object-view-box: inset(var(--top) ...);
}
:root:has(#car:checked) {
--top: 61%;
...
}
Залипаем на видео, смотрим кодпен:
https://codepen.io/jh3y/pen/QWQrVwj
Ах, простите. Смотрим кодпен только в Chrome Canary с флагом Experimental Web Platform Features 😜
Но заглянуть в будущее всегда приятно.
#css #has #future
👍34
#ссылка дня
Мы не так давно приняли решение требовать в тестовых заданиях TypeScript по-умолчанию.
Сейчас уже сложно представить, как должен впечатлить нас человек, пишущий на чистом JavaScript. Даже если он использует cutting-edge возможности.
И мы далеко не первые в этом и уж точно не последние. Так что если желаете где-то адекватно работать или просто меньше бояться за стабильность своих проектов — самое время.
Ну а чтобы не было так больно, держите «методичку» по использованию TypeScript в React-приложениях: https://github.com/typescript-cheatsheets/react
Хороших выходных, котаны!
#react #typescript #cheatsheet
Мы не так давно приняли решение требовать в тестовых заданиях TypeScript по-умолчанию.
Сейчас уже сложно представить, как должен впечатлить нас человек, пишущий на чистом JavaScript. Даже если он использует cutting-edge возможности.
И мы далеко не первые в этом и уж точно не последние. Так что если желаете где-то адекватно работать или просто меньше бояться за стабильность своих проектов — самое время.
Ну а чтобы не было так больно, держите «методичку» по использованию TypeScript в React-приложениях: https://github.com/typescript-cheatsheets/react
Хороших выходных, котаны!
#react #typescript #cheatsheet
GitHub
GitHub - typescript-cheatsheets/react: Cheatsheets for experienced React developers getting started with TypeScript
Cheatsheets for experienced React developers getting started with TypeScript - typescript-cheatsheets/react
👍19❤2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
#инструмент дня
Всё ещё испытываете проблемы с ветками в Git?
Not anymore!
Только сейчас открывая ссылку https://learngitbranching.js.org/ на вашем компьютере, вы получаете уникальную возможность научиться ветвлениям и слияниям в любимой системе контроля кода.
Или вы любите Mercurial? 🤔
#git #education
Всё ещё испытываете проблемы с ветками в Git?
Not anymore!
Только сейчас открывая ссылку https://learngitbranching.js.org/ на вашем компьютере, вы получаете уникальную возможность научиться ветвлениям и слияниям в любимой системе контроля кода.
Или вы любите Mercurial? 🤔
#git #education
❤26👍5
This media is not supported in your browser
VIEW IN TELEGRAM
#игра дня
Очередной образец игры на CSS, ни строчки JS.
Проведите курсор к бриллианту, не касаясь стен: https://codepen.io/t_afif/pen/YzeNyjR
Очень странно, что она раньше не появилась. Реализация довольно очевидная :)
P. S. Да-да, я в курсе, что на мобиле можно выиграть сразу. Слово «курсор» видим?
#css
Очередной образец игры на CSS, ни строчки JS.
Проведите курсор к бриллианту, не касаясь стен: https://codepen.io/t_afif/pen/YzeNyjR
Очень странно, что она раньше не появилась. Реализация довольно очевидная :)
P. S. Да-да, я в курсе, что на мобиле можно выиграть сразу. Слово «курсор» видим?
#css
👍19👎3