This media is not supported in your browser
VIEW IN TELEGRAM
VideoCall App UI — изящный пользовательский интерфейс приложения VideoCall, реализованный с помощью jQuery.
https://codepen.io/aybukeceylan/pen/pobbEYB
@javascriptv
https://codepen.io/aybukeceylan/pen/pobbEYB
@javascriptv
👎9👍7❤1🔥1
Архитектурные стили, которые вы должны знать в 2023 году
— REST (Representational State Transfer): REST - это архитектурный стиль, в котором используются преимущественно методы HTTP, - чемпион по простоте и повсеместности. Он обеспечивает простое взаимодействие с ресурсами, что делает его основным паттерном для множества приложений и современных API.
— SOAP (Simple Object Access Protocol): SOAP, претендующий на звание тяжеловеса на арене API, отличается сложностью и мощностью. Он использует XML для определения структурированного взаимодействия. Хотя для работы с SOAP требуется клиент и сервер, он компенсирует это своей прочностью и надежностью, подобно хорошо сконструированному внедорожнику, преодолевающему труднопроходимую местность.
— GraphQL: Восходящая звезда в мире API, GraphQL предлагает гибкость и точность. Он позволяет клиентам запрашивать именно то, что им нужно, сокращая избыточность и повышая производительность. Подумайте об этом как о персональном покупателе - вы получаете только то, что просили, ни больше, ни меньше.
— gRPC (Google Remote Procedure Call): gRPC - это самый быстрый из всех API. Работающий по протоколу HTTP/2 и использующий двоичные данные, он нацелен на производительность и скорость, особенно в архитектурах микросервисов. Он подобен скоростному поезду, обеспечивающему быструю и надежную связь.
— WebSockets: Если вам нужна связь в реальном времени и двунаправленная связь, то WebSockets - это то, что вам нужно. Они идеально подходят для чат-приложений, потокового вещания и обмена данными в реальном времени - это как открытая телефонная линия между клиентами и серверами.
— Webhooks: Webhooks - это глашатаи цифрового мира. Они уведомляют клиентов о наступлении определенных событий на стороне сервера, что делает их идеальным решением для архитектуры, управляемой событиями. Представьте себе, что это ваша персональная система оповещения, которая информирует вас о том, что важно.
#советы
— REST (Representational State Transfer): REST - это архитектурный стиль, в котором используются преимущественно методы HTTP, - чемпион по простоте и повсеместности. Он обеспечивает простое взаимодействие с ресурсами, что делает его основным паттерном для множества приложений и современных API.
— SOAP (Simple Object Access Protocol): SOAP, претендующий на звание тяжеловеса на арене API, отличается сложностью и мощностью. Он использует XML для определения структурированного взаимодействия. Хотя для работы с SOAP требуется клиент и сервер, он компенсирует это своей прочностью и надежностью, подобно хорошо сконструированному внедорожнику, преодолевающему труднопроходимую местность.
— GraphQL: Восходящая звезда в мире API, GraphQL предлагает гибкость и точность. Он позволяет клиентам запрашивать именно то, что им нужно, сокращая избыточность и повышая производительность. Подумайте об этом как о персональном покупателе - вы получаете только то, что просили, ни больше, ни меньше.
— gRPC (Google Remote Procedure Call): gRPC - это самый быстрый из всех API. Работающий по протоколу HTTP/2 и использующий двоичные данные, он нацелен на производительность и скорость, особенно в архитектурах микросервисов. Он подобен скоростному поезду, обеспечивающему быструю и надежную связь.
— WebSockets: Если вам нужна связь в реальном времени и двунаправленная связь, то WebSockets - это то, что вам нужно. Они идеально подходят для чат-приложений, потокового вещания и обмена данными в реальном времени - это как открытая телефонная линия между клиентами и серверами.
— Webhooks: Webhooks - это глашатаи цифрового мира. Они уведомляют клиентов о наступлении определенных событий на стороне сервера, что делает их идеальным решением для архитектуры, управляемой событиями. Представьте себе, что это ваша персональная система оповещения, которая информирует вас о том, что важно.
#советы
🔥16👍9❤2🤔2
🔥 Дайджест полезных материалов из мира : Javascript за неделю
Почитать:
— Натальная травматология фронтенда S1 E1-14
— Митапы PiterJS вернулись
— Rematch — Redux без шаблонного кода
— Утечки памяти в SSR: причины, поиск, устранение
— Скрытие POI за зданиями
— Что нового в Chrome 117?
— Видеоредактор, работа с видео и зачем там Canvas
— Kysely.js типизированный sql builder
— Измерение размеров объектов на фотографии
— Find the best herbal chamomile tea - junglesting
— 10 'Aha' Moments: Navigating React's New Documentation!
— GitHub Decoded: Your Beginner's Guide
— Web workers in ReactJs
— 🚀Learn Next.js 13 Within 2 Hours🚀
— Latest Newsletter: Wonderfull and Strange Nerdy Discussions (Issue #132)
— 🚀Mastering Performance Optimisation in React Applications🚀
— How Does Nerve Regen Formula Work?
— What Is Bun 1.0? A Game-Changer in JavaScript Development
— Mastering object manipulation in JavaScript
Посмотреть:
🌐 Learning To Code Is Easy (⏱ 08:59)
🌐 NEW React Hooks Saves 1K+ Lines Of Code (⏱ 01:00)
Хорошего дня!
@javascriptv
Почитать:
— Натальная травматология фронтенда S1 E1-14
— Митапы PiterJS вернулись
— Rematch — Redux без шаблонного кода
— Утечки памяти в SSR: причины, поиск, устранение
— Скрытие POI за зданиями
— Что нового в Chrome 117?
— Видеоредактор, работа с видео и зачем там Canvas
— Kysely.js типизированный sql builder
— Измерение размеров объектов на фотографии
— Find the best herbal chamomile tea - junglesting
— 10 'Aha' Moments: Navigating React's New Documentation!
— GitHub Decoded: Your Beginner's Guide
— Web workers in ReactJs
— 🚀Learn Next.js 13 Within 2 Hours🚀
— Latest Newsletter: Wonderfull and Strange Nerdy Discussions (Issue #132)
— 🚀Mastering Performance Optimisation in React Applications🚀
— How Does Nerve Regen Formula Work?
— What Is Bun 1.0? A Game-Changer in JavaScript Development
— Mastering object manipulation in JavaScript
Посмотреть:
🌐 Learning To Code Is Easy (⏱ 08:59)
🌐 NEW React Hooks Saves 1K+ Lines Of Code (⏱ 01:00)
Хорошего дня!
@javascriptv
❤6👍3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
⚡Creativity Now — 3D-текст, созданный на Blender. Анимация замены оформления реализована с помощью
#анимация #Blender #Treejs
https://codepen.io/ScavengerFrontend/pen/mdRrVVO
@javascript
Tree.js
.#анимация #Blender #Treejs
https://codepen.io/ScavengerFrontend/pen/mdRrVVO
@javascript
👍15❤2🔥1
Использование FileReader для чтения файлов в JavaScript
Нашли для вас туториал о том, как использовать FileReader для чтения содержимого файлов в браузере. Автор статьи на практике рассмотрел несколько примеров, как с использованием элемента input, так и Drag'n'Drop:
https://itchief.ru/javascript/filereader
#javascript #туториал
@javascriptv
Нашли для вас туториал о том, как использовать FileReader для чтения содержимого файлов в браузере. Автор статьи на практике рассмотрел несколько примеров, как с использованием элемента input, так и Drag'n'Drop:
https://itchief.ru/javascript/filereader
#javascript #туториал
@javascriptv
👍13❤3🔥1
В процессе иллюстрации возможностей gRPC создадим два микросервиса: службу заказа (order-service) и службу пользователя (user-service).
В службу заказов (order-service) внедрим API MyOrders, возвращающий фиктивные заказы пользователя. Прежде чем вернуть заказ, служба связывается с помощью gRPC с user-service для проверки прав пользователя в системе.
Такой смоделированный вариант позволит демонстрировать взаимодействие между микросервисами. При этом возможны индивидуальные отличия, например служба заказа может получать данные пользователя в режиме реального времени для отправки уведомлений на мобильный телефон или по электронной почте.
Настройка проекта
Предполагается, что вы знакомы с основами NestJS. Сначала определим специфичные для gRPC элементы.
С помощью командной строки NestJS инициализируем проекты user-service и order-service.
nest new order_service
nest new user_service
Установим специфичные для gRPC зависимости.
В gRPC определяем API в файлах буфера протокола или proto. Наши клиенты NestJS должны понимать этот интерфейс, и для этого мы будем использовать пакет ts-proto, который автоматически сгенерирует код адаптера NestJS для определений proto.
npm i --save @grpc/grpc-js @grpc/proto-loader
npm i protoc-gen-ts_proto
npm install ts-proto
Примерная структура проекта:
📌Читать
@javascriptv
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Хороший способ сделать ваш сайт более интересным. Проект реализован с помощью
CSS, jQuery и TweenMax.js.
Посмотреть код можно тут:
https://codepen.io/izmaelmag/pen/NqyEKx
@javascriptv
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤3🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
https://codepen.io/Hyperplexed/pen/wvQzbGz
@javascriptv
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3❤1
🔥 Дайджест полезных материалов из мира Javascript за неделю
Почитать:
— Минуты и часы не нужны
— Создание мини игр и анимации в Online редакторе Collagen_2
— Event Loop в деталях
— Создание конвертера JSON в Typescript с помощью React, NodeJS и ChatGPT
— Web Accessibility в рассказе «A11Y от 0 до NaN»
— Создаем мини-игру с капельным эффектом и движущимися кружками. Часть 2. Финал
— JavaScript. WebRTC. Соединение браузеров напрямую без сервера, peer-to-peer
— Веб-компоненты в 2023: нужно поговорить
— Подружим Sentry и Mattermost быстро и просто через адаптер
— Генерация BDD тестов с помощью ChatGPT и запуск их через Playwright
— Latest Newsletter: Beware Of Circularity (Issue #133)
— Basic Promise in JavaScript
— Conquer MS-101: Dumpsarena Offers Reliable Study Materials
— JavaScript Magic Tricks: 6 Ways to Use 'alert'
— typeof null return object...
— Cracking the Code: Leet Code 1048 - Longest String Chain (Medium) - NileshDev
— How To Quickly Fix Production Errors Along With CORS Error
— Creating an NPM Package in 2024 (Deno, dnt)
— Singleton Connection with Transactions in MongoDB
— What is JavaScript(and what can you do with it)
Посмотреть:
🌐 Экосистема React.js 2023 (⏱ 12:45)
🌐 The Best React State Management Solution Has Been There All Along (⏱ 05:38)
🌐 This CSS Feature Replaces CSS-In-JS (⏱ 01:00)
Хорошего дня!
@javascriptv
Почитать:
— Минуты и часы не нужны
— Создание мини игр и анимации в Online редакторе Collagen_2
— Event Loop в деталях
— Создание конвертера JSON в Typescript с помощью React, NodeJS и ChatGPT
— Web Accessibility в рассказе «A11Y от 0 до NaN»
— Создаем мини-игру с капельным эффектом и движущимися кружками. Часть 2. Финал
— JavaScript. WebRTC. Соединение браузеров напрямую без сервера, peer-to-peer
— Веб-компоненты в 2023: нужно поговорить
— Подружим Sentry и Mattermost быстро и просто через адаптер
— Генерация BDD тестов с помощью ChatGPT и запуск их через Playwright
— Latest Newsletter: Beware Of Circularity (Issue #133)
— Basic Promise in JavaScript
— Conquer MS-101: Dumpsarena Offers Reliable Study Materials
— JavaScript Magic Tricks: 6 Ways to Use 'alert'
— typeof null return object...
— Cracking the Code: Leet Code 1048 - Longest String Chain (Medium) - NileshDev
— How To Quickly Fix Production Errors Along With CORS Error
— Creating an NPM Package in 2024 (Deno, dnt)
— Singleton Connection with Transactions in MongoDB
— What is JavaScript(and what can you do with it)
Посмотреть:
🌐 Экосистема React.js 2023 (⏱ 12:45)
🌐 The Best React State Management Solution Has Been There All Along (⏱ 05:38)
🌐 This CSS Feature Replaces CSS-In-JS (⏱ 01:00)
Хорошего дня!
@javascriptv
👍12🔥7❤3
Топ вопросы на собеседовании по JavaScript
1. Способы наследования
2. Типы данных
3. Ключевое слово this.
4. Методы call, apply, bind.
5. Замыкание (closure)
6. Область видимости (scope)
7. Каррирование (currying).
8. Параметры функции в ES6
9. Модификаторы var, let, const B
10. Коллекции Array, Map, Set Blog
#video #js
https://www.youtube.com/watch?v=0e9eyrxB-LU&list=PLwHvxJae2LazDrHm6ayqLKz6jszEn7ArQ&ab_channel=ProgBlog
1. Способы наследования
2. Типы данных
3. Ключевое слово this.
4. Методы call, apply, bind.
5. Замыкание (closure)
6. Область видимости (scope)
7. Каррирование (currying).
8. Параметры функции в ES6
9. Модификаторы var, let, const B
10. Коллекции Array, Map, Set Blog
#video #js
https://www.youtube.com/watch?v=0e9eyrxB-LU&list=PLwHvxJae2LazDrHm6ayqLKz6jszEn7ArQ&ab_channel=ProgBlog
👍21❤3😱2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
📌Binoculars — красивая имитация бинокля. Реализована на CSS и JavaScript.
#js #анимация #css
https://codepen.io/DeyJordan/pen/MWZwRMm
@javascriptv
#js #анимация #css
https://codepen.io/DeyJordan/pen/MWZwRMm
@javascriptv
👍11🔥7❤2
⚡ 5 лучших шаблонов проектов React Native на GitHub для быстрой разработки приложений 📱
Список полезных ресурсов, которые ускорят разработку приложений! Эти шаблоны упрощают процесс разработки, позволяя вам быстро приступить к работе над приложениями👇
1. React Native Elements: https://github.com/react-native-elements/react-native-elements
2. Ignite CLI Boilerplate: https://github.com/infinitered/ignite
3. React Native Paper: https://github.com/callstack/react-native-paper
4. UI Templates: https://github.com/Aashu-Dubey/React-Native-UI-Templates
5. React Native Boilerplate: https://github.com/thecodingmachine/react-native-boilerplate
@javascriptv
Список полезных ресурсов, которые ускорят разработку приложений! Эти шаблоны упрощают процесс разработки, позволяя вам быстро приступить к работе над приложениями👇
1. React Native Elements: https://github.com/react-native-elements/react-native-elements
2. Ignite CLI Boilerplate: https://github.com/infinitered/ignite
3. React Native Paper: https://github.com/callstack/react-native-paper
4. UI Templates: https://github.com/Aashu-Dubey/React-Native-UI-Templates
5. React Native Boilerplate: https://github.com/thecodingmachine/react-native-boilerplate
@javascriptv
👍8❤4👎3🔥1
В языке JavaScript итераторы и генераторы являются мощными инструментами, позволяющими разработчикам контролировать итерацию и поток данных. Вместе эти функции образуют впечатляющий дуэт, позволяющий писать лаконичный, эффективный и гибкий JavaScript-код.
В JavaScript функция-итератор — это уникальная функция, возвращающая объект-итератор. Объект-итератор — это объект, который через метод next() возвращает объект с двумя свойствами: value и done. Свойство value представляет собой следующее значение в последовательности, а свойство done указывает, достиг ли итератор конца последовательности.
Функции-итераторы могут использоваться для перебора наборов данных, таких как массивы и объекты.
Ниже приведен пример функции-итератора, выполняющей итерацию по массиву:
function Iterator(array) {
let nextIndex = 0;
return {
next: function () {
if (nextIndex < array.length) {
return {
value: array[nextIndex++],
done: false,
};
} else {
return {
value: undefined,
done: true,
};
}
},
};
}
const array = [1, 2, 3, 4, 5];
const arrayValue = Iterator(array);
console.log(arrayValue.next()); // { value: 1, done: false }
console.log(arrayValue.next()); // { value: 2, done: false }
console.log(arrayValue.next()); // { value: 3, done: false }
console.log(arrayValue.next()); // { value: 4, done: false }
console.log(arrayValue.next()); // { value: 5, done: false }
console.log(arrayValue.next()); // { value: undefined, done: true }
В приведенном выше коде определена функция Iterator
, которая принимает в качестве аргумента массив и возвращает объект итератора. Объект итератора через метод next
возвращает следующий элемент массива и обновляет внутреннюю переменную nextIndex
для отслеживания индекса массива.Метод
next
проверяет, меньше ли nextIndex
длины массива. Если это так, то метод возвращает объект со значением массива в позиции nextIndex и устанавливает свойство done в false
. После этого переменная nextIndex увеличивается на единицу. Если nextIndex
больше или равно длине массива, то метод next
устанавливает свойство done в true.📌Читать дальше
@javascriptv
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥5❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Анимация на чистом Javascript. В JS устанавливаются значения и запускаются анимации.
https://codepen.io/konstantindenerz/pen/qBMvXNK
@javascriptv
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍6❤2🤔1
🔥 Дайджест полезных материалов из мира Javascript за неделю
Почитать:
— Увеличиваем свою производительность в WebStorm / PhpStorm c помощью шаблонов
— Пристальный взгляд на отладку JavaScript приложений
— Один компонент, 20+ фич, A/B-тесты: Поможет ли машина состояний?
— Как добавить несколько товаров в Shopify корзину одним кликом?
— 15 лучших бесплатных курсов по Linux
— Как мы создаём Squadus. Реализуем «прыжок к сообщению» в мобильной версии
— React 18: что поменялось
— Restyle как новый стандарт для создания UI в React Native
— React Fiber & Concurrency Part 1 (2)
— Svelte: Знакомство с рунами
— Tailwind не только для MVP
— Flaco - Personal multipage theme
— Optimising Architectural Excellence: Must-Have Tools for Success!
— Exploring React's Data Retrieval Methods
— Mastering React.js: Top 20 Interview Questions You Need to Know
— Latest Newsletter: Bitcoin Butterfly (Issue #134)
— Send email confirmation in Strapi
— ALTER 26" 002S MODEL CYCLE | Alter Bikes
— 10 Best Tools and Practices for Boosting Code Quality in Node.js
— How to Create a Chat App With Bun Using WebSockets
— Demystifying TypeScript Generics with Simple Examples
Посмотреть:
🌐 CSS nth-child Just Got 100x Better (⏱ 00:56)
🌐 Clean Code Is Killing Your Projects (⏱ 09:20)
Хорошего дня!
@javascriptv
Почитать:
— Увеличиваем свою производительность в WebStorm / PhpStorm c помощью шаблонов
— Пристальный взгляд на отладку JavaScript приложений
— Один компонент, 20+ фич, A/B-тесты: Поможет ли машина состояний?
— Как добавить несколько товаров в Shopify корзину одним кликом?
— 15 лучших бесплатных курсов по Linux
— Как мы создаём Squadus. Реализуем «прыжок к сообщению» в мобильной версии
— React 18: что поменялось
— Restyle как новый стандарт для создания UI в React Native
— React Fiber & Concurrency Part 1 (2)
— Svelte: Знакомство с рунами
— Tailwind не только для MVP
— Flaco - Personal multipage theme
— Optimising Architectural Excellence: Must-Have Tools for Success!
— Exploring React's Data Retrieval Methods
— Mastering React.js: Top 20 Interview Questions You Need to Know
— Latest Newsletter: Bitcoin Butterfly (Issue #134)
— Send email confirmation in Strapi
— ALTER 26" 002S MODEL CYCLE | Alter Bikes
— 10 Best Tools and Practices for Boosting Code Quality in Node.js
— How to Create a Chat App With Bun Using WebSockets
— Demystifying TypeScript Generics with Simple Examples
Посмотреть:
🌐 CSS nth-child Just Got 100x Better (⏱ 00:56)
🌐 Clean Code Is Killing Your Projects (⏱ 09:20)
Хорошего дня!
@javascriptv
👍8🔥3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#анимация #css #javascript #текст
https://codepen.io/michellebarker/pen/bPEWGK
@javascriptv
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥7❤3🤯2
Разработка веб-интерфейсов кажется простой, но только на первый взгляд.
Если углубиться в нее, обнаруживается множество сложностей, озадачивающих даже опытных специалистов.
Эта статья поможет вам разобраться с рядом проблем разработки веб-интерфейсов, начиная с несоответствия между веб-языками и современными требованиями к пользовательскому интерфейсу и заканчивая сложными вопросами управления данными и вызовами асинхронных API.
Кроме того, мы исследуем так называемые “нерезультативные пути” (“unhappy paths”), часто упускаемые из виду. К ним относятся состояния загрузки, обработка ошибок, а также более широкие архитектурные аспекты, включающие безопасность, производительность и доступность.
Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1🔥1
В этой статье мы детально рассмотрим важнейшие вопросы для собеседования по JavaScript. Надеюсь, что скрупулезный разбор каждого вопроса поможет вам усвоить основные концепции и ответить на другие подобные вопросы на собеседованиях.
1. Подробнее о свойствах операторов + и —
console.log(1 + '1' - 1);
Можете ли вы предположить,
как поведут себя операторы + и — в ситуациях, подобных приведенной выше?Когда JavaScript имеет дело с выражением
1 + '1',
то обрабатывает его с помощью оператора +. Интересным свойством этого оператора является то, что он предпочитает конкатенацию строк, когда один из операндов является строкой. В нашем случае
‘1’
является строкой, поэтому JavaScript неявно преобразует числовое значение 1 в строку. Следовательно, 1 + '1' становится '1' + '1', в результате чего получается строка '11'.Теперь у нас есть выражение
'11' - 1.
Поведение оператора — прямо противоположно. Приоритет отдается числовому вычитанию независимо от типа операндов. Если операнды не относятся к числовому типу, JavaScript
выполняет неявное принуждение для их преобразования в числа. В данном случае '11' преобразуется в числовое значение 11, и выражение упрощается до 11 - 1.Собираем все вместе:
'11' - 1 = 11 - 1 = 10
2. Дублирование элементов массива
Рассмотрите следующий JavaScript-код и постарайтесь найти в нем какие-либо проблемы:
function duplicate(array) {
for (var i = 0; i < array.length; i++) {
array.push(array[i]);
}
return array;
}
const arr = [1, 2, 3];
const newArr = duplicate(arr);
console.log(newArr);
В этом фрагменте кода требуется создать новый массив, содержащий дублированные элементы входного массива. При первоначальном рассмотрении кажется, что код создает новый массив newArr, дублируя каждый элемент исходного массива arr. Однако в самой функции duplicate возникает критическая проблема.
Функция duplicate использует цикл для перебора каждого элемента конкретного массива. Но внутри цикла она добавляет новый элемент в конец массива, используя метод push(). В результате массив каждый раз становится длиннее, что создает проблему, при которой цикл никогда не останавливается. Условие цикла (i < array.length) всегда остается истинным, поскольку массив продолжает увеличиваться. В результате цикл может продолжаться бесконечно, что приводит к зацикливанию программы.
Чтобы решить проблему бесконечного цикла, вызванного ростом длины массива, можно перед входом в цикл сохранить начальную длину массива в переменной. Затем эту начальную длину можно использовать в качестве ограничения для итерации цикла. Таким образом, цикл будет выполняться только для исходных элементов массива и перестанет зависеть от роста массива за счет добавления дубликатов. Вот модифицированная версия кода:
function duplicate(array) {
var initialLength = array.length; // Сохранение начальной длины
for (var i = 0; i < initialLength; i++) {
array.push(array[i]); // Дублирование каждого элемента
}
return array;
}
const arr = [1, 2, 3];
const newArr = duplicate(arr);
console.log(newArr);
В результате дублированные элементы окажутся в конце массива, и цикл не будет бесконечным:
[1, 2, 3, 1, 2, 3]
📌Читать дальше
@javascriptv
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤5🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Movie Poster Interaction - Стильные карточки с анимацией и эффектом размытия.
https://codepen.io/pleasedonotdisturb/pen/oNQLVXB
@javascriptv
https://codepen.io/pleasedonotdisturb/pen/oNQLVXB
@javascriptv
❤12🔥4👍2🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Card — анимированная карточка. Реализована с помощью CSS и JavaScript
https://codepen.io/BlogFire/pen/yLRgbwO
@javascriptv
https://codepen.io/BlogFire/pen/yLRgbwO
@javascriptv
👍12🔥4❤1