This media is not supported in your browser
VIEW IN TELEGRAM
Прокачайся в веб-разработке с курсами от команды Chrome. Бесплатно, по темам, интерактивно
Что внутри: HTML, CSS, JS, доступность, тестирование и ещё куча всего полезного. Можно идти по порядку, а можно сразу нырнуть в то, что интересует больше всего
Забираем здесь😎
@WebDev_Plus
Что внутри: HTML, CSS, JS, доступность, тестирование и ещё куча всего полезного. Можно идти по порядку, а можно сразу нырнуть в то, что интересует больше всего
Забираем здесь
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Эффектная коллекция анимированных компонентов.
Более 100 штук в наличии. Открытый исходный код и бесплатно:
👉 https://github.com/kokonut-labs/kokonutui
@WebDev_Plus
Более 100 штук в наличии. Открытый исходный код и бесплатно:
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
This media is not supported in your browser
VIEW IN TELEGRAM
Создавай впечатляющие изображения своего веб-сайта или приложения
Просто перетащи скриншот и наблюдай за магией:
→ shots․so
@WebDev_Plus
Просто перетащи скриншот и наблюдай за магией:
→ shots․so
@WebDev_Plus
❤5👍3
This media is not supported in your browser
VIEW IN TELEGRAM
На твоём сайте может быть эта проблема:
Если плохой контраст — никто ничего не читает.
Используй этот трюк в DevTools и срочно поправь цвета
@WebDev_Plus
Если плохой контраст — никто ничего не читает.
Используй этот трюк в DevTools и срочно поправь цвета
@WebDev_Plus
❤11🔥3
CSS-функции скоро станут доступны, и самое время немного запутать JavaScript-разработчиков (а может, и бэкендеров).
Нет, это не те же функции, что в JS. Как и в случае со свойствами CSS, порядок внутри не имеет значения — всё можно писать в обратном порядке.
Вы можете попробовать это в последней версии Chrome, включив флаг "Experimental Web Platform features": https://codepen.io/t_afif/pen/MYwMaYE😨
@WebDev_Plus
Нет, это не те же функции, что в JS. Как и в случае со свойствами CSS, порядок внутри не имеет значения — всё можно писать в обратном порядке.
Вы можете попробовать это в последней версии Chrome, включив флаг "Experimental Web Platform features": https://codepen.io/t_afif/pen/MYwMaYE
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Хочешь изучить алгоритмы и структуры данных на JavaScript? Этот репозиторий — то, что нужно. С пояснениями и примерами, многие из которых на русском.
https://github.com/trekhleb/javascript-algorithms/blob/master/README.ru-RU.md🤔
@WebDev_Plus
https://github.com/trekhleb/javascript-algorithms/blob/master/README.ru-RU.md
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
Можешь больше не использовать
Теперь можно читать и записывать куки через CookieStore API.
🔸 Основана на Promise
🔸 Современный синтаксис
🔸 Уже была в Chrome
🔸 Только что появилась в Safari и Firefox
@WebDev_Plus
document.cookieТеперь можно читать и записывать куки через CookieStore API.
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Мощное SEO-расширение для веб-разработчиков
Находит ошибки на странице, выявляет битые ссылки и подсказывает, что можно улучшить
https://www.metaexplorer.co/
@WebDev_Plus
Находит ошибки на странице, выявляет битые ссылки и подсказывает, что можно улучшить
https://www.metaexplorer.co/
@WebDev_Plus
👍3
CSS Box Shadow и Drop Shadow
🔹 box-shadow — добавляет тень к прямоугольной рамке элемента (включая фон и границы).
🔹 drop-shadow — работает как фильтр, отбрасывает тень по форме самого элемента (полезно для PNG с прозрачностью).
@WebDev_Plus
box-shadow → тень по коробкеdrop-shadow → тень по содержимому@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19🎉3
This media is not supported in your browser
VIEW IN TELEGRAM
Чувак, это просто чума
4000+ 3D-иконок, сгенерированных ИИ — идеально для веба, фронта, UI, презентаций инвесторам, чего угодно.
Каждая иконка выглядит так, будто её рисовал дизайнер из YC
Вот линк, проверь сам: thiings.co🥺
@WebDev_Plus
4000+ 3D-иконок, сгенерированных ИИ — идеально для веба, фронта, UI, презентаций инвесторам, чего угодно.
Каждая иконка выглядит так, будто её рисовал дизайнер из YC
Вот линк, проверь сам: thiings.co
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5
Наконец-то JavaScript начинает вести себя как взрослый язык.
Вот набор новых методов для Set, которые должны были быть добавлены лет 15 назад, но ладно хотя бы сейчас. Поддержка уже есть в 87% браузеров, так что можно юзать без костылей.
🔹
Получить пересечение — то, что есть и в FrontEnd, и в BackEnd.
🔹
Объединение без дубликатов.
🔹
Разность: всё, что есть в FrontEnd, но нет в BackEnd.
🔹
Симметричная разность: всё, что есть только в одном из двух.
🔹
Проверка: все ли элементы FrontEnd есть в BackEnd?
🔹
Проверка: содержит ли FrontEnd все элементы BackEnd?
🔹
Есть ли вообще общие элементы?
Use them.
@WebDev_Plus
Вот набор новых методов для Set, которые должны были быть добавлены лет 15 назад, но ладно хотя бы сейчас. Поддержка уже есть в 87% браузеров, так что можно юзать без костылей.
const frontEnd = new Set(['JavaScript', 'HTML', 'CSS'])
const backEnd = new Set(['JavaScript', 'Python', 'Go', 'Java'])
.intersection(otherSet)Получить пересечение — то, что есть и в FrontEnd, и в BackEnd.
frontEnd.intersection(backEnd) → ['JavaScript'].union(otherSet)Объединение без дубликатов.
frontEnd.union(backEnd) → ['JavaScript', 'HTML', 'CSS', 'Python', 'Go', 'Java'].difference(otherSet)Разность: всё, что есть в FrontEnd, но нет в BackEnd.
frontEnd.difference(backEnd) → ['HTML', 'CSS'].symmetricDifference(otherSet)Симметричная разность: всё, что есть только в одном из двух.
frontEnd.symmetricDifference(backEnd) → ['HTML', 'CSS', 'Python', 'Go', 'Java'].isSubsetOf(otherSet)Проверка: все ли элементы FrontEnd есть в BackEnd?
frontEnd.isSubsetOf(backEnd) → false .isSupersetOf(otherSet)Проверка: содержит ли FrontEnd все элементы BackEnd?
frontEnd.isSupersetOf(backEnd) → false.isDisjointFrom(otherSet)Есть ли вообще общие элементы?
frontEnd.isDisjointFrom(backEnd) → falseArray.from(set).filter(...), уже в прошлом. Это не 2008. Эти методы читаются лучше, работают быстрее и наконец-то делают Set тем, чем он должен быть: множество, а не декоративная коллекция для новичков.Use them.
@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14
This media is not supported in your browser
VIEW IN TELEGRAM
Наткнулся на крутую коллекцию фоновых паттернов для современных сайтов.
Можно скопировать одним кликом — прям идеально для лендингов, hero-блоков или даже в качестве background у компонентов.
Полезная штука, чтобы быстро прокачать визуал без лишней возни.
→ http://patterncraft.fun
@WebDev_Plus
Можно скопировать одним кликом — прям идеально для лендингов, hero-блоков или даже в качестве background у компонентов.
Полезная штука, чтобы быстро прокачать визуал без лишней возни.
→ http://patterncraft.fun
@WebDev_Plus
👍10❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Лучшие графики для твоего веба или приложения
Lightweight Charts реально выделяются:
✓ Поддержка React, Vue и Web Components
✓ Адаптивны и отлично работают на мобилках
✓ Построены на JavaScript и canvas
✓ Оптимизированы для больших объёмов данных
Идеально, если нужно что-то лёгкое, но мощное.
→ https://tradingview.com/lightweight-charts
@WebDev_Plus
Lightweight Charts реально выделяются:
✓ Поддержка React, Vue и Web Components
✓ Адаптивны и отлично работают на мобилках
✓ Построены на JavaScript и canvas
✓ Оптимизированы для больших объёмов данных
Идеально, если нужно что-то лёгкое, но мощное.
→ https://tradingview.com/lightweight-charts
@WebDev_Plus
❤2
CSS-совет
Сделал фигуру с помощью
Пара строк кода и у тебя есть как основная форма, так и её вырезанная (обратная) версия. Бонусом ты также можешь управлять отступами вокруг инвертированной формы.
@WebDev_Plus
Сделал фигуру с помощью
shape() и хочешь инвертировать её? ЛегкоПара строк кода и у тебя есть как основная форма, так и её вырезанная (обратная) версия. Бонусом ты также можешь управлять отступами вокруг инвертированной формы.
@WebDev_Plus
❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Это, пожалуй, одно из самых безумных расширений для редактора, что я видел за последнее время.
GitLantis превращает структуру проекта в 3D-модель подводного мира.
Да-да, вы «ныряете» сквозь директории среди буйков и маяков
Не спрашивайте зачем. Просто попробуйте.
@WebDev_Plus
GitLantis превращает структуру проекта в 3D-модель подводного мира.
Да-да, вы «ныряете» сквозь директории среди буйков и маяков
Не спрашивайте зачем. Просто попробуйте.
@WebDev_Plus
❤12😁4
This media is not supported in your browser
VIEW IN TELEGRAM
Это must-have инструмент для каждого веб-разработчика
Он позволяет конвертировать любой URL в разные форматы Markdown, PDF, текст, изображения и другие — всего в пару кликов.
https://www.urltoany.com/
@WebDev_Plus
Он позволяет конвертировать любой URL в разные форматы Markdown, PDF, текст, изображения и другие — всего в пару кликов.
https://www.urltoany.com/
@WebDev_Plus
👍5❤🔥4
С помощью CSS можно использовать новую функцию
Результаты этих функций можно использовать и в псевдоэлементах.
Функции довольно громоздкие, поэтому можно определить кастомные функции и сократить код.
@WebDev_Plus
sibling-index(), чтобы определить позицию элемента среди его соседей. Также доступна функция sibling-count(), которая возвращает общее количество соседних элементов.Результаты этих функций можно использовать и в псевдоэлементах.
<div class="container">
<div></div>
<div></div>
<div></div>
...
</div>
.container div {
border: calc(sibling-index() * 2px) solid;
opacity: calc(sibling-index() / sibling-count());
}
.container div::before {
content: counter(i) "/" counter(N);
counter-reset: N sibling-count() i sibling-index(); /* работают с текущим div */
}Функции довольно громоздкие, поэтому можно определить кастомные функции и сократить код.
@function --N() {
result: sibling-count();
}
@function --i() {
result: calc(sibling-index() - 1); /* начинаем с нуля, а не с единицы */
}.container div {
border: calc(--i() * 2px) solid;
opacity: calc(--i() / --N());
}
.container div::before {
content: counter(i) "/" counter(N);
counter-reset: N --N() i --i();
}@WebDev_Plus
❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Вот это круто
Рассмотри нестандартный способ управления 3D-сценой одновременно в нескольких окнах браузера.
Всё реализовано с помощью библиотеки Three.js и localStorage.
Он использует localStorage, чтобы определить новое окно и сохраняет счётчик. Это даёт каждому новому окну (при одинаковом origin) уникальный ID.
Дальше взаимодействие между сферами, основанное на определении их позиций внутри окна.
Для этого используется
и
Затем сцена рендерится с помощью Three.js.
@WebDev_Plus
Рассмотри нестандартный способ управления 3D-сценой одновременно в нескольких окнах браузера.
Всё реализовано с помощью библиотеки Three.js и localStorage.
Он использует localStorage, чтобы определить новое окно и сохраняет счётчик. Это даёт каждому новому окну (при одинаковом origin) уникальный ID.
Дальше взаимодействие между сферами, основанное на определении их позиций внутри окна.
Для этого используется
window.screenLeft чтобы узнать расстояние от левого края экрана до начала окна,и
window.innerWidth чтобы получить ширину окна. Эти значения позволяют рассчитать позиции всех окон.Затем сцена рендерится с помощью Three.js.
@WebDev_Plus
🔥25👍4💯2
Интерактивные упражнения для изучения SQL
✓ Бесплатно, от простого до экспертного уровня
✓ Более 50 задач, которые нужно решить
→ sql-practice․com
@WebDev_Plus
✓ Бесплатно, от простого до экспертного уровня
✓ Более 50 задач, которые нужно решить
→ sql-practice․com
@WebDev_Plus
❤8