HTML style guide
This style guide defines Magento internal requirements for HTML code style for teams that develop Less and CSS code. We recommend that developers who create Magento extensions and customizations also use these standards.
The guide is based on the Google HTML/CSS Style Guide with certain modifications that are described further.
Indentations
Use only spaces for indentation:
- Tab size: 4 spaces
- Indent size: 4 spaces
- Continuation indent: 4 spaces
Recommended
1
2
3
4
<ul>
<li>One</li>
<li>Two</li>
</ul>
End of file
Add a blank line at the end of file.
Self-closing tags
Always close self-closing tags.
Inappropriate
1
2
3
<br>
<img src="image.png" alt="image">
<input type="text" name="username">
Recommended
1
2
3
<br />
<img src="image.png" alt="image" />
<input type="text" name="username" />
Line length
Avoid code lines longer than 120 characters. When using an editor, it is inconvenient to scroll right and left to read the HTML code. Align tag attributes one under another to increase code readability.
Inappropriate
1
<input data-bind="attr: { id: 'cart-item-'+item_id+'-qty', 'data-cart-item': item_id, 'data-item-qty': qty }, value: qty" type="number" size="4" class="item-qty cart-item-qty" maxlength="12"/>
Recommended
1
2
3
4
5
6
7
8
9
<input data-bind="attr: {
id: 'cart-item-'+item_id+'-qty',
'data-cart-item': item_id,
'data-item-qty': qty
}, value: qty"
type="number"
size="4"
class="item-qty cart-item-qty"
maxlength="12"/>
Spaces around equals sign (“=”)
Spaces around equals sign (“=”) are acceptable, but not recommended. The code without spaces is easier to read.
Not recommended
1
<link rel = "stylesheet" href = "styles.css">
Recommended
1
<link rel="stylesheet" href="styles.css">
Spaces and colon in attributes
Use no space before the colon and one space after the colon for the sake of readability.
Not recommended
1
2
<span data-bind="i18n : 'Update'"></span>
<span data-bind="i18n:'Update'"></span>
Recommended
1
<span data-bind="i18n: 'Update'"></span>
Block-level elements
Use appropriate HTML5 elements for blocks. The following diagram shows how to define which HTML5 element to use for a block:
Class names
Use semantic class names and IDs. Avoid presentational class names.
Inappropriate
1
<button type="submit" class="button-green">Submit</button>
Recommended
1
2
<button type="submit" class="action-primary">Submit</button>
Accessibility
All pages should comply with the Web Content Accessibility Guidelines (WCAG) 2.0.
Microdata
All crucial pages (like product page) should contain microdata. Please pay attention to this recommendation when adding new functionality.