Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Открой для себя волшебный мир реальной рыбалки. Лови реальную рыбу на реальных водоемах! Исследуй новые рыболовные места и заполучи заветный трофей.

Реальная Рыбалка

Симуляторы, Мультиплеер, Спорт

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

CSS + IT

С этим тегом используют

HTML Программирование Верстка Javascript Web Frontend IT юмор Программист Юмор Работа Картинка с текстом Разработка Все
140 постов сначала свежее
13
Web.Study
Web.Study
2 года назад
Лига программистов

Как использовать математические функции CSS⁠⁠

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Перевод статьи: 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.


Пример кода:

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

И вот такой результат:

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Но calc() больше всего выделяется, когда он используется для упорядочивания элементов с учетом определенного значения. Как правило, адаптивный дизайн достигается путем поиска конкретных точек и последующего индивидуального написания их логики. С calc() — мы можем добиться адаптивного layout только с одной спецификацией, что делает его намного более удобным.

Давайте рассмотрим конкретный пример использования display: flex;. Наша цель — создать рядом 3 элемента, зависящих от ширины контейнера (100%). Мы также хотим добавить отступ в 30 пикселей между каждым элементом, и, конечно же, нам необходимо, чтобы они были отзывчивыми!

Пример кода:

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Перейдите на сайт оригинальной статьи (ссылка в начале статьи через "How to Use CSS Math Functions: calc, min, max, clamp") или на codepen (ссылка через "пример кода"), и там вы сможете изменить размер экрана, чтобы увидеть, как это работает.

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Поскольку мы хотим иметь отступ в 30px между каждым элементом, мы вычитаем 90 пикселей из ширины контейнера (100%) и делим его на 3, чтобы указать, сколько элементов у нас есть.

Когда вы измените размер приведенного выше результата, вы заметите, что все элементы соблюдают соответствующий отступ, оставаясь при этом чувствительными к ширине контейнера. Неплохо.

min()


Функция min() используется для установки наименьшего допустимого значения. Она принимает два разных значения, разделенных запятой, и поддерживает арифметические выражения.

Допустим, вы указали font-size: min(25px,1vw); — в этом примере font-size никогда не будет больше 25 пикселей и будет уменьшаться до 1vw в зависимости от размера viewport.

Мы также можем использовать min() для управления шириной элементов контейнера.

Пример кода:

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Перейдите на сайт оригинальной статьи (ссылка в начале статьи через "How to Use CSS Math Functions: calc, min, max, clamp") или на codepen (ссылка через "пример кода"), попробуйте изменить размер экрана.

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

В этом контексте div элемент внутри нашего контейнера не может превышать 800 пикселей в ширину, несмотря на то, что контейнер имеет максимальную ширину 1000 пикселей.

max()


Функция max() позволяет нам сделать прямо противоположное. Из двух значений, которые мы указываем внутри max() — большее из них будет иметь приоритет.


Пример кода:

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Перейдите на сайт оригинальной статьи (ссылка в начале статьи через "How to Use CSS Math Functions: calc, min, max, clamp") или на codepen (ссылка через "пример кода"), попробуйте изменить размер экрана  на меньший, чтобы посмотреть, что произойдет.

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Как видите, контейнер соблюдает width: 100%;, но не опускается ниже указанной отметки 200 пикселей, так как это самое большое значение для контейнера.

Функция max() особенно полезна при применении адаптивных margins. Как правило, когда вы используете множество мелких элементов в макете, они загромождают экран после изменения размера. С помощью max() мы можем установить приоритет для определенного margin, чтобы учесть ширину контейнера.


Пример кода:

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Перейдите на сайт оригинальной статьи (ссылка в начале статьи через "How to Use CSS Math Functions: calc, min, max, clamp") или на codepen (ссылка через "пример кода"), попробуйте изменить размер экрана на меньший, чтобы посмотреть на это в действий.

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Как видите, несмотря на изменение ширины viewport, кнопки всегда сохраняют свои поля в 4 пикселя.

clamp()


Функция clamp() используется для определения допустимого диапазона различных значений элемента макета: minimum, preferred и maximum. Чаще всего clamp() используется для установки диапазона допустимых значений в типографике, чтобы создать эффект fluid typography.

По сути, это кульминация функций min() и max().

Например:


font-size: clamp(1rem, 4vw + 1rem, 4rem);

И вот как это выглядит:

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

В этом контексте, мы стилизуем наш заголовок h2 с минимальным значением 1rem, максимальным 4rem и устанавливаем предпочтительный размер 4vw (единицы viewport) + 1rem. Как вы уже заметили, из приведенного выше демо, по мере изменения области просмотра изменяется и размер шрифта заголовка.

На этом мы заканчиваем знакомство с наиболее широко поддерживаемыми математическими функциями в CSS.

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

Создание адаптивного sidebar с помощью Grid


Можете ли вы реализовать полнофункциональный адаптивный sidebar всего двумя строками CSS? Конечно.


Для этого демо мы создадим адаптивный sidebar, используя display: grid; и настроим отзывчивость с помощью grid-template-columns. В частности, мы будем использовать функции fit-content и minmax() для установки наших ограничений.


Пример кода:

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Перейдите на сайт оригинальной статьи (ссылка в начале статьи через "How to Use CSS Math Functions: calc, min, max, clamp") или на codepen (ссылка через "пример кода"), попробуйте изменить размер экрана, чтобы посмотреть, что произойдет.

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Давайте разберемся, что здесь происходит.


Сначала, мы применяем fit-content, чтобы объявить предпочтительный размер нашего sidebar. Значение, которое мы указываем здесь, будет либо увеличивать боковую панель (в зависимости от размера viewport), либо уменьшать ее на небольших экранах. Все время учитывая количество контента, которое у вас есть на боковой панели.


После этого мы применяем minmax(), потому что мы не хотим, чтобы боковая панель перекрывалась областью контента на странице. В нашем случае для параметра установлено значение 55vw, которое будет использоваться для мобильного дисплея, и 35ch, которое будет использоваться для больших viewports. И, наконец, мы применяем the Grid-specific fraction unit, чтобы заполнить пространство, когда это позволяет viewport.

Применение адаптивного Gap для Flexbox Layouts


Это аналогичный пример адаптивного padding, который мы рассматривали ранее. Но для этого демо мы используем flexbox и свойство gap вместе с clamp().


Пример кода:

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Перейдите на сайт оригинальной статьи (ссылка в начале статьи через "How to Use CSS Math Functions: calc, min, max, clamp") или на codepen (ссылка через "пример кода"), попробуйте поиграть с размером.

Как использовать математические функции CSS CSS, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Указав 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, Frontend, IT, Программирование, HTML, Гифка, Длиннопост

Использование математических функции CSS с переменными


Итак, одна из вещей, которая не была затронута в этом руководстве, — это использование переменных CSS вместе с различными функциями. Мои рассуждения довольно просты, это практическое введение в использование математических функций для адаптивного дизайна.


Я не следую style guide и не работаю над фреймворком.


Но вполне возможно использовать объявления переменных для достижения еще больших результатов, особенно для сложных структур layout.

Заключение


Были бы вы рады попробовать некоторые из этих концепций в своем следующем проекте?


Я должен сказать, что CSS прошел долгий путь с начала 2010-х годов. На самом деле, если мы сможем делать большую часть наших адаптивных стилей без медиа-запросов, это привлечет еще больше разработчиков, которые хотят писать код и не беспокоиться о совместимости между различными устройствами.

Спасибо за прочтение этой статьи!

Наш телеграм https://t.me/havaevau_webstudy

Показать полностью 16
CSS Frontend IT Программирование HTML Гифка Длиннопост
5
18
Web.Study
Web.Study
2 года назад
Лига программистов

Прелоадер - важный элемент в веб-разработке. 5 примеров, которые сделает даже новичок⁠⁠

Прелоадер - важный элемент в веб-разработке. 5 примеров, которые сделает даже новичок Программирование, IT, CSS, Веб-разработка, Frontend, HTML, Гифка, Длиннопост

Какая его роль?


Прелоадер — это небольшая анимация, которую человек видит когда заходит на веб-страницу, другими словами — это индикатор загрузки.


Это значимый элемент в веб-разработке с точки зрения юзерфрендли. Если человек заходит на "тяжёлый сайт", напичканный скриптами, файлами и т.п., ему нужно сказать что "всё норм, сайт загружается, подожди".


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



1. Лесенка загрузки

Исходный код на Codepen - https://codepen.io/ispal/pen/mVaaJe

Прелоадер - важный элемент в веб-разработке. 5 примеров, которые сделает даже новичок Программирование, IT, CSS, Веб-разработка, Frontend, HTML, Гифка, Длиннопост

2. Прелоадер на CSS с использованием sass map для определения цвета

Исходный код на Codepen - https://codepen.io/hexagoncircle/pen/eZawWv

Прелоадер - важный элемент в веб-разработке. 5 примеров, которые сделает даже новичок Программирование, IT, CSS, Веб-разработка, Frontend, HTML, Гифка, Длиннопост

3. А как вам такое?

Исходный код на Codepen - https://codepen.io/derekmorash/pen/grvOZx

Прелоадер - важный элемент в веб-разработке. 5 примеров, которые сделает даже новичок Программирование, IT, CSS, Веб-разработка, Frontend, HTML, Гифка, Длиннопост

4. Этот прелоадер был сделан для веб-приложения из сферы здравоохранения

Исходный код на Codepen - https://codepen.io/chrissamuels/pen/WNybqm

Прелоадер - важный элемент в веб-разработке. 5 примеров, которые сделает даже новичок Программирование, IT, CSS, Веб-разработка, Frontend, HTML, Гифка, Длиннопост

5. Сразу несколько прелоадеров, сделанных с помощью SVG анимации

Исходный код на Codepen - https://codepen.io/nikhil8krishnan/pen/rVoXJa

Прелоадер - важный элемент в веб-разработке. 5 примеров, которые сделает даже новичок Программирование, IT, CSS, Веб-разработка, Frontend, HTML, Гифка, Длиннопост

Телеграм - https://t.me/havaevau_webstudy

Показать полностью 5
[моё] Программирование IT CSS Веб-разработка Frontend HTML Гифка Длиннопост
8
18
Web.Study
Web.Study
2 года назад
Лига программистов

Да кто этот ваш ООП и зачем он нужен? Шпаргалка для начинающих, 7 главных заповедей⁠⁠

Начнем с определения


Объектно-ориентированное программирование (ООП) — это подход, при котором программа рассматривается как набор объектов, взаимодействующих друг с другом. У каждого есть свойства и поведение. ООП ускоряет написание кода и делает его более читаемым.

Данный подход актуален во всех языках программирования и будет полезен разработчику как на Java Script, так и на Typescript, и вообще всем  разработчикам на C-подобных языках.

Да кто этот ваш ООП и зачем он нужен? Шпаргалка для начинающих, 7 главных заповедей Программирование, Javascript, Программист, IT, Ооп, CSS, Длиннопост

Зачем нужен ООП?


Обычно все начинают изучение программирования с написания программ в процедурном стиле. Программа ожидает на вход какие-то данные, выполняет ряд каких-то процедур (они же называются функциями) и после этого возвращает какой-то результат.


Пример программы на языке typescript в процедурном стиле:


Есть две переменные это ширина и высота, есть функция, которая ширину и высоту принимает аргументами и по итогу эта функция возвращает результат умножения ширины на высоту, то есть площадь прямоугольника. По итогу вызвав эту функцию с какими-то данными, мы можем получить площадь прямоугольника.


const width = 5;
const height = 10;
function calcRectArea(width; height) {
return width * height;
}
calcRectArea(width, height)

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

Да кто этот ваш ООП и зачем он нужен? Шпаргалка для начинающих, 7 главных заповедей Программирование, Javascript, Программист, IT, Ооп, CSS, Длиннопост

Шпаргалка по принципам ООП


Главное


- Инкапсулируйте все, что может изменяться;

- Уделяйте больше внимания интерфейсам, а не их реализациям;

- Каждый класс в вашем приложении должен иметь только одно назначение;

- Классы — это их поведение и функциональность.


Базовые принципы ООП


- Абстракция — отделение концепции от ее экземпляра;

- Полиморфизм — реализация задач одной и той же идеи разными способами;

- Наследование — способность объекта или класса базироваться на другом объекте или классе. Это главный механизм для повторного использования кода. Наследственное отношение классов четко определяет их иерархию;

- Инкапсуляция — размещение одного объекта или класса внутри другого для разграничения доступа к ним.


1. Используйте следующее вместе с наследованием


- Делегация — перепоручение задачи от внешнего объекта внутреннему;

- Композиция — включение объектом-контейнером объекта-содержимого и управление его поведением; последний не может существовать вне первого;

- Агрегация — включение объектом-контейнером ссылки на объект-содержимое; при уничтожении первого последний продолжает существование.


2. Не повторяйся (Don’t repeat yourself — DRY)


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


3. Принцип единственной обязанности


Для каждого класса должно быть определено единственное назначение. Все ресурсы, необходимые для его осуществления, должны быть инкапсулированы в этот класс и подчинены только этой задаче.


4. Принцип открытости/закрытости


Программные сущности должны быть открыты для расширения, но закрыты для изменений.


5. Принцип подстановки Барбары Лисков


Методы, использующие некий тип, должны иметь возможность использовать его подтипы, не зная об этом.


6. Принцип разделения интерфейсов


Предпочтительнее разделять интерфейсы на более мелкие тематические, чтобы реализующие их классы не были вынуждены определять методы, которые непосредственно в них не используются.


7. Принцип инверсии зависимостей


Система должна конструироваться на основе абстракций «сверху вниз»: не абстракции должны формироваться на основе деталей, а детали должны формироваться на основе абстракций.



Применяли ли вы данный подход на практике? Строчите в комментарии

Показать полностью 2
[моё] Программирование Javascript Программист IT Ооп CSS Длиннопост
55
199
IIe4eNbku
IIe4eNbku
2 года назад
IT-юмор

CSS - ООП-язык⁠⁠

лул

CSS - ООП-язык IT, IT юмор, CSS, Программирование, Длиннопост
Показать полностью 1
IT IT юмор CSS Программирование Длиннопост
47
prossec
prossec
2 года назад

Очередной программист. День #0⁠⁠

Дисклеймер.

Да, да, да бла-бла-бла, очередной программист, вас уже как говна за баней (кстати, вопрос к мирозданию, я никогда не видел за баней говна, кто-то видел?), стать программистом невозможно, конкуренция бешенная, никому вы не нужны, работу не найдешь, на джуна требований выше крыши, нужно образование и т.п и etc.


Привет Пикабу!

Этим постом я хочу обозначить начало своего длинного и сложного пути в мир IT. так будет проще мне, это будет дополнительная мотивация для меня, и в процессе обучения я буду писать о своих впечатлениях, выводах и разочарованиях, которые, скорее всего, станут полезны тем, кто решит идти по этому пути самостоятельно.

Коротко о себе: мне 29 лет, высшее гуманитарное образование, служу старшим бортпроводником в одной из крупнейших авиакомпаний страны, имею прекрасный английский, базовый французский и польский. В школе на информатике писал код на Pascal, а точнее рисовал на нём, было забавно. Плачу ипотека и имею жена :)


Зачем я хочу в айти?

Я в своей профессии 6 лет и дорос до максимума, уйти выше не принесет денег, морального удовлетворения, удовольствия, т.к. всё скатится в унылую рутину. Облетел почти весь мир, был очень много где, узнал много чудесных людей.

Я хочу стать модным словом, а именно "гражданином мира". Иметь профессию, которая востребована по всему земному шару, работать на фирму зарегистрированную в США/ЕС/РФ и т.д., а жить в это время во Вьетнаме или ещё хоть где, и да я прекрасно понимаю, что до такого уровня расти долго. Но главное, что эта перспектива ЕСТЬ. Возможность оперативных релокаций в реалиях сурово-быстро изменяющегося мира, это суперспособность!


Что я умею?

Ничего Читать, писать, говорить на английском языке, разбираюсь в железной части ПК. Умею быть сфокусированным, целеустремленным.


Чем я хочу заниматься?

А вот это вопрос номер один.

Я усердно гуглил, смотрел ютубы, читал статьи про ЯП, что это такое, что с ними делают, где они нужны, кто из них умер/умирает/умрет. И я смог успешно выбрать 3 языка программирования. разумеется, сразу 3 осилить с нуля невозможно, ненужно, не получится, поэтому я буду определяться. Как сказал один из крутых разработчиков со стажем >20 лет, берите язык, занимайтесь им 10-14 дней по 3-4 часа ежедневно и вывод напросится сам собой. Мне эта идея отсева очень понравилась, потому что:

а. Я смогу руками потрогать все языки, писать код.

б. Я буду опираться исключительно на своём мнении об этом ЯП.

в. Начиная с нуля, любые знания по ЯП, включая логику написания кода будут полезны для формирования общего кейса знаний.


Из чего выбираем то?


1. JS

Очередной программист. День #0 Обучение, Программирование, Учеба, Разное, Java, Javascript, C++, IT, HTML, CSS, Длиннопост

Что хочет нуб? Правильно, писать код, чтобы сразу были видны результаты того, что пишешь. Фронтенд был первой вещью, которая меня заинтересовала в IT. Это красиво, интересно, есть спрос. По информации с stack overflow JS ЯП №1 для релокации в другие страны. Конечно, понимаю о обязательном параллельном изучении HTML, CSS, React, TS и дохрена чего еще.

Как буду учить:

learn.javascript.ru, книга Кантора по JS (та же инфа с learn.javascript, но упорядоченная), книга Чиннатхамби, видеоуроки Богдана Стащюка с udemy.


2. Java

Очередной программист. День #0 Обучение, Программирование, Учеба, Разное, Java, Javascript, C++, IT, HTML, CSS, Длиннопост

Один из лидеров по вакансиям, зарплатам, востребованности. Финансовые системы, БД и многое другое написаны на Java. Замены ей, вероятно, никогда не будет ибо зачем трогать и менять то, что чудесно работает.

Как буду учить:

Java для начинающих: с нуля до сертификата Oracle курс Заура Трегулова с udemy, javarush.


3. C++

Очередной программист. День #0 Обучение, Программирование, Учеба, Разное, Java, Javascript, C++, IT, HTML, CSS, Длиннопост

Что? Вы сказали игры?

ябудуустанавливатьвсевсеигры

Последний избранник С++. Говорят крутой язык для задротов. Говорят игры пишут на С++, unreal engine с нами в команде. Язык интересный, сложный, мозги точно будут кипеть, геймдев это круто и хотелось бы там очутиться. хотя писать игры не так интересно, как в них играть. Ну и кроме геймдева С++ входит в топ востребованных языков программирования.

Как буду учить: #simplecode youtube, Доусон Изучаем С++ через программирование игр.


Finnally

Я поставил трекер себе на телефон и буду заниматься каждым из ЯП 40 часов (~4 часа в день ~10 дней на язык). Ровно за 40 часов я должен буду сделать вывод с чем я пойду дальше и буду интенсивно учить, а что отложу на потом/забуду нахрен как страшный сон.

Обещаю, что буду публиковать отчеты на Пикабу минимум раз в неделю, жду от вас, дорогие мои, поддержки, полезных советов, слов наставлений, интересных ресурсов для изучения, флуда( разумеется, как без него).

P.S.

Да, программисты нахер никому не нужны, чё вы лезете все сюда. #мамаятожевайти

Идея и пост мои, учиться буду я, тег моё.

Показать полностью 3
[моё] Обучение Программирование Учеба Разное Java Javascript C++ IT HTML CSS Длиннопост
40
Аноним
Аноним
2 года назад
Лига программистов

С чего начать изучать веб разработку? Лучшие ресурсы для изучения!⁠⁠

[моё] IT Программирование Курсы программирования Разработка YouTube Программист Web-программирование Javascript CSS Основы HTML HTML Видео
8
8
shaitan.vladimir
shaitan.vladimir
2 года назад
Web-технологии

Поток документа | Flexbox | Float | inline-block в CSS⁠⁠

Привет, в этом уроке мы разберемся в том что такое нормальный поток документа, научимся его изменять с помощью CSS свойств, разберемся с тем как работать с inline-block, float и flexbox свойствами. Текстовая версия урок в полной версии статьи.

Поток документа

Поток документа - определяет то каким способом элементы будут располагаться на странице.

Normal flow - базовый поток описывает то как элементы располагаются на странице, когда к ним не применили ни одного CSS свойства.

Для того чтобы чтобы управлять потоком нашего документа с помощью CSS нам в первую очередь нужно выстроить правильный базовый поток документа в нашем HTML.

inline и inline-block

Задача: Необходимо выставить элементы .item друг возле друга по 2 в ряд.


Решение: Для начала выставим ширину элемента 50% и добавим inline-block чтобы они могли выстраиваться друг возле друга.

HTML File - link

.item {
width: 50%;
display: inline-block;
}

Проблема: Ширина наших элементов изменилась, но сами элементы не выстроились друг возле друга. Это происходит из-за того что браузер интерпретирует элементы .item как строчно-блочные, а значит учитывает пробельные символы которые мы ставим внутри нашего HTML документа и также отображает их на странице. Для того чтобы решить это проблему нам необходимо убрать эти пробельные символы которые находятся между нашими блоками .item . Для этого нам достаточно найти родителя блоков .item, а это блок .wrapper и выставить ему font-size: 0.

.wrapper {
font-size: 0;
}

Пробельный символ, это символ аналогичный любой букве, а это значит, что если мы выставим размер шрифта в 0 то он исчезнет и не будет занимать места, как и все остальные символы внутри этого блока.

Сейчас мы видим что элементы на странице выстроились друг возле друга, как мы и задумывали, но текст не отображается, это происходит из-за того что мы поставили размер шрифта для всего текста в блоке 0px. Для того чтобы вернуть текст внутри блоков .item на свое место, нам необходимо задать размер шрифта отдельно для них.

.item {
font-size: 16px;
}

Теперь все работает правильно и мы добились желаемого результата, самый главный недостаток такого способа - это то что нам постоянно нужно контролировать размер шрифта и это не всегда удобно. Именно из-за этих недостатков это способ практически не используется в современной верстке, а на замену ему пришли другие, более современные способы.

Float

Задача: Необходимо выставить элементы .item друг возле друга по 4 в ряд.

Решение: Для начала выставим ширину элемента 50% и добавим float: left чтобы элементы .item могли обтекать друг друга с левой стороны.

HTML File - link

.item {
width: 25%;
float: left;
}

Видим что такой способ достаточно хорош и все сразу стало как нам было нужно. Но есть проблема, если мы проинспектируем родительский элемент (.wrapper) наших .item блоков, то сразу увидим нечто странное, а именно то что высота этого элемента равна 0, как будто в нем нет никаких дочерних элементов, хотя они есть.

Для того чтобы решить эту проблему нам нужно растянуть .wrapper чтобы он занимал именно столько высоты сколько нужно.

Обычно для этого используются псевдо-элементы, он них мы будем говорить позднее, но используем их для того чтобы решить нашу проблему.

Вкратце, псевдо-элемент, это такой элемент который создается не через HTML, но через CSS, а браузер интерпретирует его как часть структуры сайта.

.wrapper:after {
content: '';
display: block;
clear: both;
}

Теперь все отображается правильно, вся суть в том что мы создаем еще один, полностью пустой, элемент и отменяем для него float , с помощью свойства clear: both. После чего этот, пустой, элемент располагается в самом конце нашего блока .wrapper и тем самым растягивает его высоту, и делает ее правильной.

Такое использование будет не слишком удобным, если у нам будет много элементов позиционированных через float, в таком случае на проще сделать отдельный класс который будет добавлять такие стили нужным для нас элементам. Обычно такой класс называется .clearfix.

.clearfix:after {
content: '';
display: block;
clear: both;
}

И добавим его для нашего блока wrapper, единственное что нам нужно делать, это добавлять класс .clearfix, для родительских элементов дети которых позиционированы с помощью свойств float.

Этот способ активно использовался раньше, но уже не так актуален и практически не используется в данный момент, но такой подход все еще можно встретить в реально жизни.

Flexbox

Задача: Необходимо выставить элементы .item друг возле друга по 2 в ряд.

Решение: Для начала выставим ширину элемента 50% и добавим display: flex чтобы элементы .item могли выстраиваться друг возле друга

HTML File - link

В таком случае flex прописываем для родительского элемента.

.wrapper {
display: flex;
}
.item {
width: 50%;
}

У нас появилась проблема, а именно то что сейчас все элементы встроены в ряд, это происходит по причине того что flex сам, автоматически пересчитывает ширину игнорируя заданную нами ширину для элементов. Для того чтобы это исправить, нам необходимо добавить свойство flex-wrap: wrap для родительского элемента .wrapper .

.wrapper {
flex-wrap: wrap;
}

Теперь мы сами можем контролировать контролировать ширину наших внутренних элементов через CSS, но не забывайте, что если вам подходит стандартное поведение flex и его автоматическая работа с шириной, то можете игнорировать flex-wrap: wrap

Другие возможности

Для того чтобы удобно работать с элементами у flex есть ряд других свойств которые помогают удобно позиционировать элементы.

Для наглядности изменю ширину элементов .item

.item {
width: 18%;
}

Свойство justify-content помогает нам позиционировать элементы по горизонтали Все его значение рассмотрим на странице в видео уроке.

.wrapper {
justify-content: space-evenly;
}

Свойство align-items помогает нам позиционировать элементы по вертикали, для наглядности я увеличу высоту блока .wrapper .

Все его значение рассмотрим на странице в видео уроке.

.wrapper {
border-top: 3px solid black;
border-bottom: 3px solid black;
background-color: #ccc;
height: 600px;
/* flex свойство */
align-items: center;
}

flex-direction

Свойство flex-direction определяет в каком направлении будут отображаться элементы. По умолчанию flex-direction равно значению row, в зависимости от направления отображения у нас будет изменяться и работа свойств justify-content и align-items

Для flex-direction: row и row-reverse:


justify-content - будет позиционировать по горизонтали

align-items - будет позиционировать по вертикали

Для flex-direction: column и column-reverse:


justify-content - будет позиционировать по вертикали

align-items - будет позиционировать по горизонтали

Все его значение рассмотрим на странице в видео уроке.

.wrapper {
height: initial;
/* flex свойство */
flex-direction: row;
}

Свойство order - позволяет нам, вручную, определять в котором будут отображаться элементы. Свойство order должно задаваться внутренним элементам, вложенным в .wrapper, а значит тем которые являются детьми первого уровня элемента у которой присутствует свойство display: flex.

В нашем случае это элементы .item так как они является детьми .wrapper у которого и прописано свойство display: flex.

.item:nth-child(1) {
order: 4
}
.item:nth-child(2) {
order: 1
}
.item:nth-child(3) {
order: 2
}
.item:nth-child(4) {
order: 3
}

Также существует еще больше flex-свойств, которые используются не так часто, о них можно почитать в документации.

Все файлы с урока

P.S. Подпишись на мой youtube и telegram канал чтобы регулярно получать новый контент.

Показать полностью
[моё] Разработка Программирование Программист Баг IT Собеседование HTML CSS Frontend Видео YouTube Длиннопост
18
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
Baskovsky
Baskovsky
2 года назад
Лига программистов
Серия Айтишники

Кто такой Front-End разработчик и что он должен уметь⁠⁠

[моё] YouTube IT Интервью Подкаст Frontend Javascript HTML CSS Видео
5
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии