├── .gitignore ├── README.md ├── articles ├── button.html ├── checkbox.html ├── form.html ├── input.html ├── jumbotron.html ├── logo.html ├── menu.html ├── site-header.html ├── socials.html └── text-block.html ├── css └── app.css ├── en ├── articles │ ├── button.html │ ├── checkbox.html │ ├── form.html │ ├── input.html │ ├── jumbotron.html │ ├── logo.html │ ├── menu.html │ ├── site-header.html │ ├── socials.html │ └── text-block.html └── index.html ├── img └── favicon.png ├── index.html ├── pages ├── elements.md ├── form.md ├── grid.md ├── logo.md ├── mistakes.md ├── navigation.md ├── preface.md └── sets.md └── talks └── form.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # html5-design-patterns 2 | Паттерны верстки 3 | 4 | [English version](https://fatuk.github.io/html5-design-patterns/en) 5 | 6 | ## Оглавление: 7 | 8 | * [Предисловие](pages/preface.md) 9 | * [Блоки](pages/blocks.md) 10 | * [Логотип](pages/logo.md) 11 | * [Навигация](pages/navigation.md) 12 | * [Набор блоков](pages/sets.md) 13 | * [Сетка](pages/grid.md) 14 | * [Форма](pages/form.md) 15 | * [Поля](pages/fields.md) 16 | * [Checkbox и Radio button](pages/checkbox-radio.md) 17 | * [Модальные окна](pages/modals.md) 18 | * [Элементы](pages/elements.md) 19 | * [Модификаторы](pages/modificators.md) 20 | * [Беседы](pages/talks.md) 21 | * [Форма](talks/form.md) 22 | * [Поля](talks/fields.md) 23 | * [Ошибка](talks/error.md) 24 | * [Шаблонизатор](talks/templating.md) 25 | * [Декомпозиция](talks/decomposing.md) 26 | * [Code style](talks/code-style.md) 27 | * [Препроцессоры](talks/preprocessors.md) 28 | * [Распространенные ошибки](pages/mistakes.md) 29 | 30 | ##### © 2015 - Паттерны верстки 31 | -------------------------------------------------------------------------------- /articles/button.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Button 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 паттерны проектирования 26 | 27 | 28 |  назад 29 | 30 |

31 |
32 |
33 |

34 |
.btn {}
35 |

36 |

37 | Блок Кнопка. 38 |

39 |

40 | Очень часто встречается и чуть ли не первое, что делают из стайл гайда. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /articles/checkbox.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Checkbox 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 паттерны проектирования 26 | 27 | 28 |  назад 29 | 30 |

31 |
32 |
33 |

34 |
.checkbox {}
35 |

36 |

37 | Блок Чекбокс. 38 |

39 |

40 | Кастомный чекбокс. Точно так же можно создать radio button. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /articles/form.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Form 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 паттерны проектирования 26 | 27 | 28 |  назад 29 | 30 |

31 |
32 |
33 |

34 |
.form {}
35 |

36 |

37 | Блок Форма. 38 |

39 |

40 | Блок формы нужен для создания сетки. Как правило у форм есть ряды, колонки, ячейки и другие вспомогательные элементы. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /articles/input.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Input 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 паттерны проектирования 26 | 27 | 28 |  назад 29 | 30 |

31 |
32 |
33 |

34 |
.input {}
35 |
.input-icon {}
36 |
.input-btn {}
37 |

38 |

39 | Блок Поле ввода. 40 |

41 |

42 | Поле ввода имеет разные модификации или может входить в состав более сложных блоков: search, date-picker, counter. 43 |

44 |
45 |
46 |

54 | See the Pen 55 | Button by Andrew Fatuk (@fatuk) on CodePen.

56 | 57 |
58 | 63 |
64 | 65 | 66 | -------------------------------------------------------------------------------- /articles/jumbotron.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Jumbotron 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 паттерны проектирования 26 | 27 | 28 |  назад 29 | 30 |

31 |
32 |
33 |

34 |
.jumbotron {}
35 |

36 |

37 | Блок Джамботрон. 38 |

39 |

40 | Думаю, все видели на футбольных, хоккейных матчах или на боксе здоровенный экран похожий на телевизор. Так вот это что-то такое, но на странице. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /articles/logo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Logo 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 паттерны проектирования 26 | 27 | 28 |  назад 29 | 30 |

31 |
32 |
33 |

34 |
.logo {}
35 |

36 |

37 | Блок Логотип. 38 |

39 |

40 | Как правило, это логотип компании или продукта. Распологается в верхнем левом углу. На главной странице никуда не ведет, на дочерних ссылается на главную. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /articles/menu.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Menu 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 паттерны проектирования 26 | 27 | 28 |  назад 29 | 30 |

31 |
32 |
33 |

34 |
.menu {}
35 |
.main-menu {}
36 |
.footer-menu {}
37 |

38 |

39 | Блок Меню. 40 |

41 |

42 | Любое меню представляет собой просто набор однотипных ссылок, поэтому чаще всего меню делают списком. 43 |

44 |
45 |
46 |

54 | See the Pen 55 | Button by Andrew Fatuk (@fatuk) on CodePen.

56 | 57 |
58 | 63 |
64 | 65 | 66 | -------------------------------------------------------------------------------- /articles/site-header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Site header 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 паттерны проектирования 26 | 27 | 28 |  назад 29 | 30 |

31 |
32 |
33 |

34 |
.site-header {}
35 |

36 |

37 | Блок Голова сайта. 38 |

39 |

40 | В этом блоке обычно размещают: логотип, главное меню, поиск, контакты, авторизационные блоки, корзину и т.д. По сути голова является оберткой для специальной сетки верха страницы. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /articles/socials.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Socials 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 паттерны проектирования 26 | 27 | 28 |  назад 29 | 30 |

31 |
32 |
33 |

34 |
.socials {}
35 |

36 |

37 | Блок Социалки. 38 |

39 |

40 | Социалки обычно находятся на странице товара или в футере, но учитывая, что все блоки по БЭМ независимые и универсальные, то вставить можно этот блок куда угодно. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /articles/text-block.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Text Block 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 паттерны проектирования 26 | 27 | 28 |  назад 29 | 30 |

31 |
32 |
33 |

34 |
.text-block {}
35 |

36 |

37 | Блок Текстовый блок. 38 |

39 |

40 | Существует великое множество текстовых блоков. Вот пара примеров. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 |

64 | See the Pen 65 | Button by Andrew Fatuk (@fatuk) on CodePen.

66 | 67 |
68 | 73 |
74 | 75 | 76 | -------------------------------------------------------------------------------- /css/app.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: 'Roboto', sans-serif; 3 | background: #1d1f20; 4 | color: #fff; 5 | } 6 | a { 7 | color: #ed5c23; 8 | } 9 | .narrow-layout { 10 | width: 50%; 11 | margin: 0 auto; 12 | } 13 | .narrow-layout__title {} 14 | .narrow-layout__text {} 15 | .narrow-layout__list {} 16 | .narrow-layout__item {} 17 | .narrow-layout__link { 18 | color: #ed5c23; 19 | -webkit-transition: opacity .3s; 20 | -o-transition: opacity .3s; 21 | transition: opacity .3s; 22 | } 23 | .narrow-layout__link:hover { 24 | opacity: .7; 25 | } 26 | .narrow-layout__link:active { 27 | opacity: 1; 28 | -webkit-transition: none; 29 | -o-transition: none; 30 | transition: none; 31 | } 32 | .narrow-layout__footer { 33 | padding: 40px 20px; 34 | } 35 | h1 { 36 | font-weight: 300; 37 | } 38 | * { 39 | box-sizing: border-box; 40 | } 41 | .layout { 42 | padding: 20px; 43 | } 44 | .layout__aside { 45 | width: 30%; 46 | float: left; 47 | } 48 | .layout__content { 49 | width: 70%; 50 | float: left; 51 | } 52 | .layout__title { 53 | font-weight: 300; 54 | padding-right: 100px; 55 | } 56 | .layout__text { 57 | padding-right: 20px; 58 | } 59 | .layout__text .layout__link { 60 | line-height: 1; 61 | } 62 | .layout__link { 63 | color: #ed5c23; 64 | font-size: 16px; 65 | line-height: 37px; 66 | vertical-align: middle; 67 | text-decoration: none; 68 | } 69 | .layout__link_back { 70 | position: absolute; 71 | top: 40px; 72 | right: 30px; 73 | } 74 | .layout__footer { 75 | padding-top: 40px; 76 | padding-bottom: 20px; 77 | padding-left: 20px; 78 | display: inline-block; 79 | width: 100%; 80 | } 81 | .clearfix:after { 82 | content: ""; 83 | display: table; 84 | clear: both; 85 | } 86 | 87 | 88 | @media (max-width: 960px) { 89 | .layout__aside { 90 | width: 100%; 91 | } 92 | .layout__content { 93 | width: 100%; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /en/articles/button.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Button 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 design patterns. 26 | 27 | 28 |  back 29 | 30 |

31 |
32 |
33 |

34 |
.btn {}
35 |

36 |

37 | The Button. 38 |

39 |

40 | You can meet this block very often. And almost the first thing you'll create from style guide. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /en/articles/checkbox.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Checkbox 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 design patterns. 26 | 27 | 28 |  back 29 | 30 |

31 |
32 |
33 |

34 |
.checkbox {}
35 |

36 |

37 | The Checkbox. 38 |

39 |

40 | Here is the custom checkbox. The same way you can create the custom radio button. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /en/articles/form.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Form 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 design patterns. 26 | 27 | 28 |  back 29 | 30 |

31 |
32 |
33 |

34 |
.form {}
35 |

36 |

37 | The Form. 38 |

39 |

40 | The Form block is needed to create a grid for fields. As a rule forms have such elements as rows, columns, cells and other handy elements. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /en/articles/input.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Input 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 design patterns 26 | 27 | 28 |  back 29 | 30 |

31 |
32 |
33 |

34 |
.input {}
35 |
.input-icon {}
36 |
.input-btn {}
37 |

38 |

39 | The Input. 40 |

41 |

42 | The input may have different modifications or be a part of other blocks: search, date-picker, counter. 43 |

44 |
45 |
46 |

54 | See the Pen 55 | Button by Andrew Fatuk (@fatuk) on CodePen.

56 | 57 |
58 | 63 |
64 | 65 | 66 | -------------------------------------------------------------------------------- /en/articles/jumbotron.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Jumbotron 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 design patterns. 26 | 27 | 28 |  back 29 | 30 |

31 |
32 |
33 |

34 |
.jumbotron {}
35 |

36 |

37 | The Jumbotron. 38 |

39 |

40 | I think all of you could see at football, hokkey matches or a boxing ring a hefty screen that looks like TV set or something like that. So we have the same thing but on the page. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /en/articles/logo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Logo 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 design patterns. 26 | 27 | 28 |  back 29 | 30 |

31 |
32 |
33 |

34 |
.logo {}
35 |

36 |

37 | The Logo. 38 |

39 |

40 | At the most cases it's a company or product logo. It's placed at the left top corner of the page. At the home page it leads nowhere, and at the child pages leads to the home. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /en/articles/menu.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Menu 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 design patterns. 26 | 27 | 28 |  back 29 | 30 |

31 |
32 |
33 |

34 |
.menu {}
35 |
.main-menu {}
36 |
.footer-menu {}
37 |

38 |

39 | The Menu. 40 |

41 |

42 | Any menu is a link set, therefore the menu should consist of the list. 43 |

44 |
45 |
46 |

54 | See the Pen 55 | Button by Andrew Fatuk (@fatuk) on CodePen.

56 | 57 |
58 | 63 |
64 | 65 | 66 | -------------------------------------------------------------------------------- /en/articles/site-header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Site header 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 design patterns. 26 | 27 | 28 |  back 29 | 30 |

31 |
32 |
33 |

34 |
.site-header {}
35 |

36 |

37 | The Site Header. 38 |

39 |

40 | Usually in this block they place the thing like: logo, main menu, search, contacts, authorize blocks, cart, etc. As the matter of fact header is a wrapper for the grid of the page top. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /en/articles/socials.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Socials 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 design patterns. 26 | 27 | 28 |  back 29 | 30 |

31 |
32 |
33 |

34 |
.socials {}
35 |

36 |

37 | The Socials. 38 |

39 |

40 | Usually social buttons is located on the product page or on the site footer. But according to the BEM methodology feel free to use it ever you need or want. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 | 61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /en/articles/text-block.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns. Text block 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 |
23 |
24 |

25 | HTML5 design patterns. 26 | 27 | 28 |  back 29 | 30 |

31 |
32 |
33 |

34 |
.text-block {}
35 |

36 |

37 | The Text Block. 38 |

39 |

40 | There are a lot of text blocks. Here is some. 41 |

42 |
43 |
44 |

52 | See the Pen 53 | Button by Andrew Fatuk (@fatuk) on CodePen.

54 | 55 |
56 |

64 | See the Pen 65 | Button by Andrew Fatuk (@fatuk) on CodePen.

66 | 67 |
68 | 73 |
74 | 75 | 76 | -------------------------------------------------------------------------------- /en/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns 8 | 9 | 10 | 11 | 12 | 15 | 19 | 20 | 21 |
22 | 23 |

24 | HTML5 design patterns. 25 |

26 | 27 | 28 | Русская версия 29 | 30 | 31 | 32 |

33 | Here is the reference manual on often used BEM methodology blocks. 34 |

35 | 36 |
    37 |
  1. 38 | 39 | Site header 40 | 41 |
  2. 42 |
  3. 43 | 44 | Logo 45 | 46 |
  4. 47 |
  5. 48 | 49 | Menu 50 | 51 |
  6. 52 |
  7. 53 | 54 | Jumbotron 55 | 56 |
  8. 57 |
  9. 58 | 59 | Button 60 | 61 |
  10. 62 |
  11. 63 | 64 | Form 65 | 66 |
  12. 67 |
  13. 68 | 69 | Input 70 | 71 |
  14. 72 |
  15. 73 | 74 | Checkbox 75 | 76 |
  16. 77 |
  17. 78 | 79 | Text block 80 | 81 |
  18. 82 |
  19. 83 | 84 | Socials 85 | 86 |
  20. 87 |
88 | 89 | 94 |
95 | 96 | 97 | -------------------------------------------------------------------------------- /img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fatuk/html5-design-patterns/8adfc17c9f4bcb4f3f24e550c1eabf15f9c78ec4/img/favicon.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | HTML5 design patterns 8 | 9 | 10 | 11 | 12 | 15 | 19 | 20 | 21 |
22 | 23 |

24 | HTML5 дизайн паттерны. 25 |

26 | 27 | 28 | English version 29 | 30 | 31 | 32 |

33 | Перед Вами справочное руководство по часто встречаемым блокам по методологии БЭМ. 34 |

35 | 36 |
    37 |
  1. 38 | 39 | Site header 40 | 41 |
  2. 42 |
  3. 43 | 44 | Logo 45 | 46 |
  4. 47 |
  5. 48 | 49 | Menu 50 | 51 |
  6. 52 |
  7. 53 | 54 | Jumbotron 55 | 56 |
  8. 57 |
  9. 58 | 59 | Button 60 | 61 |
  10. 62 |
  11. 63 | 64 | Form 65 | 66 |
  12. 67 |
  13. 68 | 69 | Input 70 | 71 |
  14. 72 |
  15. 73 | 74 | Checkbox 75 | 76 |
  16. 77 |
  17. 78 | 79 | Text block 80 | 81 |
  18. 82 |
  19. 83 | 84 | Socials 85 | 86 |
  20. 87 |
88 | 89 | 94 |
95 | 96 | 97 | -------------------------------------------------------------------------------- /pages/elements.md: -------------------------------------------------------------------------------- 1 | ### Элементы 2 | 3 | Элементы - это то, из чего состоят блоки. Основное отличие от блоков - это то, что они зависят от блоков и не могут использоваться отдельно. Вот пример элементов: 4 | 5 | ```html 6 | 7 |
8 | 9 |

10 | News title 11 |

12 | 13 |

14 | Lorem ipsum dolor sit amet. 15 |

16 | 24 |
25 | ``` 26 | 27 | В примере видно, что блок новости состоит из 6 элементов: 28 | 29 | * title 30 | * img 31 | * text 32 | * footer 33 | * author 34 | * date 35 | 36 | Зная из чего состоят те или иные блоки, не сложно посмотрить понятную и хорошо поддерживаемую структуру. 37 | 38 | 39 | #### Часто используемые названия для элементов: 40 | 41 | * list 42 | * item 43 | * link 44 | * title 45 | * text 46 | * header 47 | * footer 48 | * container 49 | * content 50 | * inner 51 | * wrapper 52 | * btn 53 | * counter 54 | * info 55 | * row 56 | * column 57 | * label 58 | 59 | Это, на мой взгляд, наиболее часто используемые общие названия. Бывают, конечно, и более специфичные. Все зависит от потребностей. 60 | -------------------------------------------------------------------------------- /pages/form.md: -------------------------------------------------------------------------------- 1 | ### Форма 2 | 3 | Чаще всего формы представляют собой набор строчек с двумя колонками внутри. В первой лейблы, во второй собственно поля. Такую структуру можно представить так: 4 | 5 | ```html 6 | 7 |
8 |
9 | 10 |

11 | Form title 12 |

13 |
14 |
15 | 18 |
19 |
20 | 21 |
22 | 23 |
24 |
25 |
26 |
27 |
28 | ``` 29 | 30 | Напрашивается вопрос: зачем мы используем обертку `
` для текстового поля? Благодаря ей мы сможем легко добавить сообшение ошибки валидации и сообщение будет автоматически привязано к нужному полю. 31 | 32 | ```html 33 | 34 |
35 |
36 | 37 |

38 | Form title 39 |

40 |
41 |
42 | 45 |
46 |
47 | 48 |
49 | 50 | 51 |
52 | Enter correct data 53 |
54 |
55 |
56 |
57 |
58 |
59 | ``` 60 | -------------------------------------------------------------------------------- /pages/grid.md: -------------------------------------------------------------------------------- 1 | ### Сетка 2 | 3 | 4 | 5 | ```html 6 | 7 |
8 | 9 |
10 |
11 |
12 |
13 | 14 |
15 |
16 |
17 |
18 |
19 |
20 | ``` 21 | -------------------------------------------------------------------------------- /pages/logo.md: -------------------------------------------------------------------------------- 1 | ### Логотип 2 | 3 | Этот блок есть почти на каждом сайте и было бы странно верстать его каждый раз по-разному. 4 | Давайте рассмотрим как вообще его можно реализовать. 5 | 6 | Такую конструкцию нам предлагает Google. Это верстка логотипа в поисковой выдаче: 7 | 8 | ```html 9 | 10 |

11 | 14 |

15 | ``` 16 | 17 | А так выглядит логотип на главной Yahoo! Изображение они поместили на background. 18 | 19 | ```html 20 | 21 |

22 | 23 | Yahoo 24 | 25 |

26 | ``` 27 | 28 | Похожая картина наблюдается и у Яндекса: 29 | 30 | ```html 31 | 32 | 37 | ``` 38 | 39 | Плюсы использования фонового изображения: 40 | * поддержка ретины (растровая графика) 41 | * спрайты 42 | 43 | Минусы: 44 | * неудобно менять изображение, только в CSS 45 | * неявное объявление изображения 46 | 47 | При использовании формата svg плюсы невелируются. Поэтому я предпочитаю такой блок логотипа: 48 | 49 | ```html 50 | 51 |

52 | 53 | Logo 54 | 55 |

56 | ``` 57 | Говорят для SEO оптимизации тег `

` должен быть один на страницу. В любом случае методология БЭМ позволяет менять теги, т.к. мы не привязываемся к их именам. Также мы можем легко отказаться от ссылки в случае, если мы уже находимся на данной странице. 58 | 59 | ```html 60 | 61 | 64 | ``` 65 | 66 | [<- Оглавление](../README.md) 67 | -------------------------------------------------------------------------------- /pages/mistakes.md: -------------------------------------------------------------------------------- 1 | ### Распространенные ошибки 2 | 3 | 1. Не используйте элементы вне блока, к которому они привязаны. Даже если элементы одинаковые. В случае, если они действительно одинаковые, нужно вынести такие элементы в отдельный блок или представить, что их одинаковость это совпадение и стили написать для каждого эелемента отдельно. (ПЕРЕПИСАТЬ БОЛЕЕ ПОНЯТНО) 4 | 5 | ```html 6 |
7 |

8 | This is news title 9 |

10 |
11 | 12 |
13 |

14 | This is article title but the same as news title 15 |

16 |
17 | ``` 18 | 19 | 2. Не разбивайте сложные имена классов подчеркиванием `_`. Используйте дефис `-` 20 | 21 | ```html 22 |
23 |

24 | Wrong title 25 |

26 |
27 | 28 |
29 |

30 | Right title 31 |

32 |
33 | ``` 34 | 35 | [<- Оглавление](../README.md) 36 | -------------------------------------------------------------------------------- /pages/navigation.md: -------------------------------------------------------------------------------- 1 | ### Навигация 2 | 3 | Список из однородных элементов принято делать ненумерованным списком `