#ссылка дня
Пятничных котов вам в ленту! Но просто котов вы можете найти где угодно, тут же — HTTP-коты: https://http.cat/
Знать коды протокола HTTP должен каждый веб-разработчик, чтобы не попадать в глупые ситуации и правильно пользоваться API. А раз их можно выучить, глядя на котов, почему бы и нет.
#http #handbook
Пятничных котов вам в ленту! Но просто котов вы можете найти где угодно, тут же — HTTP-коты: https://http.cat/
Знать коды протокола HTTP должен каждый веб-разработчик, чтобы не попадать в глупые ситуации и правильно пользоваться API. А раз их можно выучить, глядя на котов, почему бы и нет.
#http #handbook
#ссылка дня
Даже несколько. Тема дня — доменная зона .new. Как бы ни было неожиданно, но, переходя по следующим ссылкам, вы создаёте:
pen.new — песочницу в CodePen
gist.new — GitHub Gist
repo.new — репозиторий на GitHub
react.new — React-песочницу в CodeSandBox
...ну и всем давно известные:
docs.new — документ Google Docs
sheets.new — таблицу в Google Sheets
О, я тут нашёл целый их awesome-список: https://github.com/yjose/awesome-new
Если вам не знакома концепция awesome-списков, это просто тематические сборники интересных репозиториев или просто ссылок.
#new #github #codepen #sandbox
P. S. вчерашнее было случайно удалено, но терять не охота.
Даже несколько. Тема дня — доменная зона .new. Как бы ни было неожиданно, но, переходя по следующим ссылкам, вы создаёте:
pen.new — песочницу в CodePen
gist.new — GitHub Gist
repo.new — репозиторий на GitHub
react.new — React-песочницу в CodeSandBox
...ну и всем давно известные:
docs.new — документ Google Docs
sheets.new — таблицу в Google Sheets
О, я тут нашёл целый их awesome-список: https://github.com/yjose/awesome-new
Если вам не знакома концепция awesome-списков, это просто тематические сборники интересных репозиториев или просто ссылок.
#new #github #codepen #sandbox
P. S. вчерашнее было случайно удалено, но терять не охота.
GitHub
GitHub - yjose/awesome-new: A list of `.new` domains to perform online actions in one quick action.
A list of `.new` domains to perform online actions in one quick action. - yjose/awesome-new
#статья дня
Если вы до сих пор не подписаны на блог Джоша Камю и не добавили его в RSS-читалки (олды тут?), то чего вы ждёте вообще?
У него вышла, как всегда прекрасно иллюстрированная интерактивными примерами, статья о CSS Transform: https://www.joshwcomeau.com/css/transforms/
Хотели заполнить пробелы в понимании, как трансформы работают? — самое время.
Перечислять, что конкретно он там описал, нет никакого смысла. Там есть всё.
#css #transform #animation
Если вы до сих пор не подписаны на блог Джоша Камю и не добавили его в RSS-читалки (олды тут?), то чего вы ждёте вообще?
У него вышла, как всегда прекрасно иллюстрированная интерактивными примерами, статья о CSS Transform: https://www.joshwcomeau.com/css/transforms/
Хотели заполнить пробелы в понимании, как трансформы работают? — самое время.
Перечислять, что конкретно он там описал, нет никакого смысла. Там есть всё.
#css #transform #animation
This media is not supported in your browser
VIEW IN TELEGRAM
#инструмент дня
Задумывались ли вы когда-нибудь о том, что и как в CSS называется?
Как правильно задать вопрос? Как назвать тот или иной блок, правило? Да и правило ли вовсе это?
Вообще, строго говоря, нам всем нужен словарь.
И хорошо, когда он ещё и удобный: http://apps.workflower.fi/vocabs/css/en
Кликаем по определениям, подсвечивается кусок реального кода.
А большего и не нужно.
Ладно, ладно. Вот на русском: http://apps.workflower.fi/vocabs/css/ru
Вот теперь точно не нужно.
#css #vocabulary
Задумывались ли вы когда-нибудь о том, что и как в CSS называется?
Как правильно задать вопрос? Как назвать тот или иной блок, правило? Да и правило ли вовсе это?
Вообще, строго говоря, нам всем нужен словарь.
И хорошо, когда он ещё и удобный: http://apps.workflower.fi/vocabs/css/en
Кликаем по определениям, подсвечивается кусок реального кода.
А большего и не нужно.
Ладно, ладно. Вот на русском: http://apps.workflower.fi/vocabs/css/ru
Вот теперь точно не нужно.
#css #vocabulary
#баг дня
Если вы когда-нибудь пытались повторить подобие раскладки masonry на grid, вы вполне себе могли столкнуться с косяком: после некоторого числа строк, все элементы начинают накладываться друг на друга.
Вот вполне себе пример: https://jsfiddle.net/cdysL3rm/2/
Для предотвращения утечек памяти, число строк в гридах было ограничено 1000.
Подобные виды имитации Masonry больше напоминают хак, так что этот лимит очень легко преодолеть. В моём случае – уже на пятидесяти изображениях.
Сейчас этот лимит подняли.
Так вот, багу — больше 4 лет: https://bugs.chromium.org/p/chromium/issues/detail?id=688640
И его наконец-то исправили! Не прошло и пяти лет :)
Правда, до выхода ещё надо немного подождать.
#chrome #grid #bug
Если вы когда-нибудь пытались повторить подобие раскладки masonry на grid, вы вполне себе могли столкнуться с косяком: после некоторого числа строк, все элементы начинают накладываться друг на друга.
Вот вполне себе пример: https://jsfiddle.net/cdysL3rm/2/
Для предотвращения утечек памяти, число строк в гридах было ограничено 1000.
Подобные виды имитации Masonry больше напоминают хак, так что этот лимит очень легко преодолеть. В моём случае – уже на пятидесяти изображениях.
Сейчас этот лимит подняли.
Так вот, багу — больше 4 лет: https://bugs.chromium.org/p/chromium/issues/detail?id=688640
И его наконец-то исправили! Не прошло и пяти лет :)
Правда, до выхода ещё надо немного подождать.
#chrome #grid #bug
jsfiddle.net
Edit fiddle - JSFiddle - Code Playground
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
#фишка будущего
Сложно найти человека, которого бы не бесили медиа-запросы. Эти вечные min-width, max-width, screen and min-width... да зачем так сложно-то? 😭
Но Media Queries Level 4 дарят нам столь долгожданное и столь математически очевидное решение: ranges!
Ну согласитесь, писать
намного приятнее, чем
...слышу отдалённые крики гуманитариев, которым спешу напомнить про 1023px, ага.
Нативно поддерживается только в Firefox:
https://caniuse.com/mdn-css_at-rules_media_range_syntax, но есть PostCSS-плагин: https://github.com/postcss/postcss-media-minmax
Если вы желаете, чтобы и Chrome добавил поддержку диапазонов, ставьте звёздочку на заведённом фич-реквесте: https://bugs.chromium.org/p/chromium/issues/detail?id=1034465
Удобной вам разработки :)
#css #media #ranges
Сложно найти человека, которого бы не бесили медиа-запросы. Эти вечные min-width, max-width, screen and min-width... да зачем так сложно-то? 😭
Но Media Queries Level 4 дарят нам столь долгожданное и столь математически очевидное решение: ranges!
Ну согласитесь, писать
(240px <= width <= 360px)
намного приятнее, чем
(min-width: 240px) and (max-width: 360px)
...слышу отдалённые крики гуманитариев, которым спешу напомнить про 1023px, ага.
Нативно поддерживается только в Firefox:
https://caniuse.com/mdn-css_at-rules_media_range_syntax, но есть PostCSS-плагин: https://github.com/postcss/postcss-media-minmax
Если вы желаете, чтобы и Chrome добавил поддержку диапазонов, ставьте звёздочку на заведённом фич-реквесте: https://bugs.chromium.org/p/chromium/issues/detail?id=1034465
Удобной вам разработки :)
#css #media #ranges
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня
Зачем верстать, когда можно не верстать, правда?
Если вам дали задание: “Срочно сверстай нам кнопку Apple Pay для мобил!”, не надо кидаться искать SVG логотипа и шрифт.
Надо просто…
…и всё.
Естественно, это работает только в Safari. Но на iOS всё — Safari.
Для встроенных WebView лучше и не придумаешь.
#ios #button #applepay
Зачем верстать, когда можно не верстать, правда?
Если вам дали задание: “Срочно сверстай нам кнопку Apple Pay для мобил!”, не надо кидаться искать SVG логотипа и шрифт.
Надо просто…
button {
-webkit-appearance: -apple-pay-button;
}
…и всё.
Естественно, это работает только в Safari. Но на iOS всё — Safari.
Для встроенных WebView лучше и не придумаешь.
#ios #button #applepay
#ссылка дня
Я очень люблю бесшовные технологии. Это когда ты пишешь свой код в привычной тебе среде, будь то Laravel, Ruby on Rails или вообще какой-то рандомный игровой движок и получаешь синхронную работу фронтенда и бакенда “бесплатно”.
Например, захотелось вам поанализировать какие-то данные и поделиться ими с коллегами. Очевидный вариант для анализа данных — Python, очевидный вариант для того, чтобы данными поделиться — веб-страница и SVG- или canvas-графики.
Но поддержка огромного числа точек может быть весьма непростой с точки зрения производительности.
И вот тут может пригодиться рендеринг в WebGL. Миллионы точек на графике? Да без проблем, GPU отработает.
Но писать WebGL код никто самостоятельно не хочет, где же та самая бесшовность?
Да вот же: https://plotly.com/python/webgl-vs-svg/
Обработал данные и срендерил их в WebGL-график.
Вряд ли это ваша ежедневная задача, но для кого-то – очень даже.
#webgl #svg #data #python #plot #plotly
Я очень люблю бесшовные технологии. Это когда ты пишешь свой код в привычной тебе среде, будь то Laravel, Ruby on Rails или вообще какой-то рандомный игровой движок и получаешь синхронную работу фронтенда и бакенда “бесплатно”.
Например, захотелось вам поанализировать какие-то данные и поделиться ими с коллегами. Очевидный вариант для анализа данных — Python, очевидный вариант для того, чтобы данными поделиться — веб-страница и SVG- или canvas-графики.
Но поддержка огромного числа точек может быть весьма непростой с точки зрения производительности.
И вот тут может пригодиться рендеринг в WebGL. Миллионы точек на графике? Да без проблем, GPU отработает.
Но писать WebGL код никто самостоятельно не хочет, где же та самая бесшовность?
Да вот же: https://plotly.com/python/webgl-vs-svg/
Обработал данные и срендерил их в WebGL-график.
Вряд ли это ваша ежедневная задача, но для кого-то – очень даже.
#webgl #svg #data #python #plot #plotly
#заметка дня
#js #focus #scroll
Представим, что вам нужно акцентировать внимание на элементе. Элементе формы, скажем. Например, вывести его в область зрения пользователя. Какие есть варианты?
Очевидно, focus. Ведь для этого и предназначено. Вот только focus ведёт себя непредсказуемо в разных браузерах: в Chrome и Safari элемент выводится на центр экрана, а Firefox — до минимально необходимого уровня, суть — вниз. А ещё всё это происходит резко.
Решение проблемы — передача запрета скролла в метод focus и вызов scrollIntoView вместо этого.
Таким образом можно программно доскроллить до любого элемента, не только формы. И не только в центр экрана, но и по заданному отступу.
А ещё можно передать параметр, отвечающий за вид прокрутки: behavior. Итого, behavior: smooth подвинет элемент к нам плавно. Правда, для Safari и IE придётся подключать полифилл (см. комментарий в примере).
Итого, получаем: https://codepen.io/alinaki/pen/mdPwdxy
Мой пример — дополненный оригинальный от Smashing Magazine: https://twitter.com/smashingmag/status/1299325085111783425
Ещё близкое к реальности применение — скролл по секциям: https://codepen.io/aaroniker/pen/WNNLRYb
#css #scroll #scrollintoview
#js #focus #scroll
Представим, что вам нужно акцентировать внимание на элементе. Элементе формы, скажем. Например, вывести его в область зрения пользователя. Какие есть варианты?
Очевидно, focus. Ведь для этого и предназначено. Вот только focus ведёт себя непредсказуемо в разных браузерах: в Chrome и Safari элемент выводится на центр экрана, а Firefox — до минимально необходимого уровня, суть — вниз. А ещё всё это происходит резко.
Решение проблемы — передача запрета скролла в метод focus и вызов scrollIntoView вместо этого.
Таким образом можно программно доскроллить до любого элемента, не только формы. И не только в центр экрана, но и по заданному отступу.
А ещё можно передать параметр, отвечающий за вид прокрутки: behavior. Итого, behavior: smooth подвинет элемент к нам плавно. Правда, для Safari и IE придётся подключать полифилл (см. комментарий в примере).
Итого, получаем: https://codepen.io/alinaki/pen/mdPwdxy
Мой пример — дополненный оригинальный от Smashing Magazine: https://twitter.com/smashingmag/status/1299325085111783425
Ещё близкое к реальности применение — скролл по секциям: https://codepen.io/aaroniker/pen/WNNLRYb
#css #scroll #scrollintoview
Twitter
Smashing Magazine
Oh that’s useful! The scrollIntoView method provides a ‘block' option that allows you to consistently scroll an element into the center of the screen: elem.focus({ preventScroll: true }); elem.scrollIntoView({ block: 'center' }); / via @simevidas @sil
👍2
Forwarded from mazya
Рубрика "сам себе ответил, пока писал вопрос"
Вопрос был таков: Есть экран 3440х1440. Есть блок 1920х1080, центрирован по центру экрана. Вне потока центрированного блока где-то в дереве есть навигация, которая должна быть прибита к верху центрированного блока 1920х1080. Нужно задать top, чтобы ровно выставить эту навигацю будто она имеет top: 0 внутри центрированного блока 1920х1080.
Ответ: top: calc((100vh - 1080px) / 2 +(🤦♂️🤦♂️🤦♂️));
Пытаясь правильно описать вопрос очень часто получается самому себе ответить :D
Вопрос был таков: Есть экран 3440х1440. Есть блок 1920х1080, центрирован по центру экрана. Вне потока центрированного блока где-то в дереве есть навигация, которая должна быть прибита к верху центрированного блока 1920х1080. Нужно задать top, чтобы ровно выставить эту навигацю будто она имеет top: 0 внутри центрированного блока 1920х1080.
Ответ: top: calc((100vh - 1080px) / 2 +(🤦♂️🤦♂️🤦♂️));
Пытаясь правильно описать вопрос очень часто получается самому себе ответить :D
#инструмент дня
#vscode #css #extension
Помните (конечно же нет 😅) моё нытьё по поводу максимально идиотского автодополнения в текстовых редакторах и IDE? Ну то самое, когда тебе вместо width дополняют widows, а вы ни в зуб ногой, о чём это: https://t.me/htmlshit/375
Так вот, Артём Шибаков (https://twitter.com/ashibakow) разработал автодополнение для Visual Studio Code, автодополняющее CSS-свойства с учётом статистики их использования.
Smart CSS Autocomplete: https://marketplace.visualstudio.com/items?itemName=saionaro.smart-css-autocomplete
Пробуйте, не забывайте отписываться в issues на GitHub и благодарить автора.
#vscode #css #autocomplete
#vscode #css #extension
Помните (конечно же нет 😅) моё нытьё по поводу максимально идиотского автодополнения в текстовых редакторах и IDE? Ну то самое, когда тебе вместо width дополняют widows, а вы ни в зуб ногой, о чём это: https://t.me/htmlshit/375
Так вот, Артём Шибаков (https://twitter.com/ashibakow) разработал автодополнение для Visual Studio Code, автодополняющее CSS-свойства с учётом статистики их использования.
Smart CSS Autocomplete: https://marketplace.visualstudio.com/items?itemName=saionaro.smart-css-autocomplete
Пробуйте, не забывайте отписываться в issues на GitHub и благодарить автора.
#vscode #css #autocomplete
Telegram
Будни разработчика
Большинство CSS-правил я узнал из автоподстановки моих редакторов.
widows вместо width? mso-row-margin-left вместо left? marquee-play-count вместо margin? fit-content для width? Чего? Это шутка такая? Что ты от меня хочешь, тварь?
widows вместо width? mso-row-margin-left вместо left? marquee-play-count вместо margin? fit-content для width? Чего? Это шутка такая? Что ты от меня хочешь, тварь?
👍1
#фишка дня
Как удалить дубликаты из массива?
Да просто используйте встроенный объект Set. Суть, математическое множество.
Как правильно заметили в комментариях, в современном JS/TS это превращается в:
Как удалить дубликаты из массива?
Да просто используйте встроенный объект Set. Суть, математическое множество.
Как правильно заметили в комментариях, в современном JS/TS это превращается в:
const uniqCities = […new Set(cities)]
#js #set #array #duplicates#заметка дня
В соседнем чате спросили, как получить заголовки (в смысле, сетевые) изображения или вообще любого запроса в React. Ну, content-type, например.
Да как и всегда:
Вот и песочница: https://codesandbox.io/s/affectionate-leaf-s76du?file=/src/App.js
#react #fetch #headers #hook
В соседнем чате спросили, как получить заголовки (в смысле, сетевые) изображения или вообще любого запроса в React. Ну, content-type, например.
Да как и всегда:
useEffect(() => {
async function fetchHeaders() {
const response = await fetch(
"https://cdn.pixabay.com/photo/2021/08/22/06/24/bird-6564286_960_720.jpg"
);
console.log(response.headers.get("content-type"));
}
fetchHeaders();
}, []);
Вот и песочница: https://codesandbox.io/s/affectionate-leaf-s76du?file=/src/App.js
#react #fetch #headers #hook
#видео дня
Рассказ о самой долгожданной и важной новинке в CSS!
Container Queries - новая веха адаптивной верстки.
В ближайшие годы контейнерные запросы изменят подход стилизации интерфейсов.
Что это и как работает? Чем отличиается от медиа-запросов?
И не пострадает ли производительность?
Поищем ответы в ролике:
https://www.youtube.com/watch?v=8OptuS8VXe4&feature=youtu.be
Рассказ о самой долгожданной и важной новинке в CSS!
Container Queries - новая веха адаптивной верстки.
В ближайшие годы контейнерные запросы изменят подход стилизации интерфейсов.
Что это и как работает? Чем отличиается от медиа-запросов?
И не пострадает ли производительность?
Поищем ответы в ролике:
https://www.youtube.com/watch?v=8OptuS8VXe4&feature=youtu.be
YouTube
Как CSS Container Queries изменят мир интерфейсов?
В этом году свет увидела самая значимая новинка CSS последних лет.
Container Queries кардинально поменяют подход к созданию адаптивной верстки. А раз так, то нам пора знакомиться!
0:00 Пролог
1:15 Зачем нужны Контейнерные запросы? В чем проблема Медиа…
Container Queries кардинально поменяют подход к созданию адаптивной верстки. А раз так, то нам пора знакомиться!
0:00 Пролог
1:15 Зачем нужны Контейнерные запросы? В чем проблема Медиа…
#фишка дня
Чота меня подзадолбало писать try-catch на каждый async-await вызов.
С “cырыми“ промисами как-то… чище на уровне синтаксиса: then-catch и всё.
Но вот тут пригодились тестовые задания на собеседованиях. У одного инженера я увидел подход, что на иллюстрации. Очень похоже на то, как возвращаются ошибки в Go.
В общем, я почитал об использовании такого подхода и остался доволен.
P. S. конечно, есть и другие примеры: https://gist.github.com/fnky/0a6cd5f39a7ad0ace79a7a4f5c999691
#js #async #await #promise #error #typescript
Чота меня подзадолбало писать try-catch на каждый async-await вызов.
С “cырыми“ промисами как-то… чище на уровне синтаксиса: then-catch и всё.
Но вот тут пригодились тестовые задания на собеседованиях. У одного инженера я увидел подход, что на иллюстрации. Очень похоже на то, как возвращаются ошибки в Go.
В общем, я почитал об использовании такого подхода и остался доволен.
P. S. конечно, есть и другие примеры: https://gist.github.com/fnky/0a6cd5f39a7ad0ace79a7a4f5c999691
#js #async #await #promise #error #typescript
This media is not supported in your browser
VIEW IN TELEGRAM
#codepen дня
В чате верно заметили, что стало многовато джаваскрипта. Давайте исправим. Вот рубрики с кодпенами не было давно.
Набросал очередной бесконечный индикатор подгрузки. Почему-то у нас испокон веков там был GIF, хотя технически сложного ничего нет: https://codepen.io/alinaki/pen/zYGvWYN
Один градиент двигаем, второй — имитирует разделение на квадраты. Полезно и вкусно.
#css #loading #indicator
В чате верно заметили, что стало многовато джаваскрипта. Давайте исправим. Вот рубрики с кодпенами не было давно.
Набросал очередной бесконечный индикатор подгрузки. Почему-то у нас испокон веков там был GIF, хотя технически сложного ничего нет: https://codepen.io/alinaki/pen/zYGvWYN
Один градиент двигаем, второй — имитирует разделение на квадраты. Полезно и вкусно.
#css #loading #indicator
👍1