Frontend base
3 subscribers
32 photos
53 videos
36 links
💫Фишки Frontend разработки.

👨‍💻Все про Frontend, JavaScript, Фреймворки.

📒Готовые блоки с кодом
Download Telegram
Media is too big
VIEW IN TELEGRAM
Glowing Letter Effects

В этом видео создаётся эффект при движении курсора на CSS и JS.

👉 @seniorFront
This media is not supported in your browser
VIEW IN TELEGRAM
Range Sliders

Создано на React, стилизовано в CSS.

👉 @seniorFront
Generate Chat Room Names

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

1. Если в чате находится только один человек с уникальным именем, то должно отображаться только имя.
John Smith -> John

2. Если в чате два человека с одинаковым именем, но инициал фамилии у них разный, то отображаем имя с инициалом.
John Smith -> John S
John Adams -> John A

3. Если в чате два человека с одинаковыми именами и инициалами, то отображаем полностью fullName
John Smith -> John Smith
John Simms -> John Simms


👉 @seniorFront
This media is not supported in your browser
VIEW IN TELEGRAM
Magnetic Pastel button

В JS создан listener на событие mousemove, в котором устанавливаются стили кнопки.

👉 @seniorFront
В чём разница между inline и inline-block?

Значение display: inline используется для элементов, которые отображаются в группе слов рядом с другими элементами, например в параграфе. Размеры строчных элементов определяются содержимым, так что установить их через CSS-свойства не получится. Так же не выйдет указать для них вертикальные margin и padding. Пример строчных элементов это <span> и <a> — свойство display: inline устанавливается для них браузером по умолчанию.

Элементы с display: inline-block также располагаются в потоке текста, но вы можете установить размеры такому элементу, а так же любые значения margin и padding. Это позволит элементу отображаться в строке, но занимать пространство как блочному элементу. Примеры элементов со значением display: inline-block по умолчанию: <button> или <textarea>.

👉 @seniorFront
This media is not supported in your browser
VIEW IN TELEGRAM
Loader

Разделение клеток сделано при помощи библиотеки Splitting.js, анимировано библиотекой gsap.

👉 @seniorFront
Вавилонское сайтотворение: как фронтендеры и дизайнеры понимают друг друга

Дизайнер и фронтенд-разработчик — не чужие друг другу люди. Оба делают части одного большого дела и общаются если и не постоянно, то регулярно. И всё же их языки во многом отличаются. Да и не только языки — сами образы мышления.

Временной разлом
Если взглянуть на дорожную карту проекта, разработчик и дизайнер существуют в разных точках по оси времени и общаются между собой, используя Доктора Кто в качестве курьера. Для дизайнера продукт готов, он в настоящем и даже немножко в прошлом, в этаком Present Perfect. Для фронтендера такое же состояние проекта — это более или менее отдалённое будущее.
В идеале все вопросы надо обсудить сразу, пока открыт временной разлом, объединяющий дизайнера и фронта. Но это не всегда возможно. Разработчик должен перенестись в будущее и заранее представить все проблемы, с которыми он может столкнуться.
Решение — поддерживать связь. Пока идёт общение, временной разлом не затянется. Ну и отличная идея — все мутные моменты прояснять сразу же, а не копить на свой или чужой дедлайн.

Есть ещё гриды в гридницах
Грид — очень распространённая абстракция в веб-дизайне, да и не только в веб. Но у дизайнеров и разработчиков гриды разные.
Грид дизайнера измеряется в пикселях. Грид разработчика — в процентах, в долях блока. У разработчика в голове — адаптивность, универсальность. У дизайнера — конкретная картинка. В результате нередко оказывается, что пиксель пёрфект не очень-то пёрфект.
Свобода творчества — это, безусловно, хорошо, но когда твоё творчество потом высекают в HTML/CSS — хорошо бы подумать о комфорте скульптора.

Вупсень и Пупсень… в смысле, пэддинг и марджин
Ни один фронтендер в здравом уме не перепутает padding и margin. И не потому что на фартуках разное количество ягод, а потому что — ну совсем разные же вещи. Допустим, padding входит в box-sizing, а margin — нет. С помощью margin можно центрировать элемент, а с помощью padding — нет. Не говоря уже про margin collapse и другие нюансы, тьма их.
Для дизайнера отступ есть отступ. Конечно, хороший дизайнер должен что-то понимать в вёрстке. Но всё это внешнее, наносное, мышление такими категориями чуждо дизайнерскому художественному восприятию.

Буква Г — лоГика
Даже когда речь идёт о статичной странице, существуют проблемы взаимопонимания. Интерактив — это проблемы в квадрате.
Дизайнер методично прорисовывает каждое состояния элемента. Логика, стоящая за этими состояниями, для него вполне очевидна. Он отдаёт макет фронтендеру. Фронтендер смотрит — да, логика действительно очевидна. И немедленно имплементирует её. То, что очевидность у них разная, становится ясно сильно потом, когда уже закрылся временной разлом.

👉 @seniorFront
​​Хочешь бесплатно освоить JavaScript?

Эти два канала научат тебя писать фронт и бэк на JS

👉 Frontender's notes - один из самых больших каналов по фронту с инфой и хаками по фронту

👉 Серверный JavaScript | Node.JS - о серверной стороне JS. Подойдет для фулстаков и тем кто хочет ими стать.

Добро пожаловать!
This media is not supported in your browser
VIEW IN TELEGRAM
Text scroll and hover effect

Эффекты при прокрутке и наведении созданы библиотекой gsap.

👉 @seniorFront
This media is not supported in your browser
VIEW IN TELEGRAM
Movie Poster Interaction

Реализовано на чистых HTML и CSS.

👉 @seniorFront
Media is too big
VIEW IN TELEGRAM
Circular Progress Bar

В этом видео создается круговая диаграмма при помощи CSS conic-gradient()

👉 @seniorFront
This media is not supported in your browser
VIEW IN TELEGRAM
3d slider

Эффект 3D создается при помощи CSS transform. Автоматическая прокрутка реализована в JS.

👉 @seniorFront
This media is not supported in your browser
VIEW IN TELEGRAM
Accordeon

Реализовано без JS, но с использованием нового CSS селектора :has()

👉 @seniorFront
Уверен, что твой код — эталон красоты, изящества и оригинальности? Тогда скорее регистрируйся на Конкурс красоты кода от Сбера 👑

Забрать звание «Автор самого красивого кода» и один из пятнадцати iPhone 14 можно за 3 простых шага:

✔️ Выбери одну из пяти дисциплин: Python, Java, Data Science, Frontend или Android.
✔️ Вспомни или напиши с нуля свой безупречный код до 18 сентября по ссылке.
✔️ Дождись 21 сентября — именно в этот день жюри объявят победителей.

Желаем удачи и кода без багов 💚
Media is too big
VIEW IN TELEGRAM
Active Icon Navigation Menu

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

👉 @seniorFront
This media is not supported in your browser
VIEW IN TELEGRAM
Repost Button with CSS Icon Sprite and Filtering

При выборе чекбоксов изменяются значения CSS переменных. При нажатии запускаются CSS трансформации.

👉 @seniorFront
Сравнение строк

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

Первый параметр функции - создаваемая строка.
Второй и третий - используемые строки

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

Примеры:
isMatching("email box", "b aIl", "Mo x e") return true
isMatching("bouh", "0b", "uh") return false
isMatching("kata", "kt", "aaa") return false


👉 @seniorFront
Media is too big
VIEW IN TELEGRAM
Loading...

Реализовано с использованием библиотеки THREE.js.

👉 @seniorFront
prefers-reduced-motion

Одно из значений директивы @media для проверки пользовательских настроек воспроизведения анимации.

Большинство современных операционных систем позволяют пользователю настраивать параметры анимации в настройках. Медиа-запрос prefers-reduced-motion позволяет определить, отключена или уменьшена анимация в системе и применять стили CSS, которые это учитывают.

С помощью prefers-reduced-motion можно замедлить или полностью отключить анимацию.
У prefers-reduced-motion есть два значения:
- no-preference — настройки анимации по умолчанию.
- reduce — анимация отключена.
В примере добавляем плавную прокрутку только для пользователей, у которых не отключена анимация на уровне системы.
@media (prefers-reduced-motion: no-preference) {
html {
scroll-behavior: smooth;
}
}


👉 @seniorFront
This media is not supported in your browser
VIEW IN TELEGRAM
Navigation bar concept

Свёрстано на HTML и CSS. В JS прописана логика смены CSS классов при клике.

👉 @seniorFront