Анимированные кнопки выравнивания на CSS
![Анимированные кнопки выравнивания на CSS Программирование, IT, Web-программирование, Веб-дизайн, Веб-разработка, CSS, Гифка](https://cs14.pikabu.ru/post_img/2022/09/13/9/1663084087178755491.jpg)
Вроде бы простая, но приятная анимация кнопок выравнивания текста. Выполнена с помощью SVG и CSS. Если решите сделать свой редактор текста, то можно использовать эту или похожую анимацию выравнивания:
Вроде бы простая, но приятная анимация кнопок выравнивания текста. Выполнена с помощью SVG и CSS. Если решите сделать свой редактор текста, то можно использовать эту или похожую анимацию выравнивания:
Телеграм - https://t.me/havaevau_webstudy
Сodepen-проект «My Stuff» наглядно демонстрирует современные возможности препроцессоров для HTML и CSS, а именно Pug и SCSS. Посмотрите сами, как относительно малым количеством строк, можно реализовать интересный анимированный рисунок:
Полоса прокрутки присутствует сегодня на любом сайте видимо или невидимо. Это вполне обыденный элемент, на который обычно никто не обращает особого внимания.
По моему же мнению - это отличный способ закрепить сайт в памяти пользователя, поэтому давайте научимся с ней работать.
Телеграм - https://t.me/havaevau_webstudy
Основы
Бывает, что содержимое элемента не помещается в нем, так как оно слишком велико. И чтобы сделать содержимое прокручиваемым, можно использовать overflow: auto. Благодаря ему полосы прокрутки будут отображаться по умолчанию.
Вы можете кастомизировать скроллбар используя свойства scrollbar с префиксом -webkit в сочетании с обычными свойствами ширины scrollbar-width и цвета scrollbar-color.
Хочу сказать про плагин postcss-scrollbar - он создает свойства скроллбара с префиксом -webkit из стандартных свойств. Это дает возможность получить получить кросс-браузерные стили, например через такой код:
.scroll-container {
overflow: auto;
scrollbar-width: thin;
scrollbar-color: hsl(0 0% 50%);
/* postcss-scrollbar will add the -webkit version automatically! */
}
Темы и scrollbar
На многих сайтах при переключении на темный режим скроллбары "застревают" в белом
Есть отличные свойства - color-scheme, через которые это можно исправить. Но юзать их вам придется не только в ситуациях с полосой прокрутки. Можете почитать об этом более подробно здесь - https://web.dev/color-scheme/
html {
/* defer to OS preference */
color-scheme: dark light;
/* override, assuming the theme toggler sets a data-theme attribute */
&[data-theme=light] { color-scheme: light; }
&[data-theme=dark] { color-scheme: dark; }
}
Как предотвратить смещение верстки
При использовании overflow: auto может возникнуть проблема - смещение верстки. Решить её поможет overflow: overlay - скроллбар никогда не будет занимать место и/или overflow: scroll - полоса прокрутки всегда будет на месте
А с помощью scrollbar-gutter: stable вы можете "сказать" браузеру, чтобы он зарезервировал место для полос прокрутки.
.scroll-container {
overflow: scroll;
@supports (scrollbar-gutter: stable) {
overflow: auto;
scrollbar-gutter: stable;
}
}
На этом все, прокачивайте свои скроллбары, пишите: был ли у вас опыт в их кастомизации?
Перевод статьи: How to Use CSS Math Functions: calc, min, max, clamp
Автор: Alex Ivanovs
Примечание: примеры кода лучше всего просматривать на codepen. Приятного чтения!
Логические функции CSS calc(), clamp(), min() и max() поддерживаются всеми современными веб-браузерами. Но, несмотря на то, что они легко доступны, простой поиск на GitHub говорит нам о том, что внедрение этих функций идет медленно. Давайте выясним.
Я знаю, что вы могли подумать: "Математика?! Фу, с глаз моих долой". Но спросите себя — хватит ли у вас силы воли противиться удовлетворению от идеально выровненных вложенных друг в друга контейнеров?
Знаете, после того, как я написал статью о различных хитростях CSS (она была подобрана несколькими публикациями), я увидел, что на сайт приходит трафик по таким ключевым словам, как «как центрировать элемент div», что забавно, потому что я никогда не упоминал об этом в статье конкретно. Но это показывает, что разработчикам нужен доступ к быстрым фрагментам кода, которые можно легко реализовать повторно.
Таким образом, это будет предпосылкой для этого урока.
Update: Мне удалось написать подробное руководство по центрированию элементов в CSS.
Я сосредоточусь на теме математических функций CSS в контексте достижения различных результатов компоновки. Например, Как создать адаптивный контейнер с помощью нескольких строк CSS, как добавить адаптивный padding и как заставить сайдбар вести себя как сайдбар.
Давайте взглянем.
calc()
Функция calc() поддерживает четыре арифметические операции: сложение (+), вычитание (-), умножение (*) и деление (/). Эта функция в основном используется для расчета динамической ширины и высоты контейнера для создания адаптивного layout.
И вот такой результат:
Но calc() больше всего выделяется, когда он используется для упорядочивания элементов с учетом определенного значения. Как правило, адаптивный дизайн достигается путем поиска конкретных точек и последующего индивидуального написания их логики. С calc() — мы можем добиться адаптивного layout только с одной спецификацией, что делает его намного более удобным.
Давайте рассмотрим конкретный пример использования display: flex;. Наша цель — создать рядом 3 элемента, зависящих от ширины контейнера (100%). Мы также хотим добавить отступ в 30 пикселей между каждым элементом, и, конечно же, нам необходимо, чтобы они были отзывчивыми!
Пример кода:
Перейдите на сайт оригинальной статьи (ссылка в начале статьи через "How to Use CSS Math Functions: calc, min, max, clamp") или на codepen (ссылка через "пример кода"), и там вы сможете изменить размер экрана, чтобы увидеть, как это работает.
Поскольку мы хотим иметь отступ в 30px между каждым элементом, мы вычитаем 90 пикселей из ширины контейнера (100%) и делим его на 3, чтобы указать, сколько элементов у нас есть.
Когда вы измените размер приведенного выше результата, вы заметите, что все элементы соблюдают соответствующий отступ, оставаясь при этом чувствительными к ширине контейнера. Неплохо.
min()
Функция min() используется для установки наименьшего допустимого значения. Она принимает два разных значения, разделенных запятой, и поддерживает арифметические выражения.
Допустим, вы указали font-size: min(25px,1vw); — в этом примере font-size никогда не будет больше 25 пикселей и будет уменьшаться до 1vw в зависимости от размера viewport.
Мы также можем использовать min() для управления шириной элементов контейнера.
Пример кода:
Перейдите на сайт оригинальной статьи (ссылка в начале статьи через "How to Use CSS Math Functions: calc, min, max, clamp") или на codepen (ссылка через "пример кода"), попробуйте изменить размер экрана.
В этом контексте div элемент внутри нашего контейнера не может превышать 800 пикселей в ширину, несмотря на то, что контейнер имеет максимальную ширину 1000 пикселей.
max()
Функция max() позволяет нам сделать прямо противоположное. Из двух значений, которые мы указываем внутри max() — большее из них будет иметь приоритет.
Перейдите на сайт оригинальной статьи (ссылка в начале статьи через "How to Use CSS Math Functions: calc, min, max, clamp") или на codepen (ссылка через "пример кода"), попробуйте изменить размер экрана на меньший, чтобы посмотреть, что произойдет.
Как видите, контейнер соблюдает width: 100%;, но не опускается ниже указанной отметки 200 пикселей, так как это самое большое значение для контейнера.
Функция max() особенно полезна при применении адаптивных margins. Как правило, когда вы используете множество мелких элементов в макете, они загромождают экран после изменения размера. С помощью max() мы можем установить приоритет для определенного margin, чтобы учесть ширину контейнера.
Перейдите на сайт оригинальной статьи (ссылка в начале статьи через "How to Use CSS Math Functions: calc, min, max, clamp") или на codepen (ссылка через "пример кода"), попробуйте изменить размер экрана на меньший, чтобы посмотреть на это в действий.
Как видите, несмотря на изменение ширины viewport, кнопки всегда сохраняют свои поля в 4 пикселя.
Функция clamp() используется для определения допустимого диапазона различных значений элемента макета: minimum, preferred и maximum. Чаще всего clamp() используется для установки диапазона допустимых значений в типографике, чтобы создать эффект fluid typography.
По сути, это кульминация функций min() и max().
Например:
font-size: clamp(1rem, 4vw + 1rem, 4rem);
И вот как это выглядит:
В этом контексте, мы стилизуем наш заголовок h2 с минимальным значением 1rem, максимальным 4rem и устанавливаем предпочтительный размер 4vw (единицы viewport) + 1rem. Как вы уже заметили, из приведенного выше демо, по мере изменения области просмотра изменяется и размер шрифта заголовка.
На этом мы заканчиваем знакомство с наиболее широко поддерживаемыми математическими функциями в CSS.
Следующий раздел полностью посвящен примерам и различным вариантам использования этих функций. В целом, мы сосредоточены на создании адаптивных элементов дизайна, которые в противном случае пришлось бы писать с помощью медиа-запросов.
Создание адаптивного sidebar с помощью Grid
Можете ли вы реализовать полнофункциональный адаптивный sidebar всего двумя строками CSS? Конечно.
Для этого демо мы создадим адаптивный sidebar, используя display: grid; и настроим отзывчивость с помощью grid-template-columns. В частности, мы будем использовать функции fit-content и minmax() для установки наших ограничений.
Перейдите на сайт оригинальной статьи (ссылка в начале статьи через "How to Use CSS Math Functions: calc, min, max, clamp") или на codepen (ссылка через "пример кода"), попробуйте изменить размер экрана, чтобы посмотреть, что произойдет.
Давайте разберемся, что здесь происходит.
Сначала, мы применяем fit-content, чтобы объявить предпочтительный размер нашего sidebar. Значение, которое мы указываем здесь, будет либо увеличивать боковую панель (в зависимости от размера viewport), либо уменьшать ее на небольших экранах. Все время учитывая количество контента, которое у вас есть на боковой панели.
После этого мы применяем minmax(), потому что мы не хотим, чтобы боковая панель перекрывалась областью контента на странице. В нашем случае для параметра установлено значение 55vw, которое будет использоваться для мобильного дисплея, и 35ch, которое будет использоваться для больших viewports. И, наконец, мы применяем the Grid-specific fraction unit, чтобы заполнить пространство, когда это позволяет viewport.
Применение адаптивного Gap для Flexbox Layouts
Это аналогичный пример адаптивного padding, который мы рассматривали ранее. Но для этого демо мы используем flexbox и свойство gap вместе с clamp().
Перейдите на сайт оригинальной статьи (ссылка в начале статьи через "How to Use CSS Math Functions: calc, min, max, clamp") или на codepen (ссылка через "пример кода"), попробуйте поиграть с размером.
Указав gap: clamp(5px, 1vw, 25px); мы говорим браузеру адаптировать gap между каждой колонкой в зависимости от размера viewport. Итак, если размер окна превышает 1vw — gap увеличивается до 25 пикселей, тогда как маленький viewport уменьшит его до 5 пикселей (например, на мобильных устройствах).
Кстати, вы могли заметить, что я использовал интересное свойство для центрирования блоков, это place-content: center;. Это сокращенное свойство, которое поддерживает позиционирование содержимого в различных направлениях. Подробнее об этом можно прочитать на MDN.
Can I Use: Поддержка тут как тут
Если мы посмотрим на данные Can I Use для математических функций — поддержка явно есть. IE их не поддерживает, но мы также знаем, что IE прекращает работу. В июне 2022 года, если быть точным.
Использование математических функции CSS с переменными
Итак, одна из вещей, которая не была затронута в этом руководстве, — это использование переменных CSS вместе с различными функциями. Мои рассуждения довольно просты, это практическое введение в использование математических функций для адаптивного дизайна.
Я не следую style guide и не работаю над фреймворком.
Но вполне возможно использовать объявления переменных для достижения еще больших результатов, особенно для сложных структур layout.
Заключение
Были бы вы рады попробовать некоторые из этих концепций в своем следующем проекте?
Я должен сказать, что CSS прошел долгий путь с начала 2010-х годов. На самом деле, если мы сможем делать большую часть наших адаптивных стилей без медиа-запросов, это привлечет еще больше разработчиков, которые хотят писать код и не беспокоиться о совместимости между различными устройствами.
Спасибо за прочтение этой статьи!
Наш телеграм https://t.me/havaevau_webstudy
Какая его роль?
Прелоадер — это небольшая анимация, которую человек видит когда заходит на веб-страницу, другими словами — это индикатор загрузки.
Это значимый элемент в веб-разработке с точки зрения юзерфрендли. Если человек заходит на "тяжёлый сайт", напичканный скриптами, файлами и т.п., ему нужно сказать что "всё норм, сайт загружается, подожди".
Сказать это красиво помогут прелоадеры. Вот несколько примеров, которые сможет реализовать даже начинающий.
1. Лесенка загрузки
Исходный код на Codepen - https://codepen.io/ispal/pen/mVaaJe
2. Прелоадер на CSS с использованием sass map для определения цвета
Исходный код на Codepen - https://codepen.io/hexagoncircle/pen/eZawWv
3. А как вам такое?
Исходный код на Codepen - https://codepen.io/derekmorash/pen/grvOZx
4. Этот прелоадер был сделан для веб-приложения из сферы здравоохранения
Исходный код на Codepen - https://codepen.io/chrissamuels/pen/WNybqm
5. Сразу несколько прелоадеров, сделанных с помощью SVG анимации
Исходный код на Codepen - https://codepen.io/nikhil8krishnan/pen/rVoXJa
Телеграм - https://t.me/havaevau_webstudy
Начнем с определения
Объектно-ориентированное программирование (ООП) — это подход, при котором программа рассматривается как набор объектов, взаимодействующих друг с другом. У каждого есть свойства и поведение. ООП ускоряет написание кода и делает его более читаемым.
Данный подход актуален во всех языках программирования и будет полезен разработчику как на Java Script, так и на Typescript, и вообще всем разработчикам на C-подобных языках.
Зачем нужен ООП?
Обычно все начинают изучение программирования с написания программ в процедурном стиле. Программа ожидает на вход какие-то данные, выполняет ряд каких-то процедур (они же называются функциями) и после этого возвращает какой-то результат.
Пример программы на языке typescript в процедурном стиле:
Есть две переменные это ширина и высота, есть функция, которая ширину и высоту принимает аргументами и по итогу эта функция возвращает результат умножения ширины на высоту, то есть площадь прямоугольника. По итогу вызвав эту функцию с какими-то данными, мы можем получить площадь прямоугольника.
const width = 5;
const height = 10;
function calcRectArea(width; height) {
return width * height;
}
calcRectArea(width, height)
Изначально все программы писались именно с процедурным подходом, но когда программы стали большими, стало понятно что такой подход не годится, сложно управлять какими-то сущностями, сложно делать декомпозицию. И когда процедурного программирования стало недостаточно, был придуман объектно-ориентированный подход.
Шпаргалка по принципам ООП
Главное
- Инкапсулируйте все, что может изменяться;
- Уделяйте больше внимания интерфейсам, а не их реализациям;
- Каждый класс в вашем приложении должен иметь только одно назначение;
- Классы — это их поведение и функциональность.
Базовые принципы ООП
- Абстракция — отделение концепции от ее экземпляра;
- Полиморфизм — реализация задач одной и той же идеи разными способами;
- Наследование — способность объекта или класса базироваться на другом объекте или классе. Это главный механизм для повторного использования кода. Наследственное отношение классов четко определяет их иерархию;
- Инкапсуляция — размещение одного объекта или класса внутри другого для разграничения доступа к ним.
1. Используйте следующее вместе с наследованием
- Делегация — перепоручение задачи от внешнего объекта внутреннему;
- Композиция — включение объектом-контейнером объекта-содержимого и управление его поведением; последний не может существовать вне первого;
- Агрегация — включение объектом-контейнером ссылки на объект-содержимое; при уничтожении первого последний продолжает существование.
2. Не повторяйся (Don’t repeat yourself — DRY)
Избегайте повторного написания кода, вынося в абстракции часто используемые задачи и данные. Каждая часть вашего кода или информации должна находиться в единственном числе в единственном доступном месте. Это один из принципов читаемого кода.
3. Принцип единственной обязанности
Для каждого класса должно быть определено единственное назначение. Все ресурсы, необходимые для его осуществления, должны быть инкапсулированы в этот класс и подчинены только этой задаче.
4. Принцип открытости/закрытости
Программные сущности должны быть открыты для расширения, но закрыты для изменений.
5. Принцип подстановки Барбары Лисков
Методы, использующие некий тип, должны иметь возможность использовать его подтипы, не зная об этом.
6. Принцип разделения интерфейсов
Предпочтительнее разделять интерфейсы на более мелкие тематические, чтобы реализующие их классы не были вынуждены определять методы, которые непосредственно в них не используются.
7. Принцип инверсии зависимостей
Система должна конструироваться на основе абстракций «сверху вниз»: не абстракции должны формироваться на основе деталей, а детали должны формироваться на основе абстракций.
Применяли ли вы данный подход на практике? Строчите в комментарии
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
Дисклеймер.
Да, да, да бла-бла-бла, очередной программист, вас уже как говна за баней (кстати, вопрос к мирозданию, я никогда не видел за баней говна, кто-то видел?), стать программистом невозможно, конкуренция бешенная, никому вы не нужны, работу не найдешь, на джуна требований выше крыши, нужно образование и т.п и etc.
Привет Пикабу!
Этим постом я хочу обозначить начало своего длинного и сложного пути в мир IT. так будет проще мне, это будет дополнительная мотивация для меня, и в процессе обучения я буду писать о своих впечатлениях, выводах и разочарованиях, которые, скорее всего, станут полезны тем, кто решит идти по этому пути самостоятельно.
Коротко о себе: мне 29 лет, высшее гуманитарное образование, служу старшим бортпроводником в одной из крупнейших авиакомпаний страны, имею прекрасный английский, базовый французский и польский. В школе на информатике писал код на Pascal, а точнее рисовал на нём, было забавно. Плачу ипотека и имею жена :)
Зачем я хочу в айти?
Я в своей профессии 6 лет и дорос до максимума, уйти выше не принесет денег, морального удовлетворения, удовольствия, т.к. всё скатится в унылую рутину. Облетел почти весь мир, был очень много где, узнал много чудесных людей.
Я хочу стать модным словом, а именно "гражданином мира". Иметь профессию, которая востребована по всему земному шару, работать на фирму зарегистрированную в США/ЕС/РФ и т.д., а жить в это время во Вьетнаме или ещё хоть где, и да я прекрасно понимаю, что до такого уровня расти долго. Но главное, что эта перспектива ЕСТЬ. Возможность оперативных релокаций в реалиях сурово-быстро изменяющегося мира, это суперспособность!
Что я умею?
Ничего Читать, писать, говорить на английском языке, разбираюсь в железной части ПК. Умею быть сфокусированным, целеустремленным.
Чем я хочу заниматься?
А вот это вопрос номер один.
Я усердно гуглил, смотрел ютубы, читал статьи про ЯП, что это такое, что с ними делают, где они нужны, кто из них умер/умирает/умрет. И я смог успешно выбрать 3 языка программирования. разумеется, сразу 3 осилить с нуля невозможно, ненужно, не получится, поэтому я буду определяться. Как сказал один из крутых разработчиков со стажем >20 лет, берите язык, занимайтесь им 10-14 дней по 3-4 часа ежедневно и вывод напросится сам собой. Мне эта идея отсева очень понравилась, потому что:
а. Я смогу руками потрогать все языки, писать код.
б. Я буду опираться исключительно на своём мнении об этом ЯП.
в. Начиная с нуля, любые знания по ЯП, включая логику написания кода будут полезны для формирования общего кейса знаний.
Из чего выбираем то?
1. JS
Что хочет нуб? Правильно, писать код, чтобы сразу были видны результаты того, что пишешь. Фронтенд был первой вещью, которая меня заинтересовала в IT. Это красиво, интересно, есть спрос. По информации с stack overflow JS ЯП №1 для релокации в другие страны. Конечно, понимаю о обязательном параллельном изучении HTML, CSS, React, TS и дохрена чего еще.
Как буду учить:
learn.javascript.ru, книга Кантора по JS (та же инфа с learn.javascript, но упорядоченная), книга Чиннатхамби, видеоуроки Богдана Стащюка с udemy.
2. Java
Один из лидеров по вакансиям, зарплатам, востребованности. Финансовые системы, БД и многое другое написаны на Java. Замены ей, вероятно, никогда не будет ибо зачем трогать и менять то, что чудесно работает.
Как буду учить:
Java для начинающих: с нуля до сертификата Oracle курс Заура Трегулова с udemy, javarush.
3. C++
Что? Вы сказали игры?
ябудуустанавливатьвсевсеигры
Последний избранник С++. Говорят крутой язык для задротов. Говорят игры пишут на С++, unreal engine с нами в команде. Язык интересный, сложный, мозги точно будут кипеть, геймдев это круто и хотелось бы там очутиться. хотя писать игры не так интересно, как в них играть. Ну и кроме геймдева С++ входит в топ востребованных языков программирования.
Как буду учить: #simplecode youtube, Доусон Изучаем С++ через программирование игр.
Finnally
Я поставил трекер себе на телефон и буду заниматься каждым из ЯП 40 часов (~4 часа в день ~10 дней на язык). Ровно за 40 часов я должен буду сделать вывод с чем я пойду дальше и буду интенсивно учить, а что отложу на потом/забуду нахрен как страшный сон.
Обещаю, что буду публиковать отчеты на Пикабу минимум раз в неделю, жду от вас, дорогие мои, поддержки, полезных советов, слов наставлений, интересных ресурсов для изучения, флуда( разумеется, как без него).
P.S.
Да, программисты нахер никому не нужны, чё вы лезете все сюда. #мамаятожевайти
Идея и пост мои, учиться буду я, тег моё.