CSS: Наводим красоту
В этой главе мы добавим файл стилей для нашего приложения, чтобы оно выглядело красиво.
Основы CSS
Каждому элементу на странице можно присвоить определенный класс. Классы служат для того, чтобы задавать элементам внешний вид. Пример:
Теперь в CSS мы можем задать стиль кнопки:
Так как наша кнопка использует оба класса, будут применены стили из .button
и из .red
. Если мы хотим задать стили только для тех элементов, которые используют оба класса сразу, то мы напишем такое правило:
Мы также можем задавать правила, использующие иерархию элементов. Например, есть у нас такой HTML
Посмотрим, как можно использовать CSS селекторы для выбора элементов:
CSS селектор | Значение | Результат |
| Тег | 1, 3 |
| Тег | — |
| Элемент с классом | 1, 2, 3 |
| Элемент с классом | 2 |
| Элемент с классом | 2 |
| Элемент с классом | 2, 3 |
| Элемент с классами | 1 |
| Элемент с классами | 3 |
| Два селектора, перечисленные через запятую — правило применится к обоим | 2, 3 |
Это далеко не все возможности CSS, но пока этого достаточно.
Применение
Давай еще раз посмотрим на то, что должно в конце получиться и составим список "черт" элементов:
поле ввода и кнопки имеют черную обводку с закруглением
кнопка в поле ввода зеленого цвета
кнопка в списке – персикового
в каждой строке есть два столбца, пусть 200px и 100px соответственно, между ними 10px
вертикальное расстояние между строками — 5px
у каждого элемента отступ от границы — 6px
Давай добавим классы нашим компонентам так, чтобы можно было использовать их в CSS:
В папке todo
создадим файл style.css
, а в TodoApp.jsx
— импортируем его:
Опишем цвета фона наших кнопок (я использовал ключевые слова для цветов, можешь выбрать самостоятельно):
Наши кнопки и поле ввода должны иметь черную обводку с закруглением:
Стиль бывает solid
, dashed
, dotted
— сплошной, пунктирный и точечками соответственно. попробуй поменять эти значения (толщины границы, её стиля, цвета и радиуса закругления ) и посмотри, что получится.
На данный момент результат должен быть похож на это:
Выглядит не очень хорошо, но мы на верном пути. Осталось выровнять элементы.
Каждая строка состоит из двух элементов: текста/текстового поля (слева) и кнопки (справа)
Давай назначим этим элементам классы:
Для Item.jsx
сделай это самостоятельно.
Вернемся в файл стилей:
Дополнительная информация: box-sizing: border-box;
— говорит нам о том, что границу надо учитывать при рассчете ширины компонента:
display: inline-block;
говорит о том, что к элементу надо относиться как к блоку (а не как к )
Ответ для прошлой главы
Last updated