Focusnetworks markup code styleguide.
- Disclaimer
- Doctype
lang- Compatibilidade IE
- Encoding
- CSS e JavaScript includes
- Nomenclatura
- Ordem dos atributos
- Atributos booleanos
- Aspas
- Tags de auto fechamento
- Tags de fechcamento opcional
- Inline JavaScript
- Inline CSS
- Semântica
- Espaços em branco
- Templates
x-templateidao invés declass- Links
Esse documento foi inspirado nos guides de Mark Otto's Code Guide, Harry Roberts's coding style e Idiomatic HTML.
- Use HTML5 doctype para assegurar padrões e uma maior consistência em diferentes browsers.
<!doctype html>
<html>
<head></head>
<body></body>
</html>- Você deve especificar o idioma dos documentos. Em nossos projetos utilizamos com maior frequência o
pt-br.
<html lang="pt-br">
</html>Utilizamos a tag <meta> de compatibilidade para especificar ao IE qual versão do browser deve ser renderizada. Por padrão forçamos o Edge Mode.
<meta http-equiv="X-UA-Compatible" content="IE=Edge">- Usamos o
UTF-8como encoding padrão dos documentos HTML.
<head>
<meta charset="utf-8">
</head>- Não há a necessidade de informar o atributo
type.
<!-- CSS -->
<link rel="stylesheet" href="path/to/external.css">
<!-- JavaScript -->
<script src="path/to/script.js"></script>- Sempre utilizamos lowercase nos nomes de tags e atributos.
<!-- Bad -->
<div id="adversitingModal" class="ModalBase dropShadowFX"></div>
<!-- Good -->
<div id="adversiting-modal" class="modal-base drop-shadow-FX"></div>- A ordem dos atributos deve seguir essa regra:
- Elemento
ide/ouname - Nome da classe JavaScript
js-selector - Classes genéricas (clearfix, grid stuff, etc)
- Outras classes
- Estados
- Data attributes
data-* - Outros atributos
- Atributos booleanos
- Elemento
<!-- Bad -->
<div class="clearfix is-opaque js-button button grid-size-2" id="btn" hidden data-fx="fade"></div>
<!-- Good -->
<div id="btn" class="js-button clearfix grid-size-2 button is-opaque" data-fx="fade" hidden></div>- Não adicione valores aos atributos booleanos.
<!-- Bad -->
<input type="checkbox" value="Bar" checked="checked">Foo</input>
<!-- Good -->
<input type="checkbox" value="Bar" checked>Foo</input>
<!-- Bad -->
<input type="submit" disabled="disabled">Send email</input>
<!-- Good -->
<input type="submit" disabled>Send email</input>- Sempre use aspas duplas
"para envolver os atributos.
<!-- Bad -->
<button id=my-button data-fx='fade'>Fade!</button>
<!-- Good -->
<button id="my-button" data-fx="fade">Fade!</button>- Sempre feche as tags de auto fechamento
/, não importa quais sejam.
<!-- Bad -->
<p>Lorem ipsum<br>dolor sit</p>
<!-- Good -->
<p>Lorem ipsum<br />dolor sit</p>
<!-- Bad -->
<img src="path/to/image.png">
<!-- Good -->
<img src="path/to/image.png" />- Sempre feche as tags de fechamento opcional
<!-- Bad -->
<ul>
<li>Once
<li>Upon
<li>A Time
</ul>
<!-- Good -->
<ul>
<li>Once</li>
<li>Upon</li>
<li>A Time</li>
</ul>- Evite escrever Javascript em documentos HTML, eles são difíceis de detectar.
- Evite escrever CSS em documentos HTML, eles são difíceis de detectar.
- Esforce-se para manter os padrões de HTML e semântica, mas não às custas da praticidade. Use a menor quantidade de marcação sempre que possível.
- Use soft tabs definido para 2 espaços e nunca misture espaços com tabs.
- Sempre adicione uma linha em branco ao final do seu documento.
- Quando fechar tags de auto fechamento, sempre adicione um espaço antes de
/>.
<!-- Bad -->
<img src="doge.png"/>
<!-- Good -->
<img src="doge.png" />- Elementos template devem ter o valor de seu
typedefinido comox-template.
<!-- Bad -->
<script type="text-template" id="box-template">
<div class="box"></div>
</script>
<!-- Good -->
<script type="x-template" id="box-template">
<div class="box"></div>
</script>- Elementos template devem ser identificados através de
idao invés declass. Adicionar o sufixotemplatetambém.
<!-- Bad -->
<script type="x-template" class="js-component">
<p>Component</p>
</script>
<!-- Good -->
<script type="x-template" id="component-template">
<p>Component</p>
</script>