#видео дня
В CSS уже достаточно давно существует возможность выполнять простые арифметические действия, используя calc. Ещё есть min, max, minmax. И их используют не только для расчёта блоков, но и, например, для размера шрифтов в зависимости от ширины экрана. А в совокупности с пользовательскими свойствами…
Но это всё невозможно правильно и легко использовать без понимания типов данных в CSS (вот неожиданный поворот, да?).
Встречайте доклад Софии Валитовой из вКонтакте: https://www.youtube.com/watch?v=PoWpkLeJnBA
Он вышел достаточно давно, но актуальности ни капли не потерял.
#css #math #calc
В CSS уже достаточно давно существует возможность выполнять простые арифметические действия, используя calc. Ещё есть min, max, minmax. И их используют не только для расчёта блоков, но и, например, для размера шрифтов в зависимости от ширины экрана. А в совокупности с пользовательскими свойствами…
Но это всё невозможно правильно и легко использовать без понимания типов данных в CSS (вот неожиданный поворот, да?).
Встречайте доклад Софии Валитовой из вКонтакте: https://www.youtube.com/watch?v=PoWpkLeJnBA
Он вышел достаточно давно, но актуальности ни капли не потерял.
#css #math #calc
YouTube
Типы данных в CSS / София Валитова (ВКонтакте)
При поддержке AvitoTech мы впервые публикуем все видео с FrontendConf 2019 в открытый доступ. Учитесь, вдохновляйтесь и перенимайте лучшие практики у спикеров, не выходя из дома.
--------
FrontendConf 2019
Тезисы и презентация:
https://frontendc…
--------
FrontendConf 2019
Тезисы и презентация:
https://frontendc…
#фишка дня
Нормальные «математические» или «операторные» медиазапросы скоро будут доступны не только в Firefox, как я писал в одном из постов, но и в Chrome 104: https://developer.chrome.com/blog/media-query-range-syntax/
Короче говоря, вместо такой вот ерунды:
#css #math #mediaqueries
Нормальные «математические» или «операторные» медиазапросы скоро будут доступны не только в Firefox, как я писал в одном из постов, но и в Chrome 104: https://developer.chrome.com/blog/media-query-range-syntax/
Короче говоря, вместо такой вот ерунды:
@media (min-width: 400px) and (max-width: 600px) {
// Styles for viewports between 400px and 600px.
}
Будем писать такую:
@media (400px <= width <= 600px) {
// Styles for viewports between 400px and 600px.
}
Мне нравится больше. Кому ещё — глядите на плагин для PostCSS: https://github.com/postcss/postcss-media-minmax#css #math #mediaqueries
👍24🔥2
#статья дня
Задумывались ли вы о то, как нарисовать веревку? Канат, если точнее.
А как нарисовать веревку по заданному контуру? В SVG, короче.
А вот Станко, автор блога MuffinMan, задумался. И нарисовал. Сначала в блокноте, все как я люблю 😻
Собственно, статья: https://muffinman.io/blog/draw-svg-rope-using-javascript/
Снабжена подробными инструкциями, кодом, иллюстрациями и математикой. Каждый блок статьи предваряется картинкой с текущим статусом. И в конце будет генератор веревок — собственно, цель повествования.
Красивое.
#svg #js #math
Задумывались ли вы о то, как нарисовать веревку? Канат, если точнее.
А как нарисовать веревку по заданному контуру? В SVG, короче.
А вот Станко, автор блога MuffinMan, задумался. И нарисовал. Сначала в блокноте, все как я люблю 😻
Собственно, статья: https://muffinman.io/blog/draw-svg-rope-using-javascript/
Снабжена подробными инструкциями, кодом, иллюстрациями и математикой. Каждый блок статьи предваряется картинкой с текущим статусом. И в конце будет генератор веревок — собственно, цель повествования.
Красивое.
#svg #js #math
🔥20👍1
This media is not supported in your browser
VIEW IN TELEGRAM
#статья дня
Я, честно говоря, плохо понимаю, как я пропустил появление тригонометрических и математических функций в CSS.
Добро пожаловать в ад девятиклассников.
Итак, хотите вы того или нет, но sin(), cos(), tan(), asin(), acos(), atan(), atan2(), pow(), exp() и так далее уже с нами.
Для начала можно попробовать въехать в abs, round, mod вместе со статьёй легендарной Аны Тюдор: https://css-tricks.com/using-absolute-value-sign-rounding-and-modulo-in-css-today/
А потом изучить обзорную статью о, собственно, тригонометрических функциях: https://web.dev/css-trig-functions/
А я, тем временем, буду пробовать перевести свою прыгающую коробочку на них...
Посмотрим, что из этого выйдет.
#css #sin #cos #math
Я, честно говоря, плохо понимаю, как я пропустил появление тригонометрических и математических функций в CSS.
Добро пожаловать в ад девятиклассников.
Итак, хотите вы того или нет, но sin(), cos(), tan(), asin(), acos(), atan(), atan2(), pow(), exp() и так далее уже с нами.
Для начала можно попробовать въехать в abs, round, mod вместе со статьёй легендарной Аны Тюдор: https://css-tricks.com/using-absolute-value-sign-rounding-and-modulo-in-css-today/
А потом изучить обзорную статью о, собственно, тригонометрических функциях: https://web.dev/css-trig-functions/
А я, тем временем, буду пробовать перевести свою прыгающую коробочку на них...
Посмотрим, что из этого выйдет.
#css #sin #cos #math
🤔8👍7🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня
Как заставить элемент изменять свою ширину... ступенчато?
Ну, например, вам нужно, чтобы шахматная сетка при любых условиях оставалась цельной.
И сегодня у нас аж несколько вариантов, как этого добиться.
1. От Аны Тюдор: https://codepen.io/thebabydino/pen/zYbZpBq
Используем функцию модуля:
Но вот беда, в Chrome модуль пока не поддерживается... но не унываем! Есть ещё два варианта от Темани Афифа aka CSS Challenges.
2. Эффективное значение функции выше это, буквально, округление. Но так и такая функция в CSS имеется! Как-то так:
Пример: https://codepen.io/alinaki/pen/VwRMpPY
Но... Chrome опять в обломе.
Да, и в первом и во втором вариантах на коне Firefox и Safari. Как я уже недавно писал, парни из Chrome взяли привычку реализовывать только то, что можно красиво оформить в пост. И реализовали тригонометрические функции, забыв про базу.
Потому нам ничего не остаётся кроме как...
3. CSS Grid конечно же: https://codepen.io/t_afif/pen/KKEXwmR
И секрет будет в правиле:
Всем шахмат, котаны :)
#css #trick #math
Как заставить элемент изменять свою ширину... ступенчато?
Ну, например, вам нужно, чтобы шахматная сетка при любых условиях оставалась цельной.
И сегодня у нас аж несколько вариантов, как этого добиться.
1. От Аны Тюдор: https://codepen.io/thebabydino/pen/zYbZpBq
Используем функцию модуля:
width: calc(95vmin + -1*mod(95vmin, 15px));
Но вот беда, в Chrome модуль пока не поддерживается... но не унываем! Есть ещё два варианта от Темани Афифа aka CSS Challenges.
2. Эффективное значение функции выше это, буквально, округление. Но так и такая функция в CSS имеется! Как-то так:
min-width: round(95vmin,15px);
Пример: https://codepen.io/alinaki/pen/VwRMpPY
Но... Chrome опять в обломе.
Да, и в первом и во втором вариантах на коне Firefox и Safari. Как я уже недавно писал, парни из Chrome взяли привычку реализовывать только то, что можно красиво оформить в пост. И реализовали тригонометрические функции, забыв про базу.
Потому нам ничего не остаётся кроме как...
3. CSS Grid конечно же: https://codepen.io/t_afif/pen/KKEXwmR
И секрет будет в правиле:
grid-template-columns: repeat(auto-fill, 15px);
Всем шахмат, котаны :)
#css #trick #math
👍24❤4
#фишка и #статья дня
Надоело проигрывать битву z-index? Используй BFG от CSS: infinity.
Ладно, кроме шуток (хотя я и не шутил). С помощью infinity можно гарантировать верно скруглённые углы на прямоугольниках, мы с вами уже рассматривали алгоритм для веба и Flutter: https://yangx.top/htmlshit/1565
Вместо
...пишем:
А ещё в CSS общепринятое «если что-то поделить на ноль, получится бесконечность» вполне себе закреплено на практике:
Учителя вторых классов будут нами явно недовольны.
В общем, читаем статью и погружаемся в бесконечность и далее:
https://codersblock.com/blog/playing-with-infinity-in-css/
#css #infinity #math
Надоело проигрывать битву z-index? Используй BFG от CSS: infinity.
Ладно, кроме шуток (хотя я и не шутил). С помощью infinity можно гарантировать верно скруглённые углы на прямоугольниках, мы с вами уже рассматривали алгоритм для веба и Flutter: https://yangx.top/htmlshit/1565
Вместо
border-radius: 9999px;
...пишем:
border-radius: calc(infinity * 1px);
А ещё в CSS общепринятое «если что-то поделить на ноль, получится бесконечность» вполне себе закреплено на практике:
calc(infinity) = calc(1 / 0)
calc(1px / 0) = calc(infinity * 1px)
Учителя вторых классов будут нами явно недовольны.
В общем, читаем статью и погружаемся в бесконечность и далее:
https://codersblock.com/blog/playing-with-infinity-in-css/
#css #infinity #math
❤13👍3
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня
Как заставить элемент изменять свою ширину... ступенчато?
Ну, например, вам нужно, чтобы шахматная сетка при любых условиях оставалась цельной.
И сегодня у нас аж несколько вариантов, как этого добиться.
1. От Аны Тюдор: https://codepen.io/thebabydino/pen/zYbZpBq
Используем функцию модуля:
Но вот беда, в Chrome модуль пока не поддерживается... но не унываем! Есть ещё два варианта от Темани Афифа aka CSS Challenges.
2. Эффективное значение функции выше это, буквально, округление. Но так и такая функция в CSS имеется! Как-то так:
Пример: https://codepen.io/alinaki/pen/VwRMpPY
Но... Chrome опять в обломе.
Да, и в первом и во втором вариантах на коне Firefox и Safari. Как я уже недавно писал, парни из Chrome взяли привычку реализовывать только то, что можно красиво оформить в пост. И реализовали тригонометрические функции, забыв про базу.
Потому нам ничего не остаётся кроме как...
3. CSS Grid конечно же: https://codepen.io/t_afif/pen/KKEXwmR
И секрет будет в правиле:
Всем шахмат, котаны :)
#css #trick #math #бородач
Как заставить элемент изменять свою ширину... ступенчато?
Ну, например, вам нужно, чтобы шахматная сетка при любых условиях оставалась цельной.
И сегодня у нас аж несколько вариантов, как этого добиться.
1. От Аны Тюдор: https://codepen.io/thebabydino/pen/zYbZpBq
Используем функцию модуля:
width: calc(95vmin + -1*mod(95vmin, 15px));
Но вот беда, в Chrome модуль пока не поддерживается... но не унываем! Есть ещё два варианта от Темани Афифа aka CSS Challenges.
2. Эффективное значение функции выше это, буквально, округление. Но так и такая функция в CSS имеется! Как-то так:
min-width: round(95vmin,15px);
Пример: https://codepen.io/alinaki/pen/VwRMpPY
Но... Chrome опять в обломе.
Да, и в первом и во втором вариантах на коне Firefox и Safari. Как я уже недавно писал, парни из Chrome взяли привычку реализовывать только то, что можно красиво оформить в пост. И реализовали тригонометрические функции, забыв про базу.
Потому нам ничего не остаётся кроме как...
3. CSS Grid конечно же: https://codepen.io/t_afif/pen/KKEXwmR
И секрет будет в правиле:
grid-template-columns: repeat(auto-fill, 15px);
Всем шахмат, котаны :)
#css #trick #math #бородач
❤23👍3
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня
Как заставить элемент изменять свою ширину... ступенчато?
Ну, например, вам нужно, чтобы шахматная сетка при любых условиях оставалась цельной.
И сегодня у нас аж несколько вариантов, как этого добиться.
1. От Аны Тюдор: https://codepen.io/thebabydino/pen/zYbZpBq
Используем функцию модуля:
Но вот беда, в Chrome модуль пока не поддерживается... но не унываем! Есть ещё два варианта от Темани Афифа aka CSS Challenges.
2. Эффективное значение функции выше это, буквально, округление. Но так и такая функция в CSS имеется! Как-то так:
Пример: https://codepen.io/alinaki/pen/VwRMpPY
Но... Chrome опять в обломе.
Да, и в первом и во втором вариантах на коне Firefox и Safari. Как я уже недавно писал, парни из Chrome взяли привычку реализовывать только то, что можно красиво оформить в пост. И реализовали тригонометрические функции, забыв про базу.
Потому нам ничего не остаётся кроме как...
3. CSS Grid конечно же: https://codepen.io/t_afif/pen/KKEXwmR
И секрет будет в правиле:
Всем шахмат, котаны :)
#css #trick #math #бородач
Как заставить элемент изменять свою ширину... ступенчато?
Ну, например, вам нужно, чтобы шахматная сетка при любых условиях оставалась цельной.
И сегодня у нас аж несколько вариантов, как этого добиться.
1. От Аны Тюдор: https://codepen.io/thebabydino/pen/zYbZpBq
Используем функцию модуля:
width: calc(95vmin + -1*mod(95vmin, 15px));
Но вот беда, в Chrome модуль пока не поддерживается... но не унываем! Есть ещё два варианта от Темани Афифа aka CSS Challenges.
2. Эффективное значение функции выше это, буквально, округление. Но так и такая функция в CSS имеется! Как-то так:
min-width: round(95vmin,15px);
Пример: https://codepen.io/alinaki/pen/VwRMpPY
Но... Chrome опять в обломе.
Да, и в первом и во втором вариантах на коне Firefox и Safari. Как я уже недавно писал, парни из Chrome взяли привычку реализовывать только то, что можно красиво оформить в пост. И реализовали тригонометрические функции, забыв про базу.
Потому нам ничего не остаётся кроме как...
3. CSS Grid конечно же: https://codepen.io/t_afif/pen/KKEXwmR
И секрет будет в правиле:
grid-template-columns: repeat(auto-fill, 15px);
Всем шахмат, котаны :)
#css #trick #math #бородач
👍27❤1
#фишка и #статья дня
Надоело проигрывать битву z-index? Используй BFG от CSS: infinity.
Ладно, кроме шуток (хотя я и не шутил). С помощью infinity можно гарантировать верно скруглённые углы на прямоугольниках, мы с вами уже рассматривали алгоритм для веба и Flutter: https://yangx.top/htmlshit/1565
Вместо
...пишем:
А ещё в CSS общепринятое «если что-то поделить на ноль, получится бесконечность» вполне себе закреплено на практике:
Учителя вторых классов будут нами явно недовольны.
В общем, читаем статью и погружаемся в бесконечность и далее:
https://codersblock.com/blog/playing-with-infinity-in-css/
#css #infinity #math #бородач
Надоело проигрывать битву z-index? Используй BFG от CSS: infinity.
Ладно, кроме шуток (хотя я и не шутил). С помощью infinity можно гарантировать верно скруглённые углы на прямоугольниках, мы с вами уже рассматривали алгоритм для веба и Flutter: https://yangx.top/htmlshit/1565
Вместо
border-radius: 9999px;
...пишем:
border-radius: calc(infinity * 1px);
А ещё в CSS общепринятое «если что-то поделить на ноль, получится бесконечность» вполне себе закреплено на практике:
calc(infinity) = calc(1 / 0)
calc(1px / 0) = calc(infinity * 1px)
Учителя вторых классов будут нами явно недовольны.
В общем, читаем статью и погружаемся в бесконечность и далее:
https://codersblock.com/blog/playing-with-infinity-in-css/
#css #infinity #math #бородач
👍11🤩6❤2
#статья дня
Так получилось, что я использовал матрицы преобразований — осмысленно — всего раз в жизни. Правда, в итоге перешёл на решение попроще: https://yangx.top/htmlshit/1580
Но это не значит, что они не нужны :) Просто не у всех есть под них задачи.
А вот у Ивана Шубина — автора редактора диаграмм Schemio — такая задача возникла. Правда, осознал он это не сразу :)
Ну кто бы мог подумать, что тебе понадобятся матрицы преобразований, когда ты разрабатываешь векторный редактор, правда?
Прекрасная статья для тех, кто говорит, что программисту математика не нужна: https://itnext.io/how-i-used-linear-algebra-to-build-an-interactive-diagramming-editor-and-why-matrix-math-is-d5bd552f2e8d
Ну, точнее, линейная алгебра.
Есть перевод на русский: https://habr.com/ru/articles/870462/
Не, кроме шуток, просто шикарнейшая статья, после которой очень многое в работе с векторной (и не только) графикой станет понятно.
#svg #math #matrix #transform
Так получилось, что я использовал матрицы преобразований — осмысленно — всего раз в жизни. Правда, в итоге перешёл на решение попроще: https://yangx.top/htmlshit/1580
Но это не значит, что они не нужны :) Просто не у всех есть под них задачи.
А вот у Ивана Шубина — автора редактора диаграмм Schemio — такая задача возникла. Правда, осознал он это не сразу :)
Ну кто бы мог подумать, что тебе понадобятся матрицы преобразований, когда ты разрабатываешь векторный редактор, правда?
Прекрасная статья для тех, кто говорит, что программисту математика не нужна: https://itnext.io/how-i-used-linear-algebra-to-build-an-interactive-diagramming-editor-and-why-matrix-math-is-d5bd552f2e8d
Ну, точнее, линейная алгебра.
Есть перевод на русский: https://habr.com/ru/articles/870462/
Не, кроме шуток, просто шикарнейшая статья, после которой очень многое в работе с векторной (и не только) графикой станет понятно.
#svg #math #matrix #transform
❤10🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
#статья дня
Итак, перед тобой задача: поставить заглушку, пока грузится основное изображение.
Нет проблем, говоришь ты, и шлёпаешь серый прямоугольник.
И все такие: «Ну чот...»
Наверное, есть же что-то получше?
Да, есть. LQIP-техники вида, собственно, LQIP, SQIP и BlurHash. Вот, писал тут: https://yangx.top/htmlshit/2565
Ну или генерация всенаправленного градиента по фото: https://yangx.top/htmlshit/3517
Но это всё как-то муторно... вот бы что попроще.
И таки есть! Лин Рада — разработчик из Canva — придумал новую технику LQIP, основанную на CSS. Заключается она в кодировании цветных тёмных/светлых участков короткой последовательностью символов.
Ну, типа:
И пример того, что получается, можно посмотреть на иллюстрации.
А сама статья шикарный пример умного использования различного рода координат: https://leanrada.com/notes/css-only-lqip/
Изображение бьётся на 6 частей и фон, уровень светлости этих частей задаётся простым кодом. А дальше в дело вступают простые радиальные градиенты и размытие, которые и дают нужный эффект.
Конечно, математики там сильно больше, чем я сейчас описал, потому очень рекомендую хотя бы пролистать её.
Кстати, там же есть и скрипт для обработки картинок, чтобы не гадать координаты самому.
#css #lqip #math
Итак, перед тобой задача: поставить заглушку, пока грузится основное изображение.
Нет проблем, говоришь ты, и шлёпаешь серый прямоугольник.
И все такие: «Ну чот...»
Наверное, есть же что-то получше?
Да, есть. LQIP-техники вида, собственно, LQIP, SQIP и BlurHash. Вот, писал тут: https://yangx.top/htmlshit/2565
Ну или генерация всенаправленного градиента по фото: https://yangx.top/htmlshit/3517
Но это всё как-то муторно... вот бы что попроще.
И таки есть! Лин Рада — разработчик из Canva — придумал новую технику LQIP, основанную на CSS. Заключается она в кодировании цветных тёмных/светлых участков короткой последовательностью символов.
Ну, типа:
<img src="…" style="--lqip:192900">
И пример того, что получается, можно посмотреть на иллюстрации.
А сама статья шикарный пример умного использования различного рода координат: https://leanrada.com/notes/css-only-lqip/
Изображение бьётся на 6 частей и фон, уровень светлости этих частей задаётся простым кодом. А дальше в дело вступают простые радиальные градиенты и размытие, которые и дают нужный эффект.
Конечно, математики там сильно больше, чем я сейчас описал, потому очень рекомендую хотя бы пролистать её.
Кстати, там же есть и скрипт для обработки картинок, чтобы не гадать координаты самому.
#css #lqip #math
👍18❤8
#статья дня
Так получилось, что я использовал матрицы преобразований — осмысленно — всего раз в жизни. Правда, в итоге перешёл на решение попроще: https://yangx.top/htmlshit/1580
Но это не значит, что они не нужны :) Просто не у всех есть под них задачи.
А вот у Ивана Шубина — автора редактора диаграмм Schemio — такая задача возникла. Правда, осознал он это не сразу :)
Ну кто бы мог подумать, что тебе понадобятся матрицы преобразований, когда ты разрабатываешь векторный редактор, правда?
Прекрасная статья для тех, кто говорит, что программисту математика не нужна: https://itnext.io/how-i-used-linear-algebra-to-build-an-interactive-diagramming-editor-and-why-matrix-math-is-d5bd552f2e8d
Ну, точнее, линейная алгебра.
Есть перевод на русский: https://habr.com/ru/articles/870462/
Не, кроме шуток, просто шикарнейшая статья, после которой очень многое в работе с векторной (и не только) графикой станет понятно.
#svg #math #matrix #transform #бородач
Так получилось, что я использовал матрицы преобразований — осмысленно — всего раз в жизни. Правда, в итоге перешёл на решение попроще: https://yangx.top/htmlshit/1580
Но это не значит, что они не нужны :) Просто не у всех есть под них задачи.
А вот у Ивана Шубина — автора редактора диаграмм Schemio — такая задача возникла. Правда, осознал он это не сразу :)
Ну кто бы мог подумать, что тебе понадобятся матрицы преобразований, когда ты разрабатываешь векторный редактор, правда?
Прекрасная статья для тех, кто говорит, что программисту математика не нужна: https://itnext.io/how-i-used-linear-algebra-to-build-an-interactive-diagramming-editor-and-why-matrix-math-is-d5bd552f2e8d
Ну, точнее, линейная алгебра.
Есть перевод на русский: https://habr.com/ru/articles/870462/
Не, кроме шуток, просто шикарнейшая статья, после которой очень многое в работе с векторной (и не только) графикой станет понятно.
#svg #math #matrix #transform #бородач
👍9❤3
#фишка дня
...от Ахмада Шадида, уже хорошо нам известного.
Как отменить скругление углов на мобиле, но оставить на дестопе?
Конечно, можно написать медиазапросы. Конечно, можно подождать реализации if()...
А можно просто:
Или так:
Вообще, вот статья на тему: https://ishadeed.com/article/conditional-border-radius/
А вот так будем делать в будущем:
#css #clamp #math
...от Ахмада Шадида, уже хорошо нам известного.
Как отменить скругление углов на мобиле, но оставить на дестопе?
Конечно, можно написать медиазапросы. Конечно, можно подождать реализации if()...
А можно просто:
border-radius: max(0px, min(8px, calc((100vw - 4px - 100%) * 9999))) / 8px;
Или так:
clamp(0px, calc(100vw - 100%) * 1e5, var(--radius-1));
Вообще, вот статья на тему: https://ishadeed.com/article/conditional-border-radius/
А вот так будем делать в будущем:
border-radius: if(100% < 100vw: 8px; else: 0px);
#css #clamp #math
1👎40❤6🫡6🤩1