├── CONTRIBUTING.md
├── README.md
├── README.ru.md
└── README.ua.md
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | Feel free to translate best practices into your language and create a pull request.
2 | You will also need to add language into the navigation of all other languages.
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
6 |
7 | # HTML recommendations and best practices
8 |
9 | ## Prefer fewer elements over more elements
10 |
11 | It is harder to read, understand, and maintain large HTML blocks. Another reason — large DOM can influence performance.
12 |
13 | - [Avoid an excessive DOM size](https://web.dev/dom-size/)
14 |
15 | ### Avoid
16 | ```html
17 |
18 |
19 |
20 |
We are the working dead
21 |
22 |
23 | ```
24 |
25 | ### Prefer
26 | ```html
27 |
28 |
We are the working dead
29 |
30 | ```
31 |
32 | ## Prefer semantic elements over non-semantic
33 |
34 | It is easier to read, understand, and maintain semantic HTML. Also, it's better for accessibility, for example, screen readers. And all kinds of robots and parsers. Including search engine spiders.
35 |
36 | - [The practical value of semantic HTML](https://www.brucelawson.co.uk/2018/the-practical-value-of-semantic-html/)
37 | - [HTML: A good basis for accessibility](https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML)
38 | - [Understanding why Semantic HTML is important, as told by TypeScript.](https://medium.com/@mandy.michael/understanding-why-semantic-html-is-important-as-told-by-typescript-bd71ad41e6c4)
39 | - [The SEO Advantages of Machine-Readable HTML5 Semantic Markup](https://searchengineland.com/seo-advantages-of-machine-readable-html5-semantic-markup-314455)
40 | - [Semantics in HTML 5](https://alistapart.com/article/semanticsinhtml5/)
41 |
42 | ### Avoid
43 | ```html
44 | 20 minutes ago.
45 | ```
46 |
47 | ### Prefer
48 | ```html
49 |
50 | ```
51 |
52 | ## Prefer progressive enhancement and simplification over hacky or complex solutions
53 |
54 | This way, we would get more stable and solid solutions while delivering the user's best possible experience.
55 |
56 | - [Progressive Enhancement: What It Is, And How To Use It?](https://www.smashingmagazine.com/2009/04/progressive-enhancement-what-it-is-and-how-to-use-it/)
57 | - [Do websites need to look exactly the same in every browser?](http://dowebsitesneedtolookexactlythesameineverybrowser.com/)
58 |
59 | ### Avoid
60 | ```html
61 |
Deadlights jack lad schooner scallywag dance the hempen jig carouser broadside cable strike colors. Bring a spring upon her cable holystone blow the man down spanker Shiver me timbers to go on account lookout wherry doubloon chase. Belay yo-ho-ho keelhaul squiffy black spot yardarm spyglass sheet transom heave to.
Deadlights jack lad schooner scallywag dance the hempen jig carouser broadside cable strike colors. Bring a spring upon her cable holystone blow the man down spanker Shiver me timbers to go on account lookout wherry doubloon chase. Belay yo-ho-ho keelhaul squiffy black spot yardarm spyglass sheet transom heave to.
95 |
107 | ```
108 |
109 | ## Prefer native over custom
110 |
111 | It next to impossible deliver better UX than one, which was provided by browser vendors. You don't have vendor resources, both time and human, and rarely see all underwater rocks and aspects related to the specific problem. Also, native elements usually have much better performance.
112 |
113 | 1. It takes significantly more time to build a custom solution than use the native one.
114 | 2. You can't integrate into system custom components in the same way native does.
115 | 3. We can't control 3rd party dependencies.
116 | 4. 3rd party libs often add size to the bundle.
117 | 5. You can't predict where 3rd party will fail and don't know to what degree it accessible or support localization and internationalization.
118 | 6. Native components don't require to load the JS bundle to work. So they are ready for interaction as soon as HTML loaded.
119 | 7. The performance of a native component would generally be much better than a custom one.
120 | 8. New features and updates arrive with browser update.
121 | 9. Both user agents and developers would be more efficient in working with native solutions that custom one. Because it is standard, standards-based, well and widely known.
122 |
123 | - [Do I need a custom select?](https://doineedacustomselect.com/)
124 | - [Under the spotlight: Select](https://modulz.app/blog/under-the-spotlight-select)
125 |
126 | ### Avoid
127 | ```html
128 |
129 |
We are the working dead
130 |
131 | Zombie ipsum reversus ab viral inferno, nam rick grimes malum cerebro. De carne lumbering animata corpora quaeritis. Summus brains sit, morbo vel maleficia? De apocalypsi gorger omero undead survivor dictum mauris. Hi mindless mortuis soulless creaturas, imo evil stalking monstra adventus resi dentevil vultus comedat cerebella viventium. Qui animated corpse, cricket bat max brucks terribilem incessu zomby. The voodoo sacerdos flesh eater, suscitat mortuos comedere carnem virus. Zonbi tattered for solum oculi eorum defunctis go lum cerebro.
132 |
133 |
134 |
142 |
162 | ```
163 |
164 | ### Prefer
165 | ```html
166 |
167 | We are the working dead
168 | Zombie Ipsum reversus ab viral inferno, nam rick grimes malum cerebro. De carne lumbering animata corpora quaeritis. Summus brains sit, morbo vel maleficia? De apocalypsi gorger omero undead survivor dictum mauris. Hi mindless mortuis soulless creaturas, imo evil stalking monstra adventus resi dentevil vultus comedat cerebella viventium. Qui animated corpse, cricket bat max brucks terribilem incessu zomby. The voodoo sacerdos flesh eater, suscitat mortuos comedere carnem virus. Zonbi tattered for solum oculi eorum defunctis go lum cerebro.
169 |
170 | ```
171 |
172 | ## Prefer valid over invalid
173 |
174 | Even if it looks fine in your browser, it can look broken entirely in users' one because error correction can work differently in different browsers. Also, it could be misleading for developers who will maintain this code. Potentially valid HTML could be better for SEO and accessibility.
175 |
176 | - [Why Validate?](https://validator.w3.org/docs/why.html)
177 | - [6 Reasons Why Google Says Valid HTML Matters](https://www.searchenginejournal.com/google-valid-html/)
178 |
179 | ### Avoid
180 | ```html
181 |
209 | ```
210 |
211 | ## Prefer presentation separated from the structure
212 |
213 | It is easier to maintain code where structure and presentation are separated. Easier to read and understand it. It is better from an accessibility perspective. Better for SEO.
214 |
215 | - [Separation: The Web Designer’s Dilemma](https://alistapart.com/article/separationdilemma/)
216 | - [Developing With Web Standards – Recommendations and best practices](https://www.456bereastreet.com/lab/developing_with_web_standards/structure/)
217 | - [Separation of content and presentation](https://en.wikipedia.org/wiki/Separation_of_content_and_presentation)
218 | - [G140: Separating information and structure from presentation to enable different presentations](https://www.w3.org/TR/WCAG20-TECHS/G140.html#:~:text=While%20presentational%20features%20visually%20imply,%2C%20paragraphs%2C%20lists%2C%20etc.&text=Providing%20separate%20structure%2C%20functionality%2C%20and,determined%20via%20the%20structure%20layer.)
219 |
220 | ### Avoid
221 | ```html
222 |
231 |
232 |
242 | ```
243 |
244 | ### Prefer
245 | ```html
246 |
253 |
254 |
266 | ```
267 |
--------------------------------------------------------------------------------
/README.ru.md:
--------------------------------------------------------------------------------
1 |
6 |
7 | # HTML рекомендации и наилучшие практики
8 |
9 | ## Предпочитайте меньшее количество элементов большему
10 |
11 | Большие блоки HTML сложнее читать, понимать и поддерживать. Кроме того, большой DOM может негативно сказаться на производительности.
12 |
13 | - [Avoid an excessive DOM size](https://web.dev/dom-size/)
14 |
15 | ### Нежелательно
16 | ```html
17 |
29 | ```
30 |
31 | ## Cемантически корректные элементы предпочтительнее элементов общего назначения
32 |
33 | Семантически корректный HTML легче читать, понимать и поддерживать. Это лучше с точки зрения доступности, например для программ чтения с экрана. Не говоря уже о роботах и парсерах всевозможных мастей, включая поисковых ботов.
34 |
35 | - [The practical value of semantic HTML](https://www.brucelawson.co.uk/2018/the-practical-value-of-semantic-html/)
36 | - [HTML: A good basis for accessibility](https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML)
37 | - [Understanding why Semantic HTML is important, as told by TypeScript.](https://medium.com/@mandy.michael/understanding-why-semantic-html-is-important-as-told-by-typescript-bd71ad41e6c4)
38 | - [The SEO Advantages of Machine-Readable HTML5 Semantic Markup](https://searchengineland.com/seo-advantages-of-machine-readable-html5-semantic-markup-314455)
39 | - [Semantics in HTML 5](https://alistapart.com/article/semanticsinhtml5/)
40 |
41 | ### Нежелательно
42 | ```html
43 | 20 минут назад.
44 | ```
45 |
46 | ### Предпочтительно
47 | ```html
48 |
49 | ```
50 |
51 | ## Прогрессивное улучшение и упрощение предпочтительнее, чем сложное или костыльное решение
52 |
53 | Таким образом у нас будет максимально надежное решение, в то время как пользователь получит максимум от использования программного продукта.
54 |
55 | - [Progressive Enhancement: What It Is, And How To Use It?](https://www.smashingmagazine.com/2009/04/progressive-enhancement-what-it-is-and-how-to-use-it/)
56 | - [Do websites need to look exactly the same in every browser?](http://dowebsitesneedtolookexactlythesameineverybrowser.com/)
57 |
58 | ### Нежелательно
59 | ```html
60 |
Из сорока двух осужденных повстанцев, привезенных одновременно с Бладом на «Ямайском купце», двадцать пять купил Бишоп. Остальные были проданы другим плантаторам — в Спейгстаун и еще дальше на север. Какова была их судьба, Блад не знал; с рабами же Бишопа он общался все время и видел ужасные их страдания.
Из сорока двух осужденных повстанцев, привезенных одновременно с Бладом на «Ямайском купце», двадцать пять купил Бишоп. Остальные были проданы другим плантаторам — в Спейгстаун и еще дальше на север. Какова была их судьба, Блад не знал; с рабами же Бишопа он общался все время и видел ужасные их страдания.
94 |
106 | ```
107 |
108 | ## Предпочитайте нативное кастомному
109 |
110 | Практически невозможно создать UX лучше, чем тот, который обеспечивают разработчики браузеров. У вас нет их ресурсов, ни временных, ни человеческих. Нет возможности найти все подводные камни, связанные с решением конкретной проблемы. Не говоря уже о том, что нативные элементы обычно обладают значительно лучшей производительностью.
111 |
112 | 1. Создание кастомного решения требует значительно больше времени, чем использование нативного.
113 | 2. Кастомное решение нельзя так же глубоко интегрировать с системой, как нативное.
114 | 3. Мы не контролируем сторонние зависимости.
115 | 4. Сторонние решения часто негативно сказываются на размере бандла.
116 | 5. Нельзя предсказать, где возникнут проблемы в стороннем решении, насколько оно доступно, что с локализацией и интернационализацией.
117 | 6. Нативным элементам не нужна загрузка JS-бандлов. А это значит, что их можно использовать, как только загружен HTML.
118 | 7. Производительность нативных элементов обычно значительно лучше, чем у кастомных.
119 | 8. Новые возможности появляются с обновлением браузера.
120 | 9. Разработчикам значительно легче работать с нативным решением, чем с кастомным. Нативное решение стандартизовано, а также хорошо и широко известно.
121 |
122 | - [Do I need a custom select?](https://doineedacustomselect.com/)
123 | - [Under the spotlight: Select](https://modulz.app/blog/under-the-spotlight-select)
124 |
125 | ### Нежелательно
126 | ```html
127 |
128 |
Алчность
129 |
130 | Каузак равнодушным и циничным взглядом окинул корчившееся в судорогах тело своего вожака. Возможно, дело кончилось бы совсем не так, будь Левасер человеком другого склада. Но тогда, очевидно, и капитан Блад применил бы к нему другую тактику. Сейчас же люди Левасера не питали к нему ни любви, ни жалости. Единственным их побуждением была алчность. Блад искусно сыграл на этой черте их характера, обвинив капитана «Ла Фудр» в самом тяжком преступлении — в присвоении того, что могло быть обращено в золото и поделено между ними.
131 |
132 |
133 |
141 |
161 | ```
162 |
163 | ### Предпочтительно
164 | ```html
165 |
166 | Алчность
167 | Каузак равнодушным и циничным взглядом окинул корчившееся в судорогах тело своего вожака. Возможно, дело кончилось бы совсем не так, будь Левасер человеком другого склада. Но тогда, очевидно, и капитан Блад применил бы к нему другую тактику. Сейчас же люди Левасера не питали к нему ни любви, ни жалости. Единственным их побуждением была алчность. Блад искусно сыграл на этой черте их характера, обвинив капитана «Ла Фудр» в самом тяжком преступлении — в присвоении того, что могло быть обращено в золото и поделено между ними.
168 |
169 | ```
170 |
171 | ## Валидный код предпочтительнее невалидного
172 |
173 | Даже если в вашем браузере всё выглядит хорошо, в браузере пользователя страница может выглядеть сломанной, так как коррекция ошибок работает по-разному в разных браузерах. Кроме того, это может сбить с толку разработчиков, которые будут поддерживать этот код. Потенциально валидный HTML может быть лучше с точки зрения поисковой оптимизации и доступности.
174 |
175 | - [Why Validate?](https://validator.w3.org/docs/why.html)
176 | - [6 Reasons Why Google Says Valid HTML Matters](https://www.searchenginejournal.com/google-valid-html/)
177 |
178 | ### Нежелательно
179 | ```html
180 |
181 |
Словарь
182 |
183 |
Секстант
184 |
Навигационный измерительный инструмент, используемый для определения высоты Солнца и других космических объектов над горизонтом
185 |
186 |
Ванты
187 |
Снасти стоячего такелажа, которыми укрепляются мачты, стеньги и брам-стеньги с бортов судна
Навигационный измерительный инструмент, используемый для определения высоты Солнца и других космических объектов над горизонтом
201 |
202 |
Ванты
203 |
Снасти стоячего такелажа, которыми укрепляются мачты, стеньги и брам-стеньги с бортов судна
204 |
205 |
Стаксель
206 |
Треугольный парус
207 |
208 | ```
209 |
210 | ## Предпочтительно разделять структуру и представление
211 |
212 | Легче поддерживать код, в котором структура и представление разделены. Его проще читать и понимать. Это лучше с точки зрения доступности. Лучше с точки зрения поисковой оптимизации.
213 |
214 | - [Separation: The Web Designer’s Dilemma](https://alistapart.com/article/separationdilemma/)
215 | - [Developing With Web Standards – Recommendations and best practices](https://www.456bereastreet.com/lab/developing_with_web_standards/structure/)
216 | - [Separation of content and presentation](https://en.wikipedia.org/wiki/Separation_of_content_and_presentation)
217 | - [G140: Separating information and structure from presentation to enable different presentations](https://www.w3.org/TR/WCAG20-TECHS/G140.html#:~:text=While%20presentational%20features%20visually%20imply,%2C%20paragraphs%2C%20lists%2C%20etc.&text=Providing%20separate%20structure%2C%20functionality%2C%20and,determined%20via%20the%20structure%20layer.)
218 |
219 | ### Нежелательно
220 | ```html
221 |
230 |
231 |
241 | ```
242 |
243 | ### Предпочтительно
244 | ```html
245 |
252 |
253 |
265 | ```
266 |
--------------------------------------------------------------------------------
/README.ua.md:
--------------------------------------------------------------------------------
1 |
6 |
7 | # HTML рекомендації та найкращі практики
8 |
9 | ## Надавайте перевагу меншій кількості елементів над більшою
10 |
11 | Великі блоки HTML складніше читати, розуміти та підтримувати. Окрім цього, великий DOM може негативно впливати на продуктивність.
12 |
13 | - [Avoid an excessive DOM size](https://web.dev/dom-size/)
14 |
15 | ### Уникайте
16 |
17 | ```html
18 |
19 |
20 |
Ані муки, ні кайдани — Дух зломить не зможуть твій.
Ані муки, ні кайдани — Дух зломить не зможуть твій.
30 |
31 | ```
32 |
33 | ## Надавайте перевагу елементам, що мають відповідне семантичне значення над елементами загального призначення
34 |
35 | Семантично коректний HTML легше читати, розуміти та підтримувати. Це краще з точки зору доступності, нариклад для програм читання з екрану. Не кажучи вже про роботів та всіляких парсерів, включаючи пошукових ботів.
36 |
37 | - [The practical value of semantic HTML](https://www.brucelawson.co.uk/2018/the-practical-value-of-semantic-html/)
38 | - [HTML: A good basis for accessibility](https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML)
39 | - [Understanding why Semantic HTML is important, as told by TypeScript.](https://medium.com/@mandy.michael/understanding-why-semantic-html-is-important-as-told-by-typescript-bd71ad41e6c4)
40 | - [The SEO Advantages of Machine-Readable HTML5 Semantic Markup](https://searchengineland.com/seo-advantages-of-machine-readable-html5-semantic-markup-314455)
41 | - [Semantics in HTML 5](https://alistapart.com/article/semanticsinhtml5/)
42 |
43 | ### Уникайте
44 | ```html
45 | 20 хвилин тому.
46 | ```
47 |
48 | ### Надавайте перевагу
49 | ```html
50 |
51 | ```
52 |
53 | ## Надавайте перевагу прогресивному покращенню і спрощенню над складними та костурбатими рішеннями
54 |
55 | Таким чином ми матимемо надійне рішення, а користувач водночас отримає максимум, який дозволяє його платформа, від програмного продукту.
56 |
57 | - [Progressive Enhancement: What It Is, And How To Use It?](https://www.smashingmagazine.com/2009/04/progressive-enhancement-what-it-is-and-how-to-use-it/)
58 | - [Do websites need to look exactly the same in every browser?](http://dowebsitesneedtolookexactlythesameineverybrowser.com/)
59 |
60 | ### Уникайте
61 | ```html
62 |
Коли замовкли стріли пістолів і одспівали весілля, а жінка пригнала до загороди вівці й корови, Іван був задоволений навіть. Його Палагна була з багацького роду, фудульна, здорова дівка, з грубим носом й воластою шиєю. Правда, вона любила пишне лудіння, і немало десь піде грошей на шовкові хустки та дорогі згарди, але то байка! Поглядаючи на овечки, що блеяли в загородах, на свій писаний ботей (стадо), на корови, що дзвонили та рули по випасах в лісі,— він не журився.
Коли замовкли стріли пістолів і одспівали весілля, а жінка пригнала до загороди вівці й корови, Іван був задоволений навіть. Його Палагна була з багацького роду, фудульна, здорова дівка, з грубим носом й воластою шиєю. Правда, вона любила пишне лудіння, і немало десь піде грошей на шовкові хустки та дорогі згарди, але то байка! Поглядаючи на овечки, що блеяли в загородах, на свій писаний ботей, на корови, що дзвонили та рули по випасах в лісі,— він не журився.
96 |
108 | ```
109 |
110 | ## Надавайте перевагу нативному над кастомним
111 |
112 | Майже неможливо зробити UX кращим за той, який забезпечують розробники браузерів. Ми не маємо їх ресурсів: ні часу, ні людей. Неможливо знайти всі підводні камені, пов'язані з вирішенням конкретної проблеми. Не кажучи вже про те, що нативні елементи зазвичай значно продуктивніші.
113 |
114 | 1. Створення кастомного рішення потребує значно більше часу, ніж використання нативного.
115 | 2. Кастомне рішення неможливо так само глибоко інтегрувати із системою, як нативне.
116 | 3. Ми не контролюємо зовнішні залежності.
117 | 4. Зовнішні рішення часто-густо погано впливають на розмір бандла.
118 | 5. Неможливо передбачити, де виникнуть проблеми в зовнішньому рішенні, чи воно доступне, що з локалізацією та інтернаціоналізацією.
119 | 6. Нативним елементам не потрібне завантаження JS-бандлів. Отже, вони готові до використання одразу як завантажиться HTML.
120 | 7. Продуктивність нативних елементів зазвичай значно краща, ніж кастомних.
121 | 8. Нові можливості та виправлені помилки користувач отримує з оновленням браузеру.
122 | 9. Розробникам легше працювати з нативним рішенням, ніж з кастомним. Бо воно стандартизоване і поширене.
123 |
124 | - [Do I need a custom select?](https://doineedacustomselect.com/)
125 | - [Under the spotlight: Select](https://modulz.app/blog/under-the-spotlight-select)
126 |
127 | ### Уникайте
128 | ```html
129 |
130 |
Cокира
131 |
132 | Вони обоє знали, що то бродить по лісі невидима сокира, гупа об дерева і хека з втомлених грудей. Ляк проганяв їх звідти в долину, де потік плив спокійніше. Вони робили собі курбало у потоці, глибоке місце, і, роздягтись, бовтались в нім, як двоє лісних звірят, що не знають, що таке сором. Сонце спочивало на їх яснім волоссі і било в очі, а льодова вода потоку щипала тіло.
133 |
134 |
135 |
143 |
163 | ```
164 |
165 | ### Надавайте перевагу
166 | ```html
167 |
168 | Cокира
169 | Вони обоє знали, що то бродить по лісі невидима сокира, гупа об дерева і хека з втомлених грудей. Ляк проганяв їх звідти в долину, де потік плив спокійніше. Вони робили собі курбало у потоці, глибоке місце, і, роздягтись, бовтались в нім, як двоє лісних звірят, що не знають, що таке сором. Сонце спочивало на їх яснім волоссі і било в очі, а льодова вода потоку щипала тіло.
170 |
171 | ```
172 |
173 | ## Надавайте перевагу валідному коду
174 |
175 | Навіть якщо у вашому браузері все виглядає добре, у браузері користувача сторінка може виглядати зламаною, бо корекція помилок працює по-різному в різних браузерах. Окрім цього, це може збити з пантелику розробників, котрі будуть супроводжувати ваш код. Потенційно валідний HTML може бути корисним з точки зору пошукової оптимізації та доступності.
176 |
177 | - [Why Validate?](https://validator.w3.org/docs/why.html)
178 | - [6 Reasons Why Google Says Valid HTML Matters](https://www.searchenginejournal.com/google-valid-html/)
179 |
180 | ### Уникайте
181 | ```html
182 |
183 |
Словник
184 |
185 |
Котюга
186 |
Пес
187 |
188 |
Дроб'єта
189 |
Вівці і кози, дрібна худоба
190 |
191 |
Помана
192 |
Посмертний дарунок, спадщина худобою. Це від слів «поминати, згадувати»
Посмертний дарунок, спадщина худобою. Це від слів «поминати, згадувати»
209 |
210 | ```
211 |
212 | ## Надавайте перевагу презентації, відокремленій від структури
213 |
214 | Легше розуміти та підтримувати код, у якому структура та презентація відокремлені. Це краще для доступності. Добре з точки зору пошукової оптимізації.
215 |
216 | - [Separation: The Web Designer’s Dilemma](https://alistapart.com/article/separationdilemma/)
217 | - [Developing With Web Standards – Recommendations and best practices](https://www.456bereastreet.com/lab/developing_with_web_standards/structure/)
218 | - [Separation of content and presentation](https://en.wikipedia.org/wiki/Separation_of_content_and_presentation)
219 | - [G140: Separating information and structure from presentation to enable different presentations](https://www.w3.org/TR/WCAG20-TECHS/G140.html#:~:text=While%20presentational%20features%20visually%20imply,%2C%20paragraphs%2C%20lists%2C%20etc.&text=Providing%20separate%20structure%2C%20functionality%2C%20and,determined%20via%20the%20structure%20layer.)
220 |
221 | ### Уникайте
222 | ```html
223 |
232 |
233 |
243 | ```
244 |
245 | ### Надавайте перевагу
246 | ```html
247 |
254 |
255 |
267 | ```
268 |
--------------------------------------------------------------------------------