1 of 52

Введение в HTML-2:

bootstrap, дизайн

Биоинформатика на ФББ, 1 курс, весенний семестр

Валентина Дмитриевна Маслова,

@val_ma_telegram

2 of 52

Bootstrap

Bootstrap – это набор готовых css стилей и js скриптов, созданный �в первую очередь для того, чтобы облегчить верстку сайтов с упором на “резиновый” дизайн, т.е. сайт, сделанный на bootstrap, будет одинаково хорошо смотреться на любом экране.

О чем bootstrap:

  • На 80% о макетировании (колонки, контейнеры, div-ы)
  • Об унификации (скрупулезное переопределение defaults, �так как у каждого браузера они свои)
  • Немного об исправлениях в шизофрении CSS

При этом собственные стили все еще нужно писать – но уже �в основном только для оформления.

2

3 of 52

Как добавить Bootstrap на страницу

Вариант 1.

  • Скачать скомпилированные библиотеки CSS
  • Указать путь к ним:

<head>

<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<title>Эволюция в действии</title>

<link href="./bootstrap.min.css" rel="stylesheet">

</head>

Ссылка на официальный сайт Bootstrap

3

4 of 52

Как добавить Bootstrap на страницу

Вариант 2.

  • Указать путь на репозиторий Bootstrap:

<head>

<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<title>Эволюция в действии</title>

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">

</head>

Ссылка на официальный сайт Bootstrap

4

5 of 52

Сайт v1.0 VS Сайт v2.0

http://kodomo.fbb.msu.ru/~alexander.zlobin/teach/html/v1.0/

http://kodomo.fbb.msu.ru/~alexander.zlobin/teach/html/v2.0/

Поменялось:

  • Гарнитура шрифта
  • Кегль
  • Отступы от края страницы
  • …?

5

6 of 52

Основы разметки с помощью Bootstrap

При вёрстке с Bootstrap содержимое страницы следует упаковывать в блоки <div></div> с использованием различных классов.

<div class=”container”>

.container - основной родительский класс для центрирования содержимого на странице и выравнивания элементов. По умолчанию имеет максимальную ширину 1140px и минимальную 540px. Адаптируется к ширине экрана.

</div>

<div class=”container-fluid”>

.container-fluid - то же, что .container, но по умолчанию занимает всю ширину экрана (width=100%)

</div>

6

7 of 52

Основы разметки с помощью Bootstrap

Посмотрим, как ведут себя .container и .container-fluid при масштабировании:

http://kodomo.fbb.msu.ru/~val_ma/v2.1/try-bootstrap.html/

7

8 of 52

Основы разметки с помощью Bootstrap

Теперь применим это к нашей странице. Всё содержимое упакуем в <div class=”container”></div>. Текст разобьём на абзацы, добавим ссылку в конце, добавим картинки (аналогично версии v1.4).

Чтобы картинки не были гигантскими, а наследовали ширину родительского блока, применим к ним класс .img-fluid

Посмотрим на результат, сравним с v1.4:

http://kodomo.fbb.msu.ru/~val_ma/v2.1/

http://kodomo.fbb.msu.ru/~alexander.zlobin/teach/html/v1.4/

8

9 of 52

Bootstrap Grid System

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

9

<div>

</div>

10 of 52

Bootstrap Grid System

Для форматирования используют систему классов .row и .col-xx-*:

В данном примере блок <div class=”col-md-8”> занимает 8 колонок (8/12 = 2/3) от родительского <div class=”row”>, а <div class=”col-md-4”> занимает 4 колонки (4/12 = 1/3).

10

<div class=”container-fluid”>

</div>

<div class=”row”>

</div>

<div class=”col-md-8”></div>

<div class=”col-md-4”>

</div>

11 of 52

Bootstrap Grid System

.col-xx можно использовать для автоматического разбиения на равные колонки:

Подробно можно почитать тут.

11

<div class=”container-fluid”>

</div>

<div class=”row”>

</div>

<div class=”col-md”>

</div>

<div class=”col-md”>

</div>

<div class=”col-md”>

</div>

<div class=”col-md”>

</div>

12 of 52

Bootstrap Grid System

Для расстановки блоков по горизонтали применим дополнительный класс помимо .row :

Подробно можно почитать тут.

12

<div class=”row justify-content-start”>

</div>

<div class=”col-md-4”>

</div>

<div class=”row justify-content-around”>

</div>

<div class=”col-md-4”>

</div>

<div class=”col-md-4”>

</div>

<div class=”col-md-4”>

</div>

13 of 52

Bootstrap Grid System

Для расстановки блоков по вертикали - дополнительные классы помимо .col :

Подробно можно почитать тут.

13

<div class=”row>

</div>

<div class=”col-md-4 align-self-start”>

</div>

<div class=”col-md-4 align-self-center”>

</div>

<div class=”col-md-4 align-self-end”>

</div>

14 of 52

Bootstrap: добавляем воздуха

Классы для bootstrap-совместимых отступов:

<div class=”row mt-3”>

mt-3

Подробно можно почитать тут.

14

m = margin

p = padding

t = top

b = bottom

r = right

l = left

x = left+right

y = top+bottom

0-5 или auto

15 of 52

Bootstrap Grid System

Применим это к разбиению контента в нашем практикуме. Объединим иллюстрации 1-3 в одну, в которой изображения следуют друг за другом вертикально, а сама иллюстрация расположена справа от текста. Иллюстрации 5 и 6 расположим рядом на одном уровне. (v1.6)

http://kodomo.fbb.msu.ru/~val_ma/v2.2/

Масштабирование – что тут происходит?

15

16 of 52

Адаптивная вёрстка

xx в классе col-xx-* обозначает, начиная с какого размера экрана содержимое колонки перестаёт занимать обозначенную часть блока родителя и занимает его целиком.

16

Префикс

.col-

.col-sm-

.col-md-

.col-lg-

.col-xl-

Max ширина

Auto

540px

720px

960px

1140px

Хорошо подходит для:

17 of 52

Адаптивная вёрстка

Сделаем страницу адаптивной.

  • С большого экрана (lg): первые 3 иллюстрации справа от первых 3 абзацев.
  • С экрана планшета (md): Первый абзац по центру, первые 3 иллюстрации справа от 2-3 абзацев.
  • С экрана телефона в горизонтальной ориентации (sm): первые 3 иллюстрации в один ряд после 3 абзаца.
  • С экрана телефона в вертикальной ориентации (xs): всё выровнено по ширине экрана.

http://kodomo.fbb.msu.ru/~val_ma/v2.3/

Время на вёрстку, когда ты знаешь, что делаешь: 15 минут.

Время на вёрстку, когда ты не совсем знаешь, что делаешь: 3.5 часа.

17

18 of 52

Меню с помощью Bootstrap

Используем тэг <nav> и класс .navbar.

.navbar по умолчанию имеет ширину fluid (т.е. распространяется на всю ширину страницы браузера). Можно обернуть <nav> в <div class=”container”>, если не хочется делать меню fluid.

Классы navbar-expand-xx можно применять для скрывания/разворачивания меню при адаптивной вёрстке.

.navbar-brand позволяет выделить заглавный элемент (логотип).

Остальные элементы принято оформлять в виде элементов ненумерованного списка <ul>

18

19 of 52

Меню с помощью Bootstrap

Простейшая менюшка:

http://kodomo.fbb.msu.ru/~val_ma/v2.4/

Чтобы работало, необходимо прописать ссылки на библиотеки JS:

<!DOCTYPE html>

<html lang="ru">

<head>

<meta charset="utf-8">

<title>Эволюция в действии</title>

<link href="./style.css" rel="stylesheet" type="text/css" >

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">

</head>

<body>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>

</body>

Ссылки взять с официального сайта Bootstrap

19

20 of 52

Меню с помощью Bootstrap

navbar-fixed-top – меню фиксировано наверху

navbar-dark bg-dark – быстрый способ сделать темное меню и не писать свой стиль

navbar-light bg-light – то же, но светлое

https://getbootstrap.com/docs/5.2/components/navbar/

https://www.w3schools.com/bootstrap/bootstrap_navbar.asp

20

21 of 52

Дизайн и адекватность

21

22 of 52

Гарнитуры

По умолчанию используются шрифты вашей системы. Команда CSS font-family: “Arial”, “Verdana”, sans-serif; говорит следующее:

  1. Проверить, установлен ли в системе Arial, �если да, то использовать его
  2. Если нет, то проверить то же самое для Verdana
  3. Если и Verdana нет, то использовать шрифт без засечек �по умолчанию

Но что, если хочется, чтобы на любой системе текст сайта был набран одним и тем же шрифтом и при этом выбранным вами?

  1. Прикрепить шрифт к сайту
  2. Использовать Google fonts

22

23 of 52

Гарнитуры

  • Шрифты с засечками более стандартны в печатной типографике
  • Шрифты без засечек более ассоциированы с чтением с экрана

23

24 of 52

Добавление своего шрифта

  1. Нам нужен файл шрифта в формате .ttf, .otf или одном из веб-форматов. Не занимайтесь пиратством и не используйте шрифты, лицензии на которые у вас нет! Есть шрифты с открытой лицензией, например PT Sans, PT Serif.
  2. Внутри CSS:�@font-face {� font-family: ‘Some name’;� src: url(‘path to myfont.ttf’) format(‘truetype’);� font-weight: normal;� font-style: normal;�}
  3. p { font-face: ‘Some name’; }

24

25 of 52

Google Fonts

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

25

26 of 52

Шрифтовые пары

Часто для контраста и стиля заголовки набирают одной гарнитурой, а основной текст – другой. Вдохновение:

https://www.mixfont.com/

https://fontjoy.com/

26

27 of 52

Гарнитура, ее оформление и адекватность

  1. Не забывайте о том, что главное назначение текста на вашей странице – быть прочитанным
  2. Никогда не набирайте основной массив текста курсивом или полужирным. Это способы выделения!
  3. Ни в коем случае не используйте Comic Sans
  4. Моноширинные шрифты – только для кода!
  5. Гомогенность – единообразие стилевого решения для блока одного типа

27

28 of 52

28

29 of 52

29

30 of 52

30

31 of 52

31

32 of 52

Основы верстки текста

  1. Дефис и тире – разные символы (и тире отбивается пробелами)
  2. До запятой пробела нет, после – есть
  3. Род/вид (Bacillus subtilis) выделяются курсивом
  4. In vitro, in vivo, in silico
  5. Тире в начале строки – моветон
  6. Перенос по связке “предлог + существительное”, “союз + глагол” – тоже (для этого есть неразрывные пробелы &nbsp;)
  7. В разных языках разные правила для кавычек

Благо есть простой тул для очистки своего текста

https://www.artlebedev.ru/typograf/

32

33 of 52

Цвет

Способы задать цвет:

  1. Название (https://www.w3schools.com/colors/colors_names.asp)
  2. Hex-код #F5FFFA (https://htmlcolorcodes.com/)
  3. rgb(255, 122, 111)

Цветовые сочетания:

https://color.adobe.com/trends

https://coolors.co/

33

34 of 52

34

35 of 52

Фон

Просто цвет:

background-color: … ;

Градиент:

background-image: linear-gradient(white, blue);

background-image: radial-gradient(white, blue, gray);

Градиенты с CSS:

https://uigradients.com

35

36 of 52

Фоновое изображение

Background-image: url(“path_to_image”);

По умолчанию изображение ведет себя как обои:

  • не отмасштабируется
  • замостит собой весь экран
  • а также будет скроллиться

36

37 of 52

37

38 of 52

38

39 of 52

39

40 of 52

40

41 of 52

Убрать замощение:

background-repeat: no-repeat;

Включить масштабирование:

background-size: cover;

background-position: center;

Выключить скроллинг:

background-attachment: fixed;

41

42 of 52

Совершенно недопустимо

42

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

43 of 52

Отчисление

43

ПаРаЛоГи - гомологичные БЕЛКИ из одного организма. Ортологи �- гомологичные белки из разных организмов или гомологичные белки, для которых разделение их общего предка на линии, ведущей к ним, произошло в результате видообразования. В данном задании надо было найти в своих бактериях достоверные гомологи белка CLPX_BACSU и построить дерево этих гомологов. Затем, считая, что дерево построено верно, определить ортологов и паралогов, а также указать некоторые эволюционные события.

44 of 52

Почти недопустимо

44

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

45 of 52

Ну… ладно

45

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

46 of 52

Допустимо

46

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

47 of 52

Отчисление (как тонка грань)

47

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

48 of 52

Про фон

Еще не придумано ничего лучше, чем белый фон и черный/темно-серый текст

Темная тема – это не просто белый текст на черном фоне �(на самом деле там нет черного почти никогда): https://material.io/design/color/dark-theme.html#anatomy

Старайтесь наводить красоту иллюстрациями к практикумам, �а не котятами на фоне

48

49 of 52

Hover

К каждому объекту в CSS можно применить селектор :hover и прописать изменение поведения при наведении курсора мышки

img { opacity: 0.5; }

img:hover { opacity: 1.0; }

Это изменение может быть плавным:

img { opacity: 0.5; }

img:hover { opacity: 1.0; transition: 2s }

49

50 of 52

Transition

img { opacity: 0.5; width: 50%}

img:hover { opacity: 1.0; width: 100%;

transition: opacity 2s, width 4s }

Transition: all 0s ease 0s

Что - как быстро - как - задержка

Для вдохновения: 1, 1, 1

50

51 of 52

Поищем вдохновения

Более стандартные варианты для учебного сайта:

https://ccsb.scripps.edu/goodsell/

https://www.visual-science.com/projects/

https://bioinf.me/research

https://academy.yandex.ru

https://timogrossenbacher.ch

Менее стандартные варианты:

https://nplus1.ru/ (можно так сделать страничку семестра, например)

https://sunandstuff.com/mandelbrot/about/ (весь дизайн вокруг контента)

51

52 of 52

ДЗ

  • Продумать и реализовать дизайн своего сайта. При оформлении применять CSS.
  • Реализовать навигацию с помощью <nav>.
  • Стандартизировать вид страниц сайта.
  • Создать страницу, содержащую материалы Мини-обзора бактерии (обязательное задание из 1 семестра, http://kodomo.fbb.msu.ru/wiki/2019/1/block3_credit1). На странице Первого семестра добавить ссылку на получившийся отчёт.

52