Programmer Way | IT и фриланс

Programmer Way | IT и фриланс

@programmerwayit

Делиться моим путём до вершин IT индустрии!Топовый чат: t.me/best_of_it

1 936подписчиков
Ежемесячно🇷🇺

Похожие каналы

Все →

Последние посты

​​Min(), max() и clamp().Динамика важна, как часто вам приходилось делать динамический адаптив? Иногда нам сложно манипулировать процентами или другими динамическими величинами в css. Чтобы задать некие рамки для динамических значений можно использовать функции min, max и clamp. У них уже достаточно неплохая поддержка, поэтому если вам не надо поддерживать старые браузеры, то можете смело пользоватьсяСинтаксис очень простой: в функцию min через запятую передаём значения, из которых функция вернёт наименьшее, max соответственно — большее. Clamp тоже довольно полезная функция, которая создаёт уже диапазон значенийПриведу простой пример: у нас есть главный экран и фиксированная шапка, экран сделан фулскрином, но контент находиться не по центру экрана, а сдвинут с помощью padding на 30vh вниз. Если просто задать верхний отступ 30vh, то все будет отлично работать, но если высота устройства будет слишком маленькая, то контент будет налезать на шапку, удобным решением будет написать padding-top: max(30vh,100px) тогда если 30vh будет меньше 100px, то все будет отображаться корректноПрикреплю статью с более подробным описанием работы этих css-функций, в частности и про работу clamp

6 мая 2022 г.5 590В Telegram

​​Параллакс галерея.Крутая анимированная галерея с использованием параллакса и различных анимаций, написано с использованием swiper, автор использует динамические величины: vh, vw, чтобы все отображалось адекватно на разных расширениях, заголовок имеет градиентный цвет, а на фоне небольшие блики текущей картинки, что добавляет атмосферности для такой галереи, видео небольшое, но в нем много полезных моментов, которые могут пригодиться в других проектах, демо:

30 апр. 2022 г.4 450В Telegram
Programmer Way | IT и фриланс — пост в ТГ канале

Таймер на чистом js.Сделал анимированный таймер, получилось создать эффект слайдера с задержкой посередине. Для кнопок решил использовать делегирование событий, чтобы можно было добавлять сколько угодно кнопок, но не прописывать постоянно событие клик на каждую. Для каждой кнопки задал специальный data-атрибут со временем выполнения таймера, например "2:30", потом это все преобразуется в массив [2,3,0], таким образом можно удобно изменять значение каждого столбца времени, демо:

26 апр. 2022 г.3 250В Telegram

​​Async await.В прошлом посте мы разобрали примерную работу промисов, они отлично справляются со своей задачей, но существует также и более новый способ взаимодействия с асинхронным кодом — async await, под капотом используются те же промисы, но синтаксис более простой и читабельный. Прежде всего, чтобы javascript понял, что мы будем работать в асинхронной функции, нужно перед ключевым словом function написать async, теперь мы можем перед асинхронной операцией прописать await и присвоить результат в соответствующую переменную, например response, и весь следующий код будет выполняться только после того, как выполниться асинхронный код. Теперь мы можем работать с переменной response так, как будто это обычная переменная и мы пишем синхронный код, если мы хотим после этого сделать еще один запрос, то нам нужно всего лишь еще раз создать переменную и написать await перед запросом. Вот небольшое видео про работу async await:

21 апр. 2022 г.3 120В Telegram

​​Promise.Интерфейс для обработки асинхронных операций. Promise позволяет избавляться от вложенности и выполнять код так, как если бы он был синхронным. Для создания промиса нужно внутрь new Promise() поместить функцию(executor), ее аргументы resolve и reject — колбэки. Внутри этой функции мы делаем различные асинхронные действия, по завершению которых, в зависимости от результата, вызываем один из колбэков. Если мы успешно получили результат, то вызываем resolve и передаём туда наше значение. Если произошла ошибка(сервер не ответил или ответ не совпал с тем, что мы ожидали), то мы вызываем reject с объектом ошибкиС созданием разобрались, но как нам получить результат работы нашего промиса(ответ от сервера, изменённое значение переменной), для этого мы используем метод then, который нужно вызвать у промиса и, по его завершению, мы получим доступ к данным, которые были переданы в resolve, если мы хотим обработать ошибку, то используем метод catch, куда первым аргументом передается ошибка. Если нам нужно в любом случае сделать какое-то действие, то можно использовать метод finally, он отработает в любом случае, это хорошо подходит для очистки, например остановка загрузки, так как нам не так важен результатPromise.then тоже возвращает промис, поэтому мы можем вызвать на нем ещё один then, что позволяет нам создавать большие цепочки асинхронных запросов, избегая вложенности Зачастую нам не приходиться создавать promise через new Promise, этим занимаются библиотеки для работы с асинхронностью, например axios, но нужно знать то, что находиться под капотом у всех этих библиотек, чтобы грамотно с ними работать, ведь можно на каждую задачу создать по библиотеке/фреймворку и спокойно их использовать, но программистам платят не за знание определённых синтаксических конструкций, а за решения и то, насколько они верные, зависит от знания тонкостей того или иного языка или библиотеки, ну и конечно же мышления. Приложу статью, в которой будет более детально рассказано про работу с

18 апр. 2022 г.3 080В Telegram

​​Createx.Сверстал простенький многостраничник по одному марафону, открыл для себя пару новых моментов: переиспользование блоков и создания их с учетом возможности смены контента; разделение блоков по отдельным html файлам, подход неплохой, но когда слишком много секций, то становиться сложно ориентироваться, поэтому не буду внедрять к себе. Из необычного: использовал библиотеку скролла Smooth Scroll и библиотеку для создания кастомных селектов Choices.jsСам сайт простой, я бы сказал шаблонный, но именно такие чаще всего и попадаются, если мы говорим о типичных многостраничниках, интересно было создавать независимый блок и потом просто внедрять его в разных местах, посмотреть готовый вариант и код:

10 апр. 2022 г.2 960В Telegram

​​Перенос домена.Решил перенести свой домен с reg.ru к другому поставщику услуг, причин было несколько, одна из них — возможность продлевать хостинг и домен с одного аккаунта. Некоторые из вас тоже могут столкнуться с такой задачей, например, если другой поставщик предлагает вам лучшие условия. Поэтому решил поделиться своим опытомПеред переносом, нужно уточнить некоторые моменты с вашим поставщиком услуг, если вы подходите под требования, то можно продолжать, иногда может случаться так, что нужно подождать некоторое время перед переносом домена. Затем вам нужно разблокировать свой домен для переноса, посмотреть включена ли блокировка можно в базе данных Whois, там же вы можете найти различную информацию о домене, например, если хотите связаться с его владельцемДальше запросите Auth-code, который нужно будет указать при запросе на перенос у нового поставщика, и в течении 5 дней домен будет перенесён, у меня это заняло где-то 3 дня, так как на тот момент reg.ru был перегружен. Как вы видите это довольно непростой процесс, но делать вы это будете не часто, хотя с первого раза у меня возникло много вопросов. Я запросил перенос не указывая Auth-code, поэтому мне пришлось обращаться в техподдержку за помощью, благо все прошло хорошо и теперь я могу оплачивать свой домен и хостинг в одном месте

8 апр. 2022 г.2 760В Telegram

​​CurrentColor.На самом деле это очень полезное значение, позволяющее удобно контролировать смену цвета сразу у нескольких элементов. Например: вы создали псевдоэлемент линии для ссылки, у которой при ховере должен измениться цвет самого текста и линии, придётся обратится к самому элементу и элементу линии для изменения цвета, но можно заранее в :before или :after прописать background: currentColor тогда нужно будет обращаться только к родителю. Либо если внутри ссылки есть svg иконка, имеющая тот же цвет, что и у текста, то для самой иконки нам нужно написать fill: currentColor, таким образом мы сокращаем код и не повторяемся

1 апр. 2022 г.3 120В Telegram

​​Svg в html.Svg — разметка позволяющая создавать изображения, которые можно масштабировать без потери качества. Дизайнеры очень часто используют векторные иконки, логотипы и другие элементы дизайна на странице, так вот, как лучше взаимодействовать с данной разметкой? Есть несколько способов, выбирайте тот, который понравиться1) При помощи отдельного файла, самый простой и понятный способ. Загружаете файл с форматом .svg из макета, помещаете в папку с картинками и через тег img выводите на станицу, но у этого способа есть явный недостаток — нельзя взаимодействовать с разметкой: нельзя поменять цвет, обводку, радиус и тд. Используйте этот вариант, если вам не нужно обращаться к svg, например если это какой-то элемент декора или иконка, которая статична, не имеет ховеров и не должна анимироваться 2) Вставить svg прямо в разметку, все так же сохраняете изображение к себе на компьютер, открываете его через редактор и копируете содержимое, потом просто вставляете в разметку и получаете готовую икону, которую можно спокойно изменять, очень просто и удобно, но также имеет свои недостатки, например, если svg изображение очень большое и состоит из множеств элементом, то будет неудобно прописывать ему стили, а также разбираться в коде, если таких изображений много. Подойдёт в тех случаях, когда векторной графики на сайте не много, либо если у вас стоит задача детально работать с svg, добавлять различные анимации, следить за состоянием, изменять при помощи js и тд3) Использование svg спрайтов. Этот способ решает проблему бессмысленного нагромождения кода, если коротко, то это одно большое svg, в котором через тег symbol вставлены другие svg. У каждого элемента есть id, с помощью которого и будет находиться нужное изображение, для этого используется еще один тег — use, где в параметре xlink:href нужно передать путь к файлу(если создали в отдельном файле) и id, пользоваться таким svg можно точно так же, как и обычным, добавлю видео с подробным объяснением svg спрайтов4) Иконочны

7 мар. 2022 г.3 320В Telegram

​​Крутой 3d слайдер.Отличный пример кастомизации swiper.js, много различных интересных элементов, которые в совокупности создают особый эффект, очень круто проработан фон и тени, добавлен дым, освещение и мерцание, что добавляет еще больше атмосферности для слайдера, создан крутой 3d эффект для картинок, демо прикреплю к посту, видео идёт всего час, поэтому можете выделить себе время и насладиться просмотром:

2 мар. 2022 г.2 990В Telegram