---
tags: ulla
disqus: hackmd
smartypants: true
---
# ULA. Стилизация :art::lower_left_paintbrush:
## Формат и требуемая квалификация
Все стили приложения описаны в формате `css-in-js (jss)`. Подробнее о формате [здесь](https://reactnative.dev/docs/0.60/style).
Например если вы хотите создать прямоугольник со сторонами 50 на 50 пикселей и красной заливкой, его стиль будет выглядеть так:
```javascript
{
width: 50,
height: 50,
backgroundColor: 'red'
}
```
В основном это обычный CSS (всем известный напарник HTML), только вместо дефиса в стилях следующее слово пишется с большой буквы:
`background-color (в CSS)` --> `backgroundColor (в jss)`.
Любой начинающий программист (и любой мотивированный не глупый непрограммист) может легко разобраться с этим форматом и вносить свои правки. Для этого требуется минимальная квалификация.
Тем более вам не надо писать всё снуля: перед вашими глазами есть уже написанные стили и вам остаётся только править их.
Стилизация всего приложения вынесена в 3 отдельных модуля в папке [`config/styles`](https://github.com/Aparus/ulla/tree/master/src/config/styles):
* general
* layout
* typedContent
## general (общие)
`general` содержит самую базовую информацию о типографии:
* шрифты,
* размер текста,
* направление письма
* выравнивание.
Если вы делаете приложение с письмом справа налево (арабский, иврит, ...) - именно здесь вам следует указать направление письма дополнительно установленные красивые шрифты.
## layout (макет)
`layout` содержит стили каркаса приложения, элементов:
* главной страницы (HomeScreen),
* выдвигающегося меню (Drawer),
* оглавления уроков (ChapterSubchaptersScreen),
* заголовков страниц (ScreenHeader).
## typedContent
`typedContent` содержит стили типов контента. Здесь вы можете настроить:
размер картинки в словарной карточке,
цвет подстрочного перевода в пофразовом плеере,
оформление блока цитаты в текстовых материалах и т.д.
Отличие от `layout` в том, что на базе имеющихся типовых материалов вы можете создавать свои типы. Например, вы можете взять типовой контент `media` (пофразовый плеер) и на его базе создать разные плееры для песен, прозы и стихов (с разными кнопками, цветами и т.д.)
Модули `layout` и `typedContent` опираются на `general`.
Изначально внешний вид приложения настроен во всех возможных вариациях. Вы можете ничего не трогать и использовать имееющиеся настройки. Но если захотите что-то поменять -- у вас есть подробные наглядные примеры.
## Подсказка
Если вы хотите изменить стиль и запутались где это сделать, задайте себе вопрос:
* это общий каркас приложения? --> значит правьте `layout`
* элемент конкретного типа материалов? --> правьте `typedContent`
* общий стиль, который должен насквозь пройти через разные элементы приложения? --> правьте `general`
Более подробные инструкции смотрите непосредственно в коде этих модулей.