Будни разработчика
14.7K subscribers
1.17K photos
334 videos
7 files
2.01K links
Блог Lead JS-разработчика из Хельсинки
Автор: @bekharsky

По рекламе: https://telega.in/channels/htmlshit/card?r=GLOiHluU или https://t.me/it_adv

Чат: https://t.me/htmlshitchat

№5001017849, https://www.gosuslugi.ru/snet/679b74f8dad2d930d2eaa978
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
#такое дня

Я не знаю, куда отнести эту дичь, но на HDR-мониторах можно получить цвет белее белого: https://kidi.ng/wanna-see-a-whiter-white/

Звучит как какой-то бред, но посмотрите на видео. Текст и правда кажется белее белого.

Секрет в том, что совсем свежие браузеры поддерживают HDR-видео, но о чём забыли упомянуть – что при этом вся страница переходит в HDR.

Таким образом, можно передать значение фильтра brightness больше 100% и получить эффект слишком яркого белого:

filter: brightness(10);
backdrop-filter: brightness(10);
text-shadow: 0 0 10px #ffffff;

Это надо видеть своими глазами :) Применение? Да пёс его знает, говорю же — такое…

#css #hdr #backdrop
#вопрос дня

Что будет выведено в консоль?
Что будет выведено в консоль?
Anonymous Quiz
43%
false
29%
true
14%
Ёжик
14%
TypeError
#заметка дня

Что-то мы совсем забыли про полезные кусочки кода.

Например, как сделать красивую градиентную тень?

Да очень просто! Как и всегда, ответ на этот вопрос – псевдоэлемент. Поместили, подвинули, размыли. Готово.

Вот даже живой пример: https://codepen.io/argyleink/pen/WNxeBKa

Похоже на Philips Ambilight, не правда ли? Ну так давайте оживим: https://gifted-nightingale-ba0eea.netlify.app/

Добавляйте в ваши коллекции, но лучше – запоминайте принцип.

#css #gradient #shadow
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня

Когда-то меня дико восхитили ползунки в программах создания музыки: визуально они имитировали фейдеры и триммеры (переменные резисторы) реального звукорежиссёрского пульта, но можно было нажать на них мышкой и двигать мышь куда хочешь после этого по всему экрану. Значения менялись соответственно направлению движения.

Короче говоря, ты не был ограничен активной областью контрола.

Так вот, в инструментах разработчика Chrome Canary появилась утилита Length. Стало возможным изменять числовые значения, перемещая мышь. Принцип такой же, как в музыкальных редакторах и некоторых дизайнерских программах:

- зажали Shift — увеличили шаг до 10 пунктов;
- зажали Alt — уменьшили шаг до 0.1 пункта.
- кликнули — появилось меню выбора единиц измерения.

Красота!

P. S. кстати, для изменения угла поворота уже тоже давно симпатичный круговой виджет.

P. P. S. оказалось, и сейчас можно скроллить на числе. Я попробовал — мне не понравилось, слишком чувствительно. Тоже можно зажимать Shift и Alt.

#devtools #chrome
#ссылка дня

Кому тут было надо различных эффектов по наведению мыши? Их есть у меня.

Целый репозиторий всяческих :hover-правил: https://github.com/IanLunn/Hover

Название оригинальное: Hover.css :)

Есть и демо-страница: http://ianlunn.github.io/Hover/

Не могу сказать, что вы найдёте какие-то откровения там, но чекнуть стоит. Эффект завёрнутого уголка довольно забавный. Да и общий подход.

#css #hover #github
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня

Когда разработчикам Microsoft Edge делать нечего, они 3D-модель DOM в Edge DevTools запускают. Да, как в Firefox. Chrome такую штуку не имеет.

Честное слово, с трудом представляю, зачем это нужно… но отладить какие-то проблемы с z-index вполне можно.

Да и… красивое.

Так вот, фишка немного не в этом. Фишка-то в том, что доступ к этому инструменту можно, нажав Ctrl/Cmd-Shift-P и введя там 3D.

Знакомое сочетание?

Да, это командная панель, которую когда-то миру показал Sublime Text и потом потырили все, кому не лень. Вы точно ей пользовались в Atom и Visual Studio Code.

Так вот, эта панель команд и в Chrome DevTools тоже имеется. Теперь не надо ковырять меню в поисках нужного редкого инструмента!

Удобно.

#3d #zindex #edge #chrome #devtools
#статья дня

Рейтинг в виде звёзд это, наверное, самая универсальная штука на свете. Лично я считаю, что цифры справляются не хуже, но уж как есть.

И вот, небезызвестный Ахмад Шадид с очередной реализацией, теперь на SVG: https://ishadeed.com/article/star-rating-svg/

Как всегда, читать стоит не ради самой реализации — может, вам звёздный рейтинг и не пригодится-то никогда — а ради объяснения нюансов работы с SVG.

#svg #css #star #rating #widget
#фишка дня

Если вам в проекте понадобилось вдруг использовать библиотеку  fullPage.js для поэкранной прокрутки — подумайте ещё раз.

Скорее всего, накладных расходов и проблем она принесёт больше, чем решений. Не говоря уж о том, что её нужно лицензировать для коммерческих проектов.

Гораздо логичнее использовать scroll-snap, который давно и неплохо нативно поддерживается во всех остальных браузерах.

Вот простейший пример, который дальше уже можно наращивать по вашему желанию: https://codepen.io/argyleink/pen/qBRpdEr

Минимум кода, максимум отдачи. А уж оставшиеся фишки можно и дописать или настроить. Зато с этим уж точно не придётся бороться и у вас на руках все нативные события скролла.

#css #scroll #fullpage
#такое дня

Вроде вторник, а ощущений на целый понедельник.

Пришлось доказывать сейлзам из крупного провайдера чатов поддержки, что бывают интерфейсы в 300 пикселей шириной. На десктопе. И да, с миллионной аудиторией.

Давайте пиццу закажем чтоль.


.toppings {
float: right;
}
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня

Я не ожидал, что простая подводка к мему вызовет столько бурления. Как-нибудь расскажу ещё о том, чем же я таким занимаюсь. А пока давайте к новостям.

В Chrome 95 (сейчас это Chrome Canary) появился API для забора цвета со страницы. Пипетка, короче.

API неофициальный, но Google как всегда бежит впереди паровоза.

Впрочем, почему бы и нет. Для экспериментов самое то, а потом кто-нибудь и полифиллы подгонит.

Демо: https://codepen.io/bramus/pen/mdwPWEL

#js #chrome #color #colorpicker
#статья дня

Ахмад Шадид выпустил большую статью-обзор методов маскирования и обрезки изображений. Сравниваются CSS и SVG-подходы. Огромное количество примеров и иллюстраций.

https://ishadeed.com/article/thinking-about-the-cut-out-effect/

Ну и демо, конечно же, для Ъ: https://codepen.io/shadeed/pen/GRmyPjK

Вообще, если коротко: белым обозначаем то, что хотим оставить, а чёрным — то, что хотим скрыть.

#css #svg #clip #mask
👍1
#статья дня

В недавней заметке про кнопки и role="button" я упомянул, что переключатели и чекбоксы — вещи разные. Вот, прикладываю обещанное объяснение: https://uxplanet.org/checkbox-vs-toggle-switch-7fc6e83f10b8

Используйте переключатель:

1. Для вызова мгновенной реакции системы на включение опции.
2. Для выделения несвязанных элементов в группе.

Используйте чекбоксы:

1. Когда форму после пометок требуется отправить отдельным действием.
2. Если требуется множественный выбор.
3. Для выделения связанных элементов в группе.

#css #checkbox #switch #ux
#статья дня

Роман Шамин из «Злых марсиан» (Андрей Ситник оттуда, если вы не в курсе кто это — shame on you) о том, как минимальными усилиями со стороны дизайнера добиться максимальной доступности интерфейсов.

https://teletype.in/@romanshamin/a11y-for-designers

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

#design #a11y
#фишка дня

Потребовалось мне получить тип для неизменяемых данных. Для константы, короче. В моём случае это был список операторов сравнения для выбора:


const operators = [
{
label: ‘Equals’,
value: ‘==’,
},
{
label: ‘Not equals’,
value: ‘!=’,
},

];


И вот надо же мне типизировать использование этих операторов. Но как? Не руками же.

И выход есть:


const operators = [

] as const;

type Operators = typeof operators[number][‘value’];


В итоге, виртуально получаем вот это вот:


type Operators = "==" | “!=“;


Красота.

#typescript #types #const
#фишка дня

Если вам нужны более мягкие градиентные переходы, но лень возиться с easing-формулами, попробуйте комбинировать их. Например, радиальные градиенты в прозрачность: https://codepen.io/alinaki/pen/eYRBbYj?editors=1100

Во многих случаях это именно то, что нужно. Менее насыщенная середина с двумя акцентами по краям.

Про то, что же такое easing-градиенты я писал не так давно: https://t.me/htmlshit/581

#css #gradient #radial
#инструмент дня

Есть такая прекрасная утилита — SVGO. SVG Optimizer.

Для неё был реализован недостающий GUI — SVGOMG. Удивительная магия аббревиатур работает и тут — это буквально SVGO Missing GUI.

Убрать лишнюю точность кривых, перенести инлайн-стили в классы, сгруппировать элементы и атрибуты – вам сюда. Результат может быть шокирующим.

Так вот, сегодня, спустя два года с момента последнего обновления, вышла версия 2.0!

https://jakearchibald.github.io/svgomg/

Развлекайтесь :)

#svg #svgo #svgomg
#инструмент дня

Иногда случается ситуация, когда никак иначе, кроме как парсингом страниц, данные не собрать.

Я не говорю сейчас о рипах с сайтов конкурентов. У меня была ситуация – надо было собрать списки магазинов небольшой сети, которые просто валялись по разным региональным шаблонным ресурсам.

Тогда я воспользовался https://github.com/cheeriojs/cheerio, написав простой скрипт на node.js. Это как jQuery, но для Node.js. Разобрал данные и сохранил в JSON.

Оказывается, есть и более кондовые утилиты.

Например, https://github.com/mgdm/htmlq и https://stedolan.github.io/jq

Первый, как нетрудно догадаться, может обработать HTML, а второй — JSON. И всё из командной строки :)

Например, найти все ссылки на странице:

curl --silent https://www.rust-lang.org/ | htmlq --attribute href a


Можно и просто целые куски HTML выдирать, и селекторы использовать. А дальше — все возможности командной строки и скриптов для обработки.

Ну а jq может стать частью вашей CI/CD системы, разгребсти ответы от API GitHub, например, и выдать их в читаемом виде.

#tools #html #json #cli