Содержание

Курс Профессиональная вёрстка. Создание адаптивной вёрстки на HTML 5 и CSS 3 | Обучение программированию онлайн | GeekBrains

Бесплатная помощь в подборе профессии

Бесплатная помощь в подборе курса

Бесплатная помощь в подборе профессии

Бесплатная помощь в подборе курса

Бесплатная помощь в подборе профессии

Бесплатная помощь в подборе курса

ближайшее время10:0010:3011:0011:3012:0012:3013:0013:3014:0014:3015:0015:3016:0016:3017:0017:3018:0018:3019:00

8 800 700-68-41Бесплатно по России

Создание адаптивной вёрстки на HTML 5 и CSS 3

Курс позволит освоить программирование с применением HTML5 и CSS3. В ходе практической разработки front-end части интернет-магазина студенты научатся применять код к макетам Bootstrap, работать с двумя препроцессорами: языками LESS и SASS. Освоят адаптивную вёрстку сайтов, принципы кроссбраузерности и валидности при разработке интерфейса веб-ресурса.

Чему Вы научитесь

  • Работать с HTML5 & CSS3;
  • Верстать адаптивные сайты;
  • Использовать принципы валидной кроссбраузерной вёрстки на практике;
  • Работать с препроцессорами LESS & SASS;
  • Применять Bootstrap;
  • Позиционировать элементы с использованием Flexbox.

Что Вы получите

Видеозаписи всех онлайн-занятий

Методички и практические задания

Общение с одногруппниками

Сертификат об окончании обучения

Средние оценки

4.8 / 5

Программа

4.9 / 5

Преподаватель

Преподаватели

  • Максим Голев

    4.9

    Ср. оценка

  • Алексей Кадочников

    4.9

    Ср. оценка

  • Александр Пряхин

    4.9

    Ср. оценка

  • Игорь Кубиков

    4.9

    Ср. оценка

  • Александр Ерофеев

    4.9

    Ср. оценка

  • Мария Коршунова

    4.9

    Ср. оценка

  • Анна Русяева

    4.8

    Ср. оценка

  • Артур Горохов

    4.8

    Ср. оценка

  • Тимофей Сафронов

    4.8

    Ср. оценка

  • Ирина Малиновская

    4.8

    Ср. оценка

  • Илья Овчинников

    4.8

    Ср. оценка

  • Артём Филипоповский

    4.8

    Ср. оценка

  • Иван Иванов

    4.8

    Ср. оценка

  • GeekBrains

    4.8

    Ср. оценка

  • Geek Brains

    4.7

    Ср. оценка

  • Алексей Урывский

    4.3

    Ср. оценка

  • Программа курса
  • Отзывы выпускников • 4192
  • 1

    Урок 1. Позиционирование элементов. Практическая вёрстка.

    Позиционирование элементов, расположение элементов на странице (позиционирование элементов по вертикали, по горизонтали).

  • 2

    Урок 2. Структура HTML5, знакомство с формами

    Новые семантические элементы HTML5. Практические примеры применения семантических тегов для создания структуры сайта. Улучшим традиционные формы. Проверка форм на ошибки заполнения.

  • 3

    Урок 3. Практическое применение Bootstrap

    Что такое bootstrap? Как подключить к любому макету? Как добавить первые элементы с использованием Bootstrap? Создание целой страницы сайта с использованием новых знаний.

  • 4

    Урок 4. Препроцессоры: применение на практике

    Знакомство с препроцессорами: для каких целей используются, где лучше применять, каково практическое значение. Рассмотрим синтаксис двух самых популярных препроцессоров: LESS, SASS; применим новые знания к нашему проекту.

  • 5

    Урок 5. Эффекты перехода и трансформации в CSS3

    Эффекты перехода; применение трансформации; поворот элементов при наведении на него; создание анимации средствами CSS3. Для чего нужна данная технология и где ее следует применять? Добавим трансформацию для некоторых элементов нашего сайта.

  • 6

    Урок 6. CSS3: медиа-запросы, адаптивная верстка.

    Познакомимся с синтаксисом медиа-запросов; создадим несколько простых запросов; узнаем, для каких проектов лучше их использовать; найдем практическое применение для нашего проекта.

  • 7

    Урок 7. Практическое применение адаптивной верстки

    Адаптивная верстка всего макета, добавление плавных переходов и перестроений сайта; позиционирование внутренних элементов с использованием Flexbox; добавление последних новшеств, которые изучили за курс; сдача верстки курсового проекта; итоги курса; завершение работы над проектом.

  • 8

    Урок 8. Grid layout, новые возможности CSS3

    Понятие и применение адаптивного дизайна. Основы синтаксиса и примеры.

Верстка сайта html и css заказать на ФРИЛАНС.ру

Фрилансеры

верстка сайта html и css

Разработка сайта «Правила камня»

Разработка сайта «Movchan’s Group»

Разработка сайта «PCS»

tech — IT аутсорсинговая компания»> Asap.tech — IT аутсорсинговая компания

Event-агентство Свои люди

FOOD.pro — автоматизация пищевой промышленности

Корпоративный сайт диджитал-агентства

Разработка интернет-магазина растений

Разработка интернет-магазина автозапчастей

ru»> https://davayzakazhem.ru

vaydu

https://awindex.ru

OriginalVirginia

Flowery-simphony

Партнерка TrulyPVP

Агентство эксклюзивных путешествий — дизайн сайта UX/UI

Приложение для кинотеатра — дизайн для iOS и Android

Крипто платформа — дизайн сайта UX/UI

ONEFIVEOH — Canada’s Online Campfire

Landing)»> Hivemind (Адаптивная верстка. Landing)

Идеалист (Адаптивная верстка)

Разработка логотипа, фирменных бланков и круглой печати «Иномил»

Редакторская вычитка брошюры, корректура

Экотопливо

Jazz & Musical School

Отель Miraggio

Worldchefs Congress & Expo

Пиццерия

Ремонт квартир

IBIL

GoldenTobacco

Давинчи Шторы

Dota 2 Merchat MMR

Угли CocoBali

Вебинар по Instagram

Сайт для ЧОП на WordPress

Holcor

BloggerADSBlogger

Boost Technology

PIONNE cosmetic

Миссия 32

АгроГарант

Лендинг для «Безопасный квартал»

Сайт для «Strigun Wood»

Лендинг для «4Tigers»

Верстка сайта — Freelance.
Ru

Верстка сайта — это превращение макетов дизайна в страницы сайта. Грамотная верстка не менее важна, чем дизайн. Ведь именно от верстки зависит, как будут связаны между собой страницы сайта и что увидит посетитель, нажав, к примеру на кнопку «заказ» — бланк заказа или кривую страницу.

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

В том числе и такие Верстка как верстка сайта html и css.

Верстка HTML/CSS

Верстка сайтов – HTML5′ CSS3. Блочная, кроссбраузерная, адаптивная верстка для мобильных устройств, семантика кода, валидность, фреймворк Bootstrap, CSS препроцессор SCSS. Есть базовые знания по Javascript, jQuery, Ajax, PHP. Работаю с графическими редак…

5 000 Руб 7 Дней

Верстка Лендинга одностраничника

Сверстаю лендинг одностраничник по макету PSD(Фотошоп).

Начинаю работу в этой сфере , по цене договоримся

3 000 Руб 3 Дня

Доработка верстки сайта

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

1 000 Руб 1 День

Верстка сайта

Создание адаптивного сайта с нуля HTML 5/CSS 3 БЭМ, Bootstrap, jQuery, Pixel Perfect, animate.
Чистый, грамотный, валидный код. Поддержка разных разрешений.

5 000 Руб 3 Дня

Веб-верстка лендингов и многостраничных сайтов

Perfect pixel и адаптивная верстка по вашему макету

600 Руб 1 День

Начинающий верстальщик HTML/CSS

Я только начинаю верстать, приму оплату только после того как вы будете довольны, тоесть, если вы остались чем то недовольны и не хотите платить, то можете просто не платить!

1 000 Руб 3 Дня

HTML/CSS | OTUS

Что даст вам этот курс

На курсе вы освоите лучшие практики современной верстки сайтов, а также:

  • научитесь интерпретировать макеты дизайнеров;
  • создавать семантическую разметку вебсайтов;
  • создавать макеты любой сложности без гор библиотек и плагинов;
  • освоите основной стек технологий и приемы в верстке: box model, positioning, float, flexbox, grid, media quesries, fallbacks, CSS resets, autoprefixer, postcss;
  • пройдете основы оптимизации, BEM номенклатуру;
  • научитесь работать с фреймворками bootstrap и tailwind.

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

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

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

Преподаватели

Мария Коршунова

Илья Филимонов

Артем Сальников

Артур Горохов

Преподаватель физики и информатики по образованию. Работает в сфере веб-разработки с 2011 года. Работала над сайтами как крупных холдингов (Redmond, BMV, Сибирская корона, ВО Рестэк и другие), так и небольших стартапов. За это время поработала с более чем сотней различных проектов.

С 2016 года преподаёт HTML, CSS и основы JavaScript начинающим и продолжающим верстальщикам. Автор и методист курсов: «Создание и продвижение сайтов», «Веб-разработчик с нуля», «Основы программирования на JavaScript», «JS для детей», «CSS-анимации для frontend-разработчика».

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

Работает frontend-разработчиком в компании «Барс Груп» в Казани.
На данный момент пишет регистр для минздрава (ведение учета заболевших).

В свободное время программирует, изучает языки, занимается плаванием, путешествует.

Магистр по специальности «Программная инженерия». Около 5 лет опыта в продакшн проектах, на данный момент работаю в компании ОТР2000 на позиции Senior software engineer. Преподавал курсы по frontend разбработке от EPAM. Основной тех. стек: React JS + TypeScript

Учился в Гикбрейнс на факультете вэбразработки. Работал в 1 бите, потом в вэбстудии примерно 6 месяцев. Потом ушел на фриланс. На платформу Upwork. Сейчас веду 8 проектов на поддержке в том числе сайты правительства Пензенской области и ПГУ + частные сайты. Увлекаюсь фитнесом и охотой.

Преподаватели

Мария Коршунова

Преподаватель физики и информатики по образованию. Работает в сфере веб-разработки с 2011 года. Работала над сайтами как крупных холдингов (Redmond, BMV, Сибирская корона, ВО Рестэк и другие), так и небольших стартапов. За это время поработала с более чем сотней различных проектов.

С 2016 года преподаёт HTML, CSS и основы JavaScript начинающим и продолжающим верстальщикам. Автор и методист курсов: «Создание и продвижение сайтов», «Веб-разработчик с нуля», «Основы программирования на JavaScript», «JS для детей», «CSS-анимации для frontend-разработчика».

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

Илья Филимонов

Работает frontend-разработчиком в компании «Барс Груп» в Казани.
На данный момент пишет регистр для минздрава (ведение учета заболевших).

В свободное время программирует, изучает языки, занимается плаванием, путешествует.

Артем Сальников

Магистр по специальности «Программная инженерия». Около 5 лет опыта в продакшн проектах, на данный момент работаю в компании ОТР2000 на позиции Senior software engineer. Преподавал курсы по frontend разбработке от EPAM. Основной тех. стек: React JS + TypeScript

Артур Горохов

Учился в Гикбрейнс на факультете вэбразработки. Работал в 1 бите, потом в вэбстудии примерно 6 месяцев. Потом ушел на фриланс. На платформу Upwork. Сейчас веду 8 проектов на поддержке в том числе сайты правительства Пензенской области и ПГУ + частные сайты. Увлекаюсь фитнесом и охотой.

Корпоративное обучение для ваших сотрудников

Подробнее

>

ДругаяИП

Нажимая кнопку, я принимаю условия Политики конфидециальности

Мы обещаем не присылать вам спам

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

Программа обучения

В процессе обучения вы получите комплексные знания и навыки.

Модуль 1 Введение в Web

C 28 декабря

Тема 1. Введение в Web

Тема 2. Version Control

Тема 3. Почему html — это не язык программирования

Тема 4. CSS: история стилей

Тема 5. Box model в деталях

Тема 6. Позиционирование элементов в деталях

Тема 7. Selector priority

Модуль 2 Layouts (макеты)

C 30 января

Тема 8. Layout: введение, основы

Тема 9. Layout techniques

Тема 10. Flexbox layout

Тема 11. Grid layout

Тема 12. Поддержка браузеров и fallbacks

Модуль 3 Адаптивный веб-дизайн

C 15 февраля

Тема 13. Введение в media queries

Тема 14. Mobile first vs desktop first media queries

Тема 15. Особенности мобильной верстки

Тема 16. Анимации CSS

Модуль 4 Coding style

C 1 марта

Тема 17. Номенклатура

Тема 18. Bootstrap

Тема 19. Tailwind

Модуль 5 JavaScript Basic

C 13 марта

Тема 20. Введение в JavaScript

Тема 21. Настройка окружения для верстки

Тема 22. Webpack (часть 1)

Тема 23. Webpack (часть 2)

Тема 24. Оптимизация ассетов

Тема 25. Деплой страницы

Тема 26. Аналитика и поддержка

Модуль 6 Проектная работа

C 5 апреля

Тема 27. Выбор темы и организация проектной работы

Тема 28. Защита проектных работ

Скачать подробную программу

Получить подробную программу обучения

Мы обещаем не присылать вам спам

Получить консультацию

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

Я принимаю условия Политики конфиденциальности и Пользовательского соглашения

Я принимаю условия Политики конфиденциальности и Пользовательского соглашения

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

Заберете с собой:

  • основные и дополнительные материалы, и видеозаписи занятий;

  • образцы кода;

  • собственный проект, который можно будет показывать при трудоустройстве;

  • сертификат о прохождении обучения.

  • получите приглашение пройти собеседование в компаниях-партнерах (эту возможность получают самые успешные студенты).

Дата выдачи сертификата: 18 апреля 2023 года

Ваш сертификат

Прошедшие открытые вебинары

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

Маргарита Образцова

7 мая 2021 года в 20:00

Оставьте заявку, чтобы получить доступ к записям прошедших мероприятий. Записи всех мероприятий появятся в этом блоке

Партнеры ждут выпускников этого курса

ROCKET SALES

Открытые технологии

Zebomba games

Посещая наш сайт, вы принимаете  политику использования cookie-файлов

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

При положительном результате (уровни А, В, С и D) вы получите уведомление по электронному адресу и доступ в личный кабинет для оплаты. В случае неудачи (уровни E и F) возможно повторное прохождение, но только через 2 недели.

Как насчет приятных бонусов? Выбирайте!

Мы предлагаем массу возможностей для того, чтобы оплата обучения стала для Вас доступнее:

Бесплатный трансфер

Обучение за счет работодателя

Оплатить в рассрочку

Оплатить в кредит

Реферальные программы

Программы лояльности

Welcome-cкидка: 21 день

На ваш номер отправлен код. Введите его сюда.

Если смс не пришла, проверьте, правильно ли введен номер

Напомнить о тестировании

Email

Через 1 часЧерез 3 часаЧерез 6 часовЧерез 12 часовЗавтра

Неверный логин или пароль

Макет CSS — Happy Coding

Учебники / Учебники по HTML / Макет CSS


Предыдущий: CSS Далее: Хостинг

tutorialhtmlcss


  • Divs
  • Краткая история
    • Таблицы
    • УС 1
    • КСС 2
    • Поплавки
    • Блоки
  • Flexbox
    • Свойства Flex
    • дисплей: гибкий
    • flex-направление
    • гибкая пленка
    • выравнивание содержимого
    • выравнивание элементов
    • зазор
    • гибкий рост
    • гибкий термоусадочный
    • гибкая основа
    • гибкий
    • Узнать больше
  • Сетка
    • Свойства сетки
    • дисплей: сетка
    • сетка-шаблон-столбцы
    • сетка-шаблон-строки
    • Размещение предметов в сетке
    • Именованные ячейки
    • Другие свойства сетки
  • Макет Святого Грааля
  • Макеты раскроя
  • Адаптивный дизайн
    • Мобильный дизайн и прогрессивное улучшение
    • Медиа-запросы
    • Инструменты разработчика
  • Узнать больше

Теперь вы знаете, как использовать HTML для создания содержимого веб-страницы, и знаете, как использовать CSS для оформления этого содержимого.

В этом руководстве рассказывается о различных способах размещения элементов на странице.


К настоящему моменту вы, вероятно, уже встречали HTML-теги, определяющие различные типы контента, например

и

. Есть еще один тег HTML, который особенно удобен для создания макетов: тег

! Если вы новичок в HTML и CSS, возможно, вы мало использовали их, поэтому вот краткое введение.

Тег

представляет собой разделение содержимого. Он позволяет группировать другие теги в разделы, и вы можете стилизовать эти разделы с помощью CSS. Вот пример:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

Этот код создает желтый элемент div, содержащий некоторый контент, включая два других элемента div. Красный блок содержит некоторый текст, а синий блок содержит другие HTML-теги.

Существуют и другие теги HTML, связанные с макетом, например

и
, но чаще всего вы будете видеть
.

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

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

HTML был выпущен примерно в 1993 году. На заре веб-разработки не было такой вещи, как CSS! Стилизация была сделана с помощью тегов HTML, таких как

и с такими атрибутами, как color (как в ). Макет был выполнен с использованием элементов HTML , которые позволяют размещать контент в сетке.

Таблицы

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

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

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

CSS 1

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

HTML 3.2 был выпущен в 1997 году и включал тег

.

CSS 2

Затем в 1998 году был выпущен CSS 2, и он включал правила позиционирования контента. Например, вы можете установить для свойства float элемента значение 9.0097 левый или правый , чтобы он отображался слева или справа от других элементов, и вы можете установить для свойства display элемента значение block или inline-block , чтобы изменить расположение других элементов. вокруг него. Вы также можете установить положение элемента вручную, если хотите.

Плавающие элементы

Вот как можно создать левую навигацию, используя плавающие элементы:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

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

Блоки

А вот как вы можете сделать это со встроенными блоками:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

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

После CSS 2 история CSS стала довольно сложной, в основном потому, что CSS был разделен на кучу разных модулей со своими историями. Короче говоря, CSS 3 был построен поверх CSS 2, и одной из функций, добавленных в CSS 3, был flexbox в 2017 году.0003

Flexbox позволяет определить отношения между родительскими и дочерними элементами. Само по себе это может показаться не очень полезным, но это чрезвычайно мощный инструмент, когда вы пытаетесь разместить кучу контента на своей странице. Например, с помощью flexbox вы можете указать браузеру отображать несколько элементов подряд, и вы можете задать каждому дочернему элементу разные правила относительно того, как изменять свой размер. А всю остальную работу за вас сделает браузер!

Чтобы использовать flexbox, установите display: flex для родительского элемента (элемента, который содержит другие элементы), а затем установите другие свойства flex для родительского и дочернего элементов, чтобы настроить макет.

Например, вот приведенный выше пример навигации слева, на этот раз с использованием flexbox:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

Свойства Flex

Чтобы использовать flexbox, установите display: flex для родительского элемента (элемента, который содержит другие элементы), а затем установите другие свойства flex для родительского и дочернего элементов, чтобы настроить макет.

Вот несколько общих свойств flex:

display: flex

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

 .контейнер {
  дисплей: гибкий;
}
 

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

flex-direction

По умолчанию flex-контейнеры (элементы с display: flex ) выкладываем своих дочерних элементов в ряд. Вы можете установить свойство flex-direction на столбец , чтобы изменить это.

 .контейнер {
  дисплей: гибкий;
  flex-направление: столбец;
}
 

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

flex-wrap

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

Чтобы обернуть дочерние элементы вместо их сглаживания, установите flex-wrap на wrap .

 .контейнер {
  дисплей: гибкий;
  flex-wrap: обернуть;
}
 

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

Значение по умолчанию: , сейчас .

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

justify-content

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

Чтобы изменить способ размещения дочерних элементов, установите свойство justify-content .

 .контейнер {
  дисплей: гибкий;
  выравнивание содержимого: пространство вокруг;
}
 

Есть несколько значений на выбор:

  • flex-start по умолчанию
  • center размещает детей в центре без пробелов между ними
  • пробел между добавляет пробел между дочерними элементами, но не перед первым элементом и не после последнего элемента
  • space-around добавляет пробел между дочерними элементами, в том числе перед первым элементом и после последнего элемента
  • space-evenly добавляет пространство между дочерними элементами и делает так, чтобы первый и последний элементы имели такое же пространство, как средние дочерние элементы

Попробуйте изменить этот код, чтобы увидеть разницу:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

align-items

По умолчанию flex-контейнеры выравнивают своих дочерних элементов по верхнему краю (или по левому краю для контейнеров с flex-direction:column ) и устанавливают их высоту (или ширину), чтобы заполнить оставшееся пространство.

Чтобы изменить способ выравнивания дочерних элементов, установите свойство align-items .

 .контейнер {
  дисплей: гибкий;
  выравнивание элементов: по центру;
}
 

Есть несколько вариантов на выбор:

  • растянуть по умолчанию
  • flex-start выравнивает дочерние элементы вверху (или слева для контейнеров с flex-direction:column ), но не растягивает их, чтобы заполнить оставшееся пространство
  • flex-end выравнивает дочерние элементы по низу (или справа), но не растягивает их, чтобы заполнить оставшееся пространство
  • центр выравнивает детей по центру

Попробуйте изменить этот код, чтобы увидеть разницу:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

gap

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

 .контейнер {
  дисплей: гибкий;
  зазор: 25 пикселей;
}
 

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

flex-grow

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

Вы можете указать элементу заполнить любое дополнительное пространство, используя свойство flex-grow .

 .контейнер {
  дисплей: гибкий;
}
. ребенок {
  гибкий рост: 1;
}
 

Свойство flex-grow принимает число, которое представляет, насколько этот дочерний элемент вырастет по сравнению с его братьями и сестрами.

Это немного сбивает с толку, поэтому вот пример:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

В этом примере класс .red имеет значение по умолчанию flex-grow 0 , что означает, что он вообще не растет. Затем .blue и Классы .green имеют flex-grow значений 1 и 2 соответственно, что означает, что .green будет расти вдвое больше, чем .blue .

Попробуйте изменить код, чтобы увидеть эффект от разных значений.

flex-shrink

По умолчанию, если flex-контейнер недостаточно широк (или достаточно высок для контейнеров с flex-direction:column ) для размещения всех его дочерних элементов, то все эти дочерние элементы сжимаются одинаково.

Чтобы разные дочерние элементы сжимались с разной скоростью, установите их свойство flex-shrink .

 .контейнер {
  дисплей: гибкий;
}
.ребенок {
  гибкая термоусадка: 2;
}
 

Это похоже на flex-grow в том, что значение представляет собой число, которое показывает, насколько дочерний элемент уменьшится по сравнению с его братьями и сестрами. Значение по умолчанию — 1 , но вы можете установить его на 0 , чтобы никогда не сжимать, или на более высокое число, чтобы уменьшить его больше.

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

flex-basis

По умолчанию элементы внутри flex-контейнеров устанавливают свои собственные размеры либо через свойства width и height , либо из их содержимого.

Вместо того, чтобы полагаться на собственный размер элемента, вы можете установить его начальный размер, используя свойство flex-basis .

 .контейнер {
  дисплей: гибкий;
}
.ребенок {
  flex-база: 200px;
}
 

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

flex

Возможности flex-grow , flex-shrink и flex-basis могут быть неочевидны. Почему вы должны использовать их вместо установки свойств width и height ?

Есть несколько причин:

  1. Вы не всегда будете знать размер окна браузера пользователя. Будут ли они на ноутбуке? На широкоформатном мониторе? На телефоне? Убедиться, что ваш контент подходит для каждого экрана, очень сложно!
  2. Вы не всегда будете знать размер собственного контента. Это может показаться удивительным, но хотите ли вы настраивать ширину каждого элемента на странице при каждом изменении контента? Это особенно верно, если вы получаете контент из других мест (например, API или бэкэнд), а не пишете его самостоятельно.

С помощью flexbox вы можете установить свойства flex-grow , flex-shrink и flex-basis , чтобы сообщить вашему контенту, как его размещать. Что должно расти при просмотре на широкоформатном мониторе? Что должно уменьшаться при просмотре на телефоне? Какого размера все должно быть по умолчанию, прежде чем увеличиваться и уменьшаться?

На самом деле эти три свойства настолько полезны, что их можно объединить в одно свойство с именем flex .

Итак, если у вас есть этот CSS:

 .child {
  гибкий рост: 1;
  гибкая термоусадка: 2;
  flex-база: 300px;
}
 

Вы можете сократить его до этого:

 .child {
  гибкий: 1 2 300 пикселей;
}
 

Чтобы понять, почему это полезно, попробуйте изменить ширину родительского элемента div в этом примере:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

(Может помочь просмотр полноэкранной версии.)

Все дети начинают с определенных размеров, благодаря их свойствам flex-basis .

Когда вы увеличиваете родительский элемент div, красный дочерний элемент вообще не растет, потому что его flex-grow равен 0 . Зеленый дочерний элемент растет быстрее синего дочернего элемента, поскольку его свойства flex-grow равны 2 и 1 .

Когда вы уменьшаете родительский элемент div, красный дочерний элемент сжимается быстрее, чем синий дочерний элемент, потому что их 9Свойства 0097 flex-shrink : 2 и 1 . Зеленый ребенок вообще не сжимается, потому что его flex-shrink равен 0 .

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

Дополнительные сведения

Выше мы рассмотрели основы flexbox, но есть и другие свойства и значения, которые вы можете использовать. Чтобы узнать о них больше, ознакомьтесь с полным руководством по Flexbox по CSS-трюкам.

И, конечно же, не бойтесь искать в Интернете, если вы в чем-то не уверены. Там много отличных ресурсов!

Flexbox наиболее полезен, когда у вас есть одна строка (или столбец) содержимого. Контейнеры Flexbox могут упаковывать свое содержимое в несколько строк (или столбцов) с помощью свойства flex-wrap , но у вас нет большого контроля над выравниванием этих элементов.

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

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

Вот приведенный выше пример навигации слева с использованием сетки:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

Свойства сетки

Чтобы использовать сетку, задайте display: grid для родительского элемента, а затем установите другие свойства сетки для родительского и дочернего элементов, чтобы настроить макет.

display: grid

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

 .контейнер {
  отображение: сетка;
}
 

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

Само по себе это не очень интересно, потому что по умолчанию сетка представляет собой один столбец элементов.

сетка-шаблон-столбцы

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

Чтобы разделить сетку на несколько столбцов, используйте свойство grid-template-columns .

 .контейнер {
  отображение: сетка;
  столбцы сетки-шаблона: 100px 1fr 2fr;
}
 

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

Свойство grid-template-columns принимает список размеров, разделенных пробелами, и размещает содержимое в указанном количестве столбцов с этими размерами.

Размерами могут быть несколько различных типов значений:

  • Конкретные длины, такие как 100px или 10em , которые дают столбцу предопределенную ширину.
  • Длины в процентах, такие как 50% , которые указывают столбцу занимать этот процент ширины родителя.
  • Дробные длины, такие как 1fr или 2fr , которые указывают столбцу занимать ширину относительно других столбцов в сетке. Вы можете думать об этом как о том, как flex-grow работал выше: столбец с 2fr будет занимать примерно в два раза больше ширины, чем столбец с 1fr .
  • auto указывает размеру столбца на основе элементов в нем, а также размера контейнера и других столбцов в контейнере.

См. grid-template-columns на MDN для других типов значений.

Приведенный выше пример из grid-template-columns: 100px 1fr 2fr создает три столбца: один из 100px шириной , а затем средний столбец, который будет занимать примерно половину ширины третьего столбца.

grid-template-rows

Подобно grid-template-columns , grid-template-rows позволяет указать высоту каждой строки.

Определив grid-template-columns и grid-template-rows , вы можете создать сетку содержимого!

 .контейнер {
  отображение: сетка;
  столбцы сетки-шаблона: 1fr 2fr;
  строки шаблона сетки: 100 пикселей 50 пикселей 100 пикселей;
}
 

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

Попробуйте изменить этот код, чтобы вместо него было 3 столбца и 2 строки!

Размещение элементов в сетке

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

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

  • grid-column-start и grid-column-end сообщить ячейке, какие столбцы занимать
  • grid-row-start и grid-row-end сообщить ячейке, какие строки занимать
 .контейнер {
  отображение: сетка;
  столбцы сетки-шаблона: 1fr 2fr;
  строки шаблона сетки: 100 пикселей 50 пикселей 100 пикселей;
}
.ребенок {
  начало столбца сетки: 1;
  сетка-столбец-конец: 3;
}
.другой ребенок {
  сетка-строка-начало: 2;
  сетка-ряд-конец: 4;
}
 

Вот пример:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

Красный div начинается со столбца 1 и продолжается до столбца 3, поэтому он занимает оба столбца. Зеленый блок начинается со строки 2 и продолжается до строки 4, поэтому он занимает строки 2 и 3.

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

Вы также можете использовать сетку , столбец и сетку , ряд 9.0098 сокращение:

 .container {
  отображение: сетка;
  столбцы сетки-шаблона: 1fr 2fr;
  строки шаблона сетки: 100 пикселей 50 пикселей 100 пикселей;
}
.ребенок {
  сетка-столбец: 1/3;
}
.другой ребенок {
  сетка-ряд: 2/4;
}
 

Именованные ячейки

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

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

Сначала добавьте имена в столбцы и строки вашего контейнера, используя [] квадратных скобок:

 .container {
  отображение: сетка;
  столбцы сетки-шаблона: [слева] 1fr 2fr [справа];
  grid-template-rows: 100 пикселей [посередине] 50 пикселей 100 пикселей [внизу];
}
 

На самом деле вы называете строк между ячейками. Это тот же CSS, что и выше, за исключением того, что теперь несколько строк между ячейками имеют имена.

Затем используйте эти имена для размещения дочерних элементов:

 .red {
  цвет фона: красный;
  начало столбца сетки: слева;
  конец столбца сетки: справа;
 /* Можно сократить до grid-column: left/right; */
}
.зеленый {
  цвет фона: салатовый;
  сетка-строка-начало: середина;
  конец строки сетки: нижний;
  /* Можно сократить до grid-row: middle/bottom; */
}
 

Вот полный код:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

Другие свойства сетки

У сетки много других свойств и сокращений для написания меньшего количества строк кода. Вместо того, чтобы пытаться перечислить их все здесь, я рекомендую вам прочитать Полное руководство по сетке в CSS Tricks, CSS Grid Layout в W3Schools и CSS Grid Layout в MDN.

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

Один из макетов настолько популярен, что ему дали имя: Святой Грааль.

Макет «Святой Грааль» — это веб-сайт с заголовком, левой боковой панелью, областью основного содержимого, правой боковой панелью и нижним колонтитулом. Вероятно, вы можете назвать несколько веб-сайтов, использующих этот макет.

Вот несколько примеров макета Святого Грааля:

Использование flexbox:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

Использование сетки:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

Если вам нужен вызов и если вы хотите понять, что делает flexbox и сетку такими популярными, попробуйте реализовать макет Святого Грааля, используя только числа с плавающей запятой или блоки!

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

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

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

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

Но в конце 2000-х и начале 2010-х это стало еще сложнее, когда мобильные телефоны стали более популярными для просмотра веб-страниц. Как сделать так, чтобы ваш веб-сайт хорошо выглядел на маленьком мобильном телефоне, широкоэкранном мониторе и т. д.?

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

Вот пример:

Адаптивный дизайн означает, что вы показываете разные макеты на разных размерах экрана. Вы можете думать об этом как о сокрытии частей вашего веб-сайта на небольших экранах, но другой способ думать об этом состоит в том, что меньшие экраны содержат весь необходимый контент, а большие экраны показывают «дополнительный» контент, который не является строго обязательным.

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

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

Вы можете узнать больше об адаптивном дизайне на страницах Адаптивный дизайн — MDN и Адаптивный веб-дизайн — Википедия.

Медиа-запросы

Чтобы отобразить другой макет в зависимости от размера экрана, вы можете использовать функцию CSS под названием медиазапросы .

Медиа-запрос использует ключевое слово @media , затем тип носителя (возможно, вам нужен screen , но вы также можете настроить внешний вид вашего веб-сайта при печати с помощью print ), затем мультимедийную функцию , которая позволяет вы устанавливаете правила для различных видов дисплеев. Затем внутри { } фигурных скобок вы указываете любые правила, которые хотите применить к вашему запросу. Вот пример:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

(Может помочь просмотр полноэкранной версии.)

По умолчанию класс .content имеет тонкую сплошную черную рамку и голубой фон. Но на экранах шире 700 пикселей класс .content будет иметь салатовый фон. Поскольку мы не меняем границу на широких экранах, по умолчанию сохраняется тонкий сплошной черный цвет.

Вот более сложный пример, в котором контент отображается в одном столбце по умолчанию, а на устройствах с разрешением более 600 пикселей — в удобном макете:

Редактор кода ?

См. Pen от Happy Coding (@KevinWorkman) на CodePen.

(Может помочь просмотр полноэкранной версии.)

В этом примере также полностью скрыта левая боковая панель на мобильных устройствах.

Дополнительную информацию см. в руководстве для начинающих по медиа-запросам в MDN и CSS @media Rule в W3Schools.

Инструменты разработчика

Когда вы создаете и отлаживаете макеты в CSS, вашим лучшим другом являются инструменты разработчика вашего браузера! Они могут помочь вам понять, почему объекты выравниваются определенным образом или откуда берутся эти дополнительные несколько пикселей пространства.

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

Вот несколько ресурсов, которые помогут вам узнать больше о макетах в CSS:

  • Старый CSS, новый CSS — это отличное описание истории CSS, которое помогает поместить все в контекст. (Внимание: содержит нецензурную лексику.)
  • Краткая история CSS — это более официальная версия событий.
  • Примеры сетки миниатюр — это исследование того, как реализовать сетку миниатюр, используя многие из вышеперечисленных подходов к компоновке.
  • Полное руководство по Flexbox на CSS Tricks содержит отличную инфографику о различных свойствах flex.
  • A Complete Guide to Grid on CSS Tricks, CSS Grid Layout в W3Schools и CSS Grid Layout в MDN — хорошие источники, чтобы узнать больше о сетке.
  • Адаптивный дизайн — MDN и Адаптивный веб-дизайн — Википедия содержит описания адаптивного дизайна.
  • Руководство для начинающих по медиа-запросам в MDN и CSS @media Rule в W3Schools содержит дополнительную информацию о медиа-запросах.
  • CSS Zen Garden показывает, как один и тот же HTML-контент может быть размещен совершенно по-разному, путем изменения CSS.

Happy Coding — это сообщество людей, которые так же, как и вы, изучают программирование.
У вас есть комментарий или вопрос? Опубликуйте это здесь!


Предыдущий: CSS Далее: Хостинг

Практические занятия по CSS3 — изучите CSS, HTML и адаптивный веб-дизайн с Рассом Уикли из Max Design

Макеты CSS

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

Бесплатный стартовый шаблон Bootstrap

Базовый стартовый шаблон Bootstrap 3. Загрузите этот шаблон и используйте его как есть, не загружая дополнительные ресурсы Bootstrap.

Посмотреть Скачать

Бесплатный стартовый шаблон Bootstrap с изображением логотипа

Аналогичен базовому стартовому шаблону Bootstrap 3, но с изображением логотипа сайта.

Посмотреть Скачать

Бесплатный стартовый шаблон Bootstrap с адаптивным шрифтом

Аналогичен базовому стартовому шаблону Bootstrap 3, но с адаптивным типом — размер шрифта увеличивается по мере увеличения области просмотра.

Посмотреть Скачать

Бесплатный шаблон сообщения в блоге с правой боковой панелью

Простой загрузочный шаблон сообщения в блоге с правой боковой панелью.

Посмотреть Скачать

Бесплатный шаблон сообщения в блоге с левой боковой панелью

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

Посмотреть Скачать

Бесплатная двухколоночная галерея изображений Bootstrap

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

Посмотреть Скачать

Бесплатная трехколоночная галерея изображений Bootstrap

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

Посмотреть Загрузить

Бесплатная галерея изображений Bootstrap с четырьмя колонками

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

Просмотр Скачать

Бесплатная галерея изображений Bootstrap с шестью колонками

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

Посмотреть Скачать

Бесплатный адаптивный макет фиксированной ширины с одним столбцом

Адаптивный макет фиксированной ширины с одним столбцом, который можно использовать для блогов и веб-сайтов с одним столбцом.

Посмотреть Скачать

Бесплатный адаптивный макет с одной колонкой во всю ширину

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

Просмотр Скачать

Бесплатный адаптивный макет с двумя колонками полной ширины

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

Посмотреть Скачать

Бесплатный адаптивный макет с тремя колонками полной ширины

Адаптивный макет с тремя колонками полной ширины, который можно использовать для блогов и веб-сайтов с одной колонкой.

Посмотреть Загрузить

Ресурсы CSS

Ряд наборов слайдов CSS и связанных с ними упражнений для самостоятельного обучения.

201: Уровни CSS

38 слайдов, Уровень: Начальный

Эта подборка слайдов дает краткий обзор процесса зрелости спецификации W3C и различных уровней CSS.

ViewDownload

202: Общие термины

180 слайдов, уровень: начальный

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

ViewDownload

203: наборы правил CSS

90 слайдов, уровень: начальный

Эта презентация отвечает на некоторые основные вопросы CSS: Что такое CSS? Что такое наборы правил? Как можно более эффективно писать правила CSS?

ViewDownload

204: Применение CSS

85 слайдов, уровень: начальный

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

ViewDownload

205-01: Простые селекторы

101 слайд, Уровень: Новичок

Простые селекторы позволяют нацеливаться непосредственно на HTML-элементы, а также на элементы, содержащие атрибуты class или ID.

ViewDownload

205-02: Комбинаторы-селекторы

81 слайд, Уровень: Начальный

Комбинаторы позволяют комбинировать отдельные селекторы в новые типы селекторов, включая комбинаторы-потомки, дочерние селекторы, соседние одноуровневые селекторы и общие одноуровневые селекторы.

ViewDownload

205-03: Ссылка на псевдоклассы

36 слайдов, Уровень: Новичок

В этой колоде слайдов показано, как стилизовать : ссылка и : посетили селекторов псевдоклассов.

ViewDownload

205-04: Псевдоклассы действий пользователя

52 слайда, Уровень: Новичок

Псевдоклассы действий пользователя, :focus , :hover и


9 : 8 стилизовать элементы в зависимости от того, как пользователи взаимодействуют с этими элементами.

ViewDownload

205-05: Выбор языка

30 слайдов, уровень: средний

:lang(c) 9Селектор 0098 нацелен на любой элемент, который содержит атрибут lang и значение соответствующего языкового вложенного тега.

ViewDownload

205-06: Псевдокласс отрицания

34 слайда, Уровень: Продвинутый

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

ViewDownload

205-07: Структурные псевдоклассы

357 слайдов, Уровень: Средний

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

ViewDownload

205-08: Псевдоклассы пользовательского интерфейса

76 слайдов, Уровень: Новичок

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

ViewDownload

205-09: Псевдоэлементы

158 слайдов, Уровень: Средний

Псевдоэлементы позволяют нам стилизовать «поддельные» элементы, элементы, которых нет в дереве документа, такие как ::first строка , :: первая буква , :: до и :: после .

ViewDownload

205-10: Селекторы атрибутов

130 слайдов, уровень: средний

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

ViewDownload

206: Наследование CSS

98 слайдов, Уровень: Новичок

Наследование CSS — это передача свойств CSS от родительских элементов к дочерним элементам.

ViewDownload

207: Каскад CSS

173 слайда, уровень: средний

Браузеры часто сталкиваются с ситуациями, когда несколько объявлений ссылаются на один и тот же элемент и свойство. Но какая декларация победит? Победитель определяется по правилам каскада.

ViewDownload

208: Блочная модель CSS

207 слайдов, Уровень: Средний

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

ViewDownload

209: Позиционирование CSS

312 слайдов, Уровень: Расширенный

Свойство position указывает, как позиционируются элементы HTML. Возможные значения: статический , относительный , абсолютный , фиксированный и липкий .

ViewDownload

210: Сверху, справа, снизу, слева

314 слайдов, Уровень: Расширенный

Верх , Право , 9Свойства 0097 bottom и left позволяют авторам определять расположение позиционируемых элементов.

ViewDownload

211: z-индекс и контекст наложения

252 слайда, уровень: продвинутый

В этом наборе слайдов рассматривается свойство z-index , а также подробно исследуется контекст наложения.

ViewDownload

212: Плавающие элементы CSS

152 слайда, Уровень: Средний

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

ViewDownload

213: контекст форматирования блока

151 слайд, уровень: средний

Контекст форматирования блока важно понимать, поскольку он влияет на такие аспекты макета, как плавающие элементы, очистка и поля.

ViewDownload

214-01: Синтаксис значения свойства CSS

165 слайдов, уровень: средний

Эта подборка слайдов даст вам общее представление о синтаксисе свойства/значения W3C. Это поможет вам понять различные спецификации W3C CSS.

ViewDownload

214-02: Свойство — цвет

488 слайдов, уровень: средний

Свойство color устанавливает значение цвета переднего плана для текстового содержимого элемента. Он также устанавливает цвет оформления текста, если только <'text-decoration-color'> не определен пользователем.

ViewDownload

214-03: Свойство - box-shadow

146 слайдов, Уровень: Начинающий

CSS3 box-shadow позволяет применить одну или несколько теней к любому блоку, включая внешние и внутренние тени блока.

ViewDownload

214-05: Свойство - высота строки

182 слайда, уровень: средний

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

ПосмотретьЗагрузить

Последние презентации

Серия недавних презентаций по специальным возможностям, CSS, системам дизайна и многому другому.

Что такое доступность и почему нас это должно волновать?

2018-04: Canberra Inclusive Design Meetup

Эта презентация охватывает; различные типы инвалидности, вспомогательные технологии, юридические и этические обязанности, а также ряд терминов, таких как W3C, WAI и WCAG.

ПОСМОТРЕТЬ НА СЛАЙДШЕРЕ

Специальные возможности в библиотеках шаблонов

2018-02: Sydney Web Accessibility & Inclusive Design

Раньше многие разработчики рассматривали сложные веб-сайты и веб-приложения как набор отдельных страниц. В наши дни все дело в абстракции. Отправляйтесь в путешествие, пока мы исследуем боль и славу создания специальных возможностей в библиотеках UX, дизайна и интерфейсных шаблонов.

ПОСМОТРЕТЬ НА СЛАЙДШАРЕ

Создание доступного автозаполнения — #ID24

2017-11: ID24

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

ПОСМОТРЕТЬ НА СЛАЙДШАРЕ

Создание доступных плавающих меток

09 2017: AllyBytes

В этой презентации для Inclusive Design 24 (#ID24) рассказывается, как создавать доступные, полезные «плавающие» метки. Плавающие метки — это когда метка перемещается над элементами управления формы в зависимости от взаимодействия с пользователем.

ПРОСМОТР НА SLIDESHARE

Создание раскрывающегося списка кнопок со специальными возможностями

2017-05: AllyBytes

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

ПОСМОТРЕТЬ НА СЛАЙДШАРЕ

Создание простого и доступного выключателя

2016-12: CSS Summit

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

ПОСМОТРЕТЬ НА СЛАЙДШАРЕ

Доступные настраиваемые переключатели и флажки

2016-11: OZeWAI

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

ПОСМОТРЕТЬ НА СЛАЙДЕ

Глубокое погружение в Line-Height

2016-06: Саммит CSS

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

ПОСМОТРЕТЬ НА СЛАЙДЕ

Создание доступных веб-компонентов без слез

04.2016: Ответить

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

ПОСМОТРЕТЬ НА СЛАЙДЕ

Интерфейсные платформы — доступны ли они

2015-12: OZeWAI

Краткая презентация о некоторых потенциальных проблемах, связанных с использованием любой платформы.

ПОСМОТРЕТЬ НА СЛАЙДШАРЕ

aria-live: хорошее, плохое и уродливое

2014-07: AllyBytes

В презентации будет рассмотрено использование WAI-ARIA и свойства aria-live для оповещения программ чтения с экрана об изменениях в ДОМ. В презентации также будет рассмотрена поддержка aria-live в различных программах чтения с экрана и способы наиболее эффективного использования этого свойства сегодня.

ПОСМОТРЕТЬ НА СЛАЙДШАРЕ

Пошаговое руководство по макетированию CSS

Создание макетов — одна из самых сложных частей разработки внешнего интерфейса для многих людей.

Вы можете потратить часов пробуя случайные свойства CSS, копируя и вставляя из Stack Overflow, и надеясь наткнуться на волшебную комбинацию , которая создаст желаемый макет.

Если ваша обычная стратегия состоит в том, чтобы подходить к макету поэлементно, поставьте А вместо здесь , и теперь, когда A находится на его месте, я хочу поставить B более там … ну, это гарантированный путь к разочарованию. CSS не работает как эскиз, фигма или фотошоп.

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

Мы рассмотрим небольшой пример, от начала до конца, и я объясню весь CSS по пути — так что даже если вы не знаете или не помните, как позиция и отображают , иначе вы не сможете отличить align-items от justify-content , вы что-то из этого получите.

Здесь мы также будем использовать простой HTML и CSS, поэтому вам не нужно ничего знать о React/Vue/Angular/CSS-in-JS или даже о JavaScript. Точно такие же методы будут работать и в выбранной вами среде, потому что простые HTML и CSS — это основные технологии, на которых основано все остальное.

Хорошо звучит? Давайте углубимся в это.

Пример небольшой компоновки

Для этого поста мы воспроизведем что-то похожее на твит:

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

Макет CSS работает более гладко, когда вы не пытаетесь собрать его воедино в браузере, одновременно создавая его в своей голове. Вы абсолютно можете добраться до этого уровня! Но если вы это читаете, я предполагаю, что вас там нет , но 🙂

Первый шаг: идентифицируйте части

Прежде чем писать HTML или CSS, мы выделим отдельные части этой схемы: с точки зрения строк и столбцов. Таким образом, у вас есть либо элементы, идущие вниз по странице один за другим, либо ряд элементов, расположенных слева направо. Мышление с точки зрения строк и столбцов прекрасно сочетается с двумя методами компоновки, которые дает нам CSS: Flexbox и Grid.

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

Второй шаг: нарисуйте прямоугольники вокруг вещей

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

Каждый элемент, который вы размещаете на странице с HTML, представляет собой прямоугольник. Конечно, иногда у них есть закругленные углы, или они представляют собой круги, или причудливые формы SVG… Часто вы на самом деле не см. куча прямоугольников на странице. Но вы всегда можете нарисовать ограничивающую рамку вокруг объекта. Так что это помогает представить все в виде прямоугольника.

Я упомянул прямоугольники, потому что если у вас есть набор элементов, которые необходимо выровнять, например, первая строка с именем/@дескриптором/временем или последняя строка со значками, вы всегда можете заключить их в коробку для целях укладки, чтобы упростить их укладку.

Если бы мы остановились здесь и закодировали это в HTML, у нас было бы что-то вроде этого:

 <артикул>
  <изображение
    src="http://www.gravatar.com/аватар"
    alt="Имя"
  />
  <дел>
    @handle
    Имя
    3 часа назад
  

Какое-то проницательное сообщение.

<ул>
  • (Для краткости я не упомянул стандартные элементы HTML, такие как окружающие теги и , но они нужны для полностью сформированного документа)

    И вы бы видим что-то вроде этого (вот песочница):

    …что даже близко не соответствует тому, что нам нужно. Но! Весь контент есть. И некоторые кластеры элементов даже текут в правильном направлении.

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

    Примечание о семантике HTML

    Вы можете задаться вопросом, почему я выбрал именно эти элементы — article , p и т. д. Почему бы не сделать все div ?

    Почему это…

     <статья>
      <изображение ... />
      <дел>
        <диапазон/>
        <диапазон/>
        <диапазон/>
      
      <п>...
      <ул>
        
  • <кнопка> ...
  • Вместо этого?

     <дел>
      <изображение ... />
      <дел>
        <дел/>
        <дел/>
        <дел/>
      
      <дел> ... 
      <дел>
        <кнопка> ... 
      
     

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

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

    Тег article представляет собой статью, похожую на статью, а твит похож на статью, если прищуриться достаточно сильно.

    Тег p представляет собой абзац, а текст твита похож на абзац.

    Тег ul представляет собой неупорядоченный список вещей (в отличие от упорядоченного или нумерованного списка), и в этом случае он содержит список действий, которые вы можете предпринять.

    Семантическое значение HTML-элементов и то, какие именно из них использовать в конкретных ситуациях,… непросто. Но по большей части семантический элемент — даже очень слабо связанный — будет лучше, чем div , что просто означает « div ision».

    Стиль элементов по умолчанию

    Что заставляет его выглядеть так, как он есть? Почему одни элементы располагаются на отдельной строке, а другие рядом?

    Это происходит из-за стили по умолчанию применены к элементам, и это подводит нас к нашему первому знакомству с CSS: встроенных против блочных элементов.

    Строковые элементы будут располагаться рядом друг с другом на одной строке (и переноситься, если необходимо, точно так же, как слова в предложении). span , button и img являются встроенными элементами, согласно стилю браузера по умолчанию.

    Блочные элементы , напротив, любят стоять отдельно. С точки зрения вывода на консоль, вы можете думать о блочном элементе как имеющем \n новая строка до и после нее. Это похоже на console.log("\ndiv\n") . Теги article , div , li , ul и p являются элементами блочного уровня.

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

    Тогда обратите внимание, что @handle, имя и время находятся в одной строке? Это потому что они внутри охватывают тегов, которые являются встроенными элементами.

    Эти трое находятся на отдельной строке от «содержательного сообщения», потому что (а) они находятся в пределах div , после которого будет новая строка и (б) тег p равен также блоку элемент, так что это также заставило бы новую строку. (однако вы не видите двух новых строк по той же причине, по которой HTML объединяет соседние пробелы).

    Если вы внимательно посмотрите, то заметите, что пространство над и под «содержательным сообщением» равно 9.0779 больше , чем пространство между изображением аватара и дескриптором/именем/временем под ним. Это пространство также контролируется стилями по умолчанию: теги p имеют верхнее и нижнее поля .

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

    Шаг третий: дополнительные ящики

    Мы хотим расположить изображение аватара слева, а все остальное справа. Учитывая то, что вы знаете о встроенных и блочных элементах, вы можете подумать, что можете просто обернуть элементы справа во встроенный элемент, например 9.0097 диапазон .

    Но это не сработает. Встроенный элемент не помешает блочным элементам внутри него разорвать строку.

    Чтобы расположить элементы так, как мы хотим, нам понадобится что-то более мощное, например макет Flexbox или Grid. Мы решим эту проблему с помощью flexbox.

    Как работает Flexbox

    «Гибкие» макеты CSS могут упорядочивать элементы в строки или столбцы . Внутри одного элемента flexbox представляет собой одномерную систему компоновки. Чтобы обе строки были и столбцов (как в нашем дизайне твита), нам нужно добавить несколько элементов-оболочек, чтобы изменить направление: по столбцам на внешнем, затем по строкам на внутреннем правом и так далее.

    Вы можете включить гибкий макет для контейнера, установив свойство display: flex; . Тогда сам контейнер станет блочным элементом (поэтому он получит свою собственную строку), а элементы внутри контейнера станут «гибкими элементами» — то есть они больше не будут встроенными или блочными; они контролируются гибким контейнером. (совет для профессионалов: есть также display: inline-flex , если вы хотите, чтобы ваш контейнер flexbox отображался как встроенный элемент).

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

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

    Почему Flexbox вместо Grid?

    Я использую здесь flexbox вместо CSS Grid по нескольким причинам. Я думаю, что флексбокс немного проще в освоении, и он также лучше подходит для небольших макетов, чем грид. Flexbox особенно хорош для макетов, где все в основном строки или в основном столбцы .

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

    Знаю, знаю… в других сферах веб-разработки «новая мода» всегда заменяет «старую и сломанную», но CSS так не работает. Flexbox и Grid счастливо сосуществуют как два разных инструмента в коробке.

    Почти всегда есть несколько способов решить проблему с CSS!

    Шаг четвертый: применение Flexbox

    Итак, теперь, когда у нас есть план, давайте применим некоторые стили. Я пошел и обернул левосторонние элементы в div и присвоил класс большинству элементов, чтобы упростить их нацеливание с помощью CSS.

     <артикул>
      <изображение
       
        src="http://www.gravatar.com/аватар"
        alt="Имя"
      />
      <дел>
        <дел>
          @handle
          Имя
          3 часа назад
        
        

    Какое-то проницательное сообщение.

    <ул>
  • (вот CodeSandbox)

    Визуально все выглядит так же.

    Это потому, что div s, помимо того, что они являются блочными элементами (и введением новой строки, если ее не было), в остальном невидимы. Когда вам нужно что-то, чтобы содержать другие элементы, и нет более семантического варианта, div делает отличная обертка.

    Вот наш первый фрагмент CSS, который мы поместим в тег в стиле внутри заголовка тег документа:

     
      <стиль>
        .твит {
          дисплей: гибкий;
        }
      
     

    (в остальных примерах я не буду использовать теги head и style, но знайте, что весь этот код CSS будет помещен в тег style)

    Это шаг в правильное направление! Мы используем селектор класса для нацеливания на все элементы с классом tweet . У нас есть только один такой элемент, но если бы их было десять, то все они теперь были бы гибкими контейнерами.

    Ведущий . в CSS означает, что это селектор класса. Почему . ? Не знаю. Вам просто нужно запомнить это.

    Теперь содержимое находится справа от аватара… но изображение довольно странно перекошено.

    Это связано с тем, что по умолчанию контейнер flex:

    • размещает свои элементы рядом
    • сделать их такими же широкими, как содержимое, которое они содержат, и
    • установил все свои высоты на основе самого высокого.

    Мы можем контролировать их вертикальное выравнивание с помощью свойства align-items .

     .твит {
      дисплей: гибкий;
      выравнивание элементов: flex-start;
    } 

    По умолчанию для align-items было stretch , но установка его на flex-start подталкивает их вверх, и позволяет элементам управлять своей собственной высотой.

    Направление: строка или столбец?

    Кстати, направление по умолчанию для flex-контейнеров — flex-направление: строка; . Да, это называется «строка», хотя, в зависимости от того, как вы на это смотрите, вы можете назвать это двумя столбцами. Думайте об этом как о 90 779 рядах из 90 780 элементов, расположенных бок о бок, и это будет иметь больше смысла.

    Что-то вроде этого изображения вазы. Или два лица. Что бы ни.

    Википедия

    Контент должен занимать больше места

    Гибкие элементы занимают ровно столько места по горизонтали, сколько им нужно, но мы хотели бы, чтобы область контента занимала как можно большую ширину.

    Для этого применим flex: 1; свойство содержание div. (Поскольку у него есть класс, мы будем использовать другой селектор класса!)

     .content {
      гибкий: 1;
    } 

    И мы также добавим пространство между аватаром и содержимым, дав аватару небольшое поле:

     . avatar {
      поле справа: 10px;
    } 

    Выглядит немного лучше!

    margin vs padding

    Итак… почему margin вместо дополнение ? А зачем ставить справа от аватара, а не слева от контента?

    Общее правило: размещайте поля справа и снизу, а не слева и сверху.

    По крайней мере, для таких раскладок, как английский, все идет слева направо и сверху вниз, так что в некотором смысле каждый элемент «зависит» от того, что находится слева от него или над ним.

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

    Разделение проблем

    Технически, в этом случае, где и как мы размещаем разрыв между аватаром и контентом , на самом деле не имеет значения. Пространство есть пространство, и нет границ, которые могли бы мешать ( padding идет внутри границ; margin выходит наружу).

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

    Я стараюсь думать о каждом элементе как об отдельной вещи с тем же намерением, что и функция JavaScript, которая делает только одну вещь: если у каждой вещи есть только одна задача, код будет проще писать и легче отлаживать когда что-то пойдет не так.

    Если бы мы добавили поле слева от содержимого , а затем однажды решили удалить аватар , у нас осталось бы это пространство. Мы должны были бы выследить, что вызывает дополнительное пространство (окружающие твит ? содержимое ?) и избавиться от него.

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

    Хорошо, это было много сказано о 10 пикселях. Поместите поля справа и снизу. Вернемся к стилю.

    Удаление стиля списка

    Ненумерованный список ul и li Элементы списка внутри него поставляются с кучей пробелов слева и пулями. Мы не хотим ничего из этого.

    В ненумерованном списке много отступов слева, которые мы можем отключить. Давайте также сделаем его flex-контейнером, чтобы кнопки располагались бок о бок (в ряд, помните… с flex-direction: row по умолчанию)

    Элементы списка имеют list-style- введите из диска , который показывает пули, и мы можем отключить это, установив стиль списка: нет; ( list-style — это сокращенное свойство , которое одновременно устанавливает несколько других свойств, включая list-style-type ).

     .действия {
      дисплей: гибкий;
      заполнение: 0;
    }
    .actions ли {
      стиль списка: нет;
    } 

    Селектор .actions — это еще один селектор класса. Там ничего особенного.

    Селектор .actions li , тем не менее, говорит «все li элементов где-нибудь внутри элементов с классом действий ». Это комбинация селектора класса ( .actions ) и селектора элемента ( li ).

    Разделение селекторов таким пробелом сужает выбор с каждым. CSS на самом деле читает селекторы в обратном порядке. Это «найти все li на странице», а затем «хорошо, теперь нацеливаемся только на li , которые находятся где-то внутри элемента с классом действий 9».0098». Вы можете думать об этом любым способом, и вы получите тот же результат. (подробнее о причинах этого в StackOverflow)

    Разложить кнопки

    Мы можем разложить кнопки несколькими способами.

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

    Они выравнивают содержимое вашего документа по левому краю, по центру, справа или, гм, «по ширине», также известное как «по ширине». .

    В flexbox это можно сделать с помощью атрибута justify-content . Когда вы находитесь в flex-direction: row (по умолчанию и той, которую мы использовали до сих пор), justify-content будет перемещать элементы влево и вправо. По умолчанию это flex-start (поэтому все сжато влево). Если мы установим justify-content: space-between на .actions , они будут распределены равномерно по всей ширине, например:

    Однако это не совсем то, что нам нужно. Было бы лучше, если бы они не занимали всю ширину. Так что убери это.

    Вместо этого мы можем применить правое поле к каждому элементу списка, чтобы разнести их. Давайте также дадим всему твиту границу, чтобы мы могли сказать, что происходит. 1px solid #ccc сделает его шириной 1 пиксель, сплошной линией (в отличие от пунктирной или пунктирной) и серым цветом.

     .твит {
      дисплей: гибкий;
      выравнивание элементов: flex-start;
      граница: 1px сплошная #ccc;
    }
    . actions ли {
      стиль списка: нет;
      поле справа: 30px;
    } 

    Теперь это выглядит так:

    Кнопки выглядят лучше, но граница подчеркивает тот факт, что все находится прямо у края контейнера tweet . Давайте дадим ему немного места с отступом .

     .твит {
      дисплей: гибкий;
      выравнивание элементов: flex-start;
      граница: 1px сплошная #ccc;
      отступ: 10 пикселей;
    } 

    Теперь у твита есть отступы, но откуда-то берется дополнительное пространство. Если мы выделим элементы в инструментах разработчика браузера, вы заметите поля выше и ниже p и ul элементы (в Chrome devtools поля оранжевые, а отступы зеленые):

    Также интересно, что отступ между строками такой же, как выше и ниже — он не удваивается! Это потому, что CSS сворачивает поля по вертикали. Когда два поля соприкасаются сверху вниз вот так, побеждает большее. Узнайте больше о сворачивании полей в CSS-Tricks.

    Для этого макета я вручную изменю поля для этих трех элементов справа: .author-meta , p и ul . Для реального макета сайта вы можете рассмотреть возможность сброса CSS, чтобы дать вам общую отправную точку для разных браузеров.

     р, ул {
      маржа: 0;
    }
    .автор-мета, р {
      нижняя граница: 1em;
    } 

    Разделение селекторов запятыми , позволяет применить набор свойств сразу к нескольким селекторам. Итак, p, ul говорит «все элементы p , И все элементы ul ». Это союз обоих.

    Здесь мы также используем новую единицу измерения: em в 1em . Один em равен размеру основного шрифта в пикселях. Размер шрифта по умолчанию 16px (высота 16 пикселей), поэтому в нашем случае 1em == 16px . При изменении размера шрифта масштаб em меняется вместе с ним, поэтому 1em — хороший способ выразить «Я хочу, чтобы поле под текстом было таким же высоким, как текст, каким бы он ни был».

    Теперь у нас есть это:

    Теперь давайте уменьшим изображение и превратим его в круг. Мы сделаем его 48 пикселей, который используется в Twitter.

     .аватар {
      поле справа: 10px;
      ширина: 48 пикселей;
      радиус границы: 50%;
    } 

    Свойство border-radius позволяет скруглять углы блоков, и есть несколько способов указать его значение. Вы можете указать число в px или em или другую единицу, если вам нужен небольшой радиус. Вот радиус границы : 5px 9Например, 0098:

    Если мы установим радиус границы равным половине ширины и высоты (в данном случае 24 пикселя), мы получим круг. Но более простой способ - установить его на 50% , что позволит определить правильный размер для создания круга без необходимости заранее знать точный размер. И, бонус, если размер изменится позже, нам вообще не нужно трогать border-radius !

    Нарисуйте остальную часть совы

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

    Мы установим шрифт Helvetica (тот, который использует Twitter), немного уменьшим размер шрифта, выделим имя жирным шрифтом и, гм, изменим порядок «@handle Name» (в HTML), потому что это не так, как это выглядит в Твиттере 😀

     .tweet {
      дисплей: гибкий;
      выравнивание элементов: flex-start;
      граница: 1px сплошная #ccc;
      отступ: 10 пикселей;
      /*
        Измените шрифт и размер.
        Установка его на .tweet изменяет его для всех дочерних элементов.
        (кроме кнопок. кнопки странные)
      */
      семейство шрифтов: Helvetica, Arial, без засечек;
      размер шрифта: 14px;
    }
    .имя {
      вес шрифта: 600;
    }
    .справиться,
    .время {
      цвет: #657786;
    } 

    Использование шрифта , вес: 600; — то же, что и , вес шрифта: полужирный; Некоторые шрифты бывают разных размеров, и вы можете указать от 100 до 900 (от самого тонкого до самого жирного). нормальный (по умолчанию) такой же, как 400.

    Кстати, … CSS технически не позволяет комментариям начинаться с // , как в JS и других языках. Стиль // будет работать в некоторых браузерах, но не во всех из них он безопасен. Окружите свои комментарии C-стилем /* */ и все готово.

    Еще одна маленькая хитрость: мы добавим выпуклую точку между «дескриптором» и «временем», используя псевдоэлемент . Так как точка чисто стилистическая, имеет смысл сделать ее в CSS, не заморачивая HTML.

     .handle::после {
      содержание: "\00b7";
    } 

    Часть ::after создает псевдоэлемент, который помещается внутри .handle , но в конце («после» содержимого). Вы также можете использовать ::до . Атрибут содержимого может быть установлен для любого текста, включая символы Unicode. Вы можете безрассудно стилизовать псевдоэлементы, как и любые другие. Они могут быть удобны для таких вещей, как значки, индикаторы уведомлений или другие маленькие элементы.

    Кнопки со значками

    Мы сделаем еще одну вещь — заменим кнопки значками. Мы добавим Font Awesome внутри тега head :

      

    А затем замените действия ul на это, где у каждой кнопки есть иконка и какой-то скрытый текст:

     
    • <кнопка> <я ария-скрытый = "истина" > Ответить
    • <кнопка> <я ария-скрытый = "истина" > Ретвитнуть
    • <кнопка> <я ария-скрытый = "истина" > Нравится
    • <кнопка> Дополнительные действия

    Font Awesome — это шрифт со значками, который использует тег i «курсив» для отображения значков. Поскольку это шрифт, свойства CSS, которые применяются к тексту (например, , цвет и размер шрифта ), будут работать и со значками.

    Здесь мы добавили несколько небольших настроек, чтобы сделать кнопки доступными:

    • Атрибут aria-hidden="true" указывает программам чтения с экрана игнорировать значок.
    • Класс только для sr предоставляется Font Awesome. Он визуально скрывает элементы, к которым применяется, оставляя их доступными для программ чтения с экрана.

    Вот отличный бесплатный урок умника от Марси Саттон о создании специальных кнопок со значками.

    Теперь добавим немного стиля кнопкам — удалим границу, придадим им лучший цвет и немного увеличим шрифт. Мы также установим курсор : указатель , который превратит курсор мыши в «руку», которую вы обычно видите, когда наводите курсор на ссылку. Наконец, .actions button:hover будет нацеливаться на кнопки, на которые наведен курсор, и окрашивать их в синий цвет.

     .кнопка действий {
      граница: нет;
      цвет: #657786;
      размер шрифта: 16px;
      курсор: указатель;
    }
    кнопка .actions:наведите {
      цвет: #1da1f2;
    } 

    Вот финальный стилизованный твит во всей красе:

    А вот CodeSandbox, если вы хотите поиграть с ним самостоятельно.

    Как стать лучше в CSS

    Самое главное, что вы можете сделать, чтобы улучшить свои навыки CSS, — это попрактиковаться.

    Выберите существующие сайты, которые вам нравятся, и скопируйте их. Дизайнеры и художники называют это «копированием». Я написал статью о том, как изучить React с помощью копирования, и все принципы применимы и к CSS.

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

    Изучение React может быть проблемой — так много библиотек и инструментов!
    Мой совет? Игнорируйте их все 🙂
    Пошаговые инструкции см.

    Автор записи

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *