рдЗрди, рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ, рд╕рднреА рд╕рдордп рдкрд░ рджрд┐рд╢рд╛-рдирд┐рд░реНрджреЗрд╢реЛрдВ рдкрд░ рд╕рд╣рдордд рд╣реБрдПред рдЫреЛрдЯреЗ рдпрд╛ рдмрдбрд╝реЗ, рдмрд╛рд╣рд░ рдХреЙрд▓ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИред рдЬреЛрдбрд╝ рдпрд╛ рдЗрд╕ рд╕рдВрд╣рд┐рддрд╛ рдЧрд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ GitHub рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ.
рдХреЛрдб рдХреА рд╣рд░ рдкрдВрдХреНрддрд┐ рдПрдХ рд╣реА рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЛрдИ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХред
</li>
or </body>
).<!DOCTYPE html>
<html>
<head>
<title>Page title</title>
</head>
<body>
<img src="images/company-logo.png" alt="Company">
<h1 class="hello-world">Hello, world!</h1>
</body>
</html>
рд╣рд░ HTML рдкреГрд╖реНрда рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕ рд╕рд░рд▓ doctype рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдорд╛рдирдХреЛрдВ рдореЛрдб рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рдкреНрд░рддрд┐рдкрд╛рджрди рд▓рд╛рдЧреВред
<!DOCTYPE html>
<html>
<head>
</head>
</html>
рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдХрд▓реНрдкрдирд╛ рд╕реЗ:
рд▓реЗрдЦрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рднрд╛рд╖рд╛ рджреЗрдиреЗ рдЬрдбрд╝ HTML рддрддреНрд╡ рдкрд░ рдПрдХ рд▓реИрдВрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЙрдЪреНрдЪрд╛рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд╡рд╛рдж рдЙрдкрдХрд░рдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдирд┐рдпрдореЛрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЖрдЧреЗ рдХреЗ рднрд╛рд╖рдг рд╕рдВрд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдг рдПрдбреНрд╕ред
рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ lang
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд▓реНрдкрдирд╛ рдореЗрдВ.
рдПрдХ рдХреЗ рд▓рд┐рдП Sitepoint рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░ рднрд╛рд╖рд╛ рдХреЛрдб рдХреА рд╕реВрдЪреА.
<html lang="en-us">
<!-- ... -->
</html>
рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рдорд░реНрдерди <meta>
IE рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпрд╛ рдкреГрд╖реНрда рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреИрдЧред рдЬрдм рддрдХ рд╣рд╛рд▓рд╛рдд рдЕрдиреНрдпрдерд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рдирд╡реАрдирддрдо рд╕рдорд░реНрдерд┐рдд рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП IE рд╣рд┐рджрд╛рдпрдд рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдПрдЬ рдореЛрдб.
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЗрд╕ рднрдпрд╛рдирдХ рдкреЛрдЯ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд▓реЗрдЦ рдкрдврд╝рд╛ (рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓).
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡рд░реНрдг рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рдореБрдЪрд┐рдд рдкреНрд░рддрд┐рдкрд╛рджрдиред рдЬрдм рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ, рдЖрдк рдЕрдкрдиреЗ HTML рдореЗрдВ рдЪрд░рд┐рддреНрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╢рд░реНрддреЗ рдЙрдирдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (рдЖрдо рддреМрд░ рдкрд░ UTF-8) рдХреА рд╣реИ рдХрд┐ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
<head>
<meta charset="UTF-8">
</head>
рдкреНрд░рддрд┐ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдХрд▓реНрдкрдирд╛, рдЖрдо рддреМрд░ рдкрд░ рд╡рд╣рд╛рдБ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ type
рдЬрдм рд╕рд╣рд┐рдд рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ text/css
рдФрд░ text/javascript
рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЪреВрдХ рд░рд╣реЗ рд╣реИрдВред
<!-- External CSS -->
<link rel="stylesheet" href="code-guide.css">
<!-- In-document CSS -->
<style>
/* ... */
</style>
<!-- JavaScript -->
<script src="code-guide.js"></script>
рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХрддрд╛ рдХреА рдХреАрдордд рдкрд░ рдПрдЪрдЯреАрдПрдордПрд▓ рдорд╛рдирдХреЛрдВ рдФрд░ рд╢рдмреНрджреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд╣реАрдВред рд╕рдмрд╕реЗ рдХрдо рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдорд╛рд░реНрдХрдЕрдк рдХреЗ рдХрдо рд╕реЗ рдХрдо рд░рд╛рд╢рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реИред
рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЛрдб рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдХреНрд░рдо рдореЗрдВ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред
class
id
, name
data-*
src
, for
, type
, href
, value
title
, alt
role
, aria-*
рд╢реИрдХреНрд╖рдгрд┐рдХ рдорд╣рд╛рди рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рд╣реИ, рддреЛ рд╡реЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрддреЗ рд╣реИрдВред рдЖрдИрдбреА рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ (рдЗрди-рдкреЗрдЬ рдмреБрдХрдорд╛рд░реНрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЬреИрд╕реЗ,) рд╕рдВрдпрдо рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рд╡реЗ рджреВрд╕рд░реА рдЖрддреЗ рд╣реИрдВред
<a class="..." id="..." data-toggle="modal" href="#">
Example link
</a>
<input class="form-control" type="text">
<img src="..." alt="...">
рдПрдХ рдмреВрд▓рд┐рдпрди рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдШреЛрд╖рд┐рдд рдореВрд▓реНрдп рдХреА рдЬрд░реВрд░рдд рд╣реИред рдПрдХреНрд╕рдПрдЪрдЯреАрдПрдордПрд▓ рдЖрдк рдПрдХ рдореВрд▓реНрдп рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдРрд╕реА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд╛рдорд░реНрд╢ рдмреВрд▓рд┐рдпрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ WHATWG рдЕрдиреБрднрд╛рдЧ:
рдПрдХ рддрддреНрд╡ рдкрд░ рдПрдХ рдмреВрд▓рд┐рдпрди рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕рд╣реА рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЕрднрд╛рд╡ рдЭреВрдареА рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рдЖрдк рддреЛ рдЪрд╛рд╣рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдЖрдк рдХреЛ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕ WHATWG рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:
рдЕрдЧрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореМрдЬреВрдж рд╣реИ, рдЗрд╕рдХреА рдХреАрдордд рдпрд╛ рддреЛ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ [...] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╡рд┐рд╣рд┐рдд рдирд╛рдо, рдХреЛрдИ рдЖрдЧреЗ рдпрд╛ рдкреАрдЫреЗ рдХреЛрдИ рдЦрд╛рд▓реА рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдПрдХ рдореВрд▓реНрдп рдЬреЛрдбрд╝ рдирд╣реАрдВ рд╣реИред
<input type="text" disabled>
<input type="checkbox" value="1" checked>
<select>
<option value="1" selected>1</option>
</select>
рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ, рдЬрдм HTML рд▓реЗрдЦрди рдЬрд╝рд░реВрд░рдд рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдорд╛рддрд╛ рдкрд┐рддрд╛ рддрддреНрд╡реЛрдВ рд╕реЗ рдмрдЪреЗрдВред рдХрдИ рдмрд╛рд░ рдЗрд╕ рдпрд╛рддреНрд░рд╛ рдФрд░ рдкреБрдирд░реНрд░рдЪрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рдПрдЪрдЯреАрдПрдордПрд▓ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ:
<!-- Not so great -->
<span class="avatar">
<img src="...">
</span>
<!-- Better -->
<img class="avatar" src="...">
рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд╛рд░реНрдХрдЕрдк рд▓реЗрдЦрди рд╕рд╛рдордЧреНрд░реА рдХрдард┐рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рд╣реИ, рдФрд░ рдХрдо performant рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реИред
:
рдкреНрд░рддреНрдпреЗрдХ рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдПредbox-shadow
).rgb()
, rgba()
, hsl()
, hsla()
, рдпрд╛ rect()
рдореВрд▓реНрдпреЛрдВредрдпрд╣ рдХрдИ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдпреЛрдВ (рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рд╕рд╛рде рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо) рд╕реЗ рдХрдИ рд░рдВрдЧ рдореВрд▓реНрдпреЛрдВ (рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо, рдХреЛрдИ рд╕реНрдкреЗрд╕) рдХреЗ рдЕрдВрддрд░ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред.5
рдХреЗ рдмрдЬрд╛рдп 0.5
рдФрд░ -.5px
рдХреЗ рдмрдЬрд╛рдп -0.5px
).#fff
. рдЫреЛрдЯреЗ рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рд╣реИ рдЬрдм рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реНрдХреИрдирд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗ рдЕрдзрд┐рдХ рдЕрджреНрд╡рд┐рддреАрдп рдЖрдХрд╛рд░ рдХреЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВред#fff
рдмрдЬрд╛рдп #ffffff
.input[type="text"]
. рд╡реЗ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░рд╣реЗ рд╣реИрдВ , рдФрд░ рдпрд╣ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИредmargin: 0;
рдмрдЬрд╛рдп margin: 0px;
.рд╢рд░реНрддреЛрдВ рдкрд░ рд╕рд╡рд╛рд▓ рдпрд╣рд╛рдБ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ? рджреЗрдЦреЗрдВ рд╡реНрдпрд╛рдкрдХ рд╕реНрдЯрд╛рдЗрд▓ рд╢реАрдЯ рд▓реЗрдЦ рдХреЗ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЕрдиреБрднрд╛рдЧ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ред
/* Bad CSS */
.selector, .selector-secondary, .selector[type=text] {
padding:15px;
margin:0px 0px 15px;
background-color:rgba(0, 0, 0, 0.5);
box-shadow:0px 1px 2px #CCC,inset 0 1px 0 #FFFFFF
}
/* Good CSS */
.selector,
.selector-secondary,
.selector[type="text"] {
padding: 15px;
margin-bottom: 15px;
background-color: rgba(0,0,0,.5);
box-shadow: 0 1px 2px #ccc, inset 0 1px 0 #fff;
}
рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рдЖрджреЗрд╢ рдХреЗ рдмрд╛рдж рдПрдХ рд╕рд╛рде рдмрд╛рдВрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдмреЙрдХреНрд╕ рдореЙрдбрд▓ рд╕рдВрдмрдВрдзрд┐рдд рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╡рд╛рд╣ рд╕реЗ рдПрдХ рддрддреНрд╡ рдХреЛ рджреВрд░ рдХрд░ рд╕рдХрддреЗ рдкреЛрдЬрд┐рд╢рдирд┐рдВрдЧ рдкрд╣рд▓реЗ рдЖрддрд╛ рд╣реИред рдмреЙрдХреНрд╕ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рдПрдХ рдШрдЯрдХ рдХреЗ рдЖрдпрд╛рдо рдФрд░ рд╕реНрдерд╛рди рддрдп рдХрд░ рдЕрдЧрд▓реЗ рдЖрддрд╛ рд╣реИред
рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИ рдЕрдВрджрд░ рдШрдЯрдХ рдпрд╛ рдкрд┐рдЫрд▓реЗ рджреЛ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛, рдФрд░ рдЗрд╕ рддрд░рд╣ рд╡реЗ рдкрд┐рдЫрд▓реЗ рдЖрддреЗ рд╣реИрдВред
рдЧреБрдг рдФрд░ рдЙрдирдХреЗ рдЖрджреЗрд╢ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рджреЗрдЦреЗрдВ рдЕрд╡рдХрд╛рд╢.
.declaration-order {
/* Positioning */
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 100;
/* Box-model */
display: block;
float: right;
width: 100px;
height: 100px;
/* Typography */
font: normal 13px "Helvetica Neue", sans-serif;
line-height: 1.5;
color: #333;
text-align: center;
/* Visual */
background-color: #f5f5f5;
border: 1px solid #e5e5e5;
border-radius: 3px;
/* Misc */
opacity: 1;
}
@import
рдХрд╛ рдкреНрд░рдпреЛрдЧ рди рдХрд░реЗрдВ<link>
рдХреА рддреБрд▓рдирд╛ рдореЗрдВ @import
рдзреАрдореА рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд рдкреГрд╖реНрда рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдмрдЪреЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдЪреБрдирддреЗ рд╣реИрдВ:
<link>
рддрддреНрд╡реЛрдВрдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреАрд╡ рд╕реЛрдЙрджреЗрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкреЭреЗрдВ!.
<!-- Use link elements -->
<link rel="stylesheet" href="core.css">
<!-- Avoid @imports -->
<style>
@import url("more.css");
</style>
рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд┐рдпрдо рдХреЗ рдкрд╛рд╕ рдЬрдЧрд╣ рдореАрдбрд┐рдпрд╛ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдЬрдм рднреА рд╕рдВрднрд╡ рд╕реЗрдЯред рдЙрди рд╕рдм рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╢реИрд▓реА рдкрддреНрд░рдХ рдореЗрдВ рдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдВрдд рдореЗрдВ рдмрдВрдбрд▓ рдордд рдХрд░реЛред рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рд╣реА рдпрд╣ рдЖрд╕рд╛рди рд▓реЛрдЧ рдЙрдиреНрд╣реЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдареЗрда рд╕реЗрдЯрдЕрдк рд╣реИред
.element { ... }
.element-avatar { ... }
.element-selected { ... }
@media (min-width: 480px) {
.element { ...}
.element-avatar { ... }
.element-selected { ... }
}
рд╡рд┐рдХреНрд░реЗрддрд╛ рдЙрдкрд╕рд░реНрдЧ рдЧреБрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░, рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдЗрдВрдбреЗрдВрдЯ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдореВрд▓реНрдп рд▓рд╛рдЗрдиреЗрдВ рдЦрдбрд╝реА рдЖрд╕рд╛рди рдмрд╣реБ рд▓рд╛рдЗрди рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдПред
Textmate рдореЗрдВ рдЙрдкрдпреЛрдЧ Text тЖТ рдХреЗ рдЪрдпрди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ тЖТ рд╕рдВрдкрд╛рджрд┐рдд рдкрд╛рда (тМГтМШA). Sublime Text 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрдпрди тЖТ рдкрд┐рдЫрд▓рд╛ рд▓рд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ (тМГтЗзтЖС) рдФрд░ рдЪрдпрди тЖТ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ (тМГтЗзтЖУ).
/* Prefixed properties */
.selector {
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15);
box-shadow: 0 1px 2px rgba(0,0,0,.15);
}
рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рдирд┐рдпрдо рд╕реЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдШреЛрд╖рдгрд╛ , рдкрдардиреАрдпрддрд╛ рдФрд░ рддреЗрдЬреА рд╕реЗ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рдЯреВрдЯ рд╣рдЯрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХрд┐рд╕реА рднреА рдирд┐рдпрдо рдХрдИ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдЕрд▓рдЧ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдЬреИрд╕реЗ, рдПрдХ рд╕реАрдПрд╕рдПрд╕ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдмрддрд╛рддреЗ рд╣реБрдП рдЖрдк рдПрдХ рд╣реА рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди 183 рдкрд░ рдПрдХ рд╕рд┐рдВрдЯреЗрдХреНрд╕ рддреНрд░реБрдЯрд┐ рд╣реИ, рд╡рд╣рд╛рдБ рдпрд╣ рдпрд╛рдж рдЖ рд░рд╣реА рдХреЛрдИ рд╣реИред рдХрдИ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдЕрд▓рдЧ рд▓рд╛рдЗрдиреЛрдВ рдЕрдкрдиреЗ рд╡рд┐рд╡реЗрдХ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрд░реВрд░реА рд╣реИред
/* Single declarations on one line */
.span1 { width: 60px; }
.span2 { width: 140px; }
.span3 { width: 220px; }
/* Multiple declarations, one per line */
.sprite {
display: inline-block;
width: 16px;
height: 15px;
background-image: url(../img/sprite.png);
}
.icon { background-position: 0 0; }
.icon-home { background-position: 0 -20px; }
.icon-account { background-position: 0 -40px; }
рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд╕рднреА рдЙрдкрд▓рдмреНрдз рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЖрд╢реБрд▓рд┐рдкрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЖрдо overused рдЖрд╢реБрд▓рд┐рдкрд┐ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
padding
margin
font
background
border
border-radius
рдЕрдХреНрд╕рд░ рдХрдИ рдмрд╛рд░ рд╣рдо рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдХ рдЖрд╢реБрд▓рд┐рдкрд┐ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдЪрдЯреАрдПрдордПрд▓ рд╢реАрд░реНрд╖рдХреЛрдВ рдХреЗрд╡рд▓ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдорд╛рд░реНрдЬрд┐рди рд╕реЗрдЯ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдХреЗрд╡рд▓ рдЙрди рджреЛ рдореВрд▓реНрдпреЛрдВ рдХреЛ рднреА рдкрд╛рд░ред рдЖрд╢реБрд▓рд┐рдкрд┐ рдЧреБрдг рдХрд╛ рдЬреНрдпрд╛рджрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЕрдХреНрд╕рд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдУрд╡рд░рд░рд╛рдЗрдб рдФрд░ рдЕрдирд╛рдпрд╛рд╕ рд╣реА рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде sloppier рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред
рдореЛрдЬрд╝рд┐рд▓рд╛ рдбреЗрд╡рд▓рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓реЗрдЦ рд╣реИ рдЖрд╢реБрд▓рд┐рдкрд┐ рдЧреБрдг рд╕рдВрдХреЗрддрди рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдЕрдкрд░рд┐рдЪрд┐рдд рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред
/* Bad example */
.element {
margin: 0 0 10px;
background: red;
background: url("image.jpg");
border-radius: 3px 3px 0 0;
}
/* Good example */
.element {
margin-bottom: 10px;
background-color: red;
background-image: url("image.jpg");
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
рдЕрдирд╛рд╡рд╢реНрдпрдХ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рд╕реЗ рдмрдЪреЗрдВред рдмрд╕ рдЖрдк рдиреЗрд╕реНрдЯ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХреЗрд╡рд▓ рдпрджрд┐ рдЖрдк рдПрдХ рдорд╛рддрд╛ рдкрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдХрдИ рддрддреНрд╡реЛрдВ рдиреЗрд╕реНрдЯ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╢реИрд▓рд┐рдпреЛрдВ рдЪрд╛рд╣рд┐рдПред
рдЕрддрд┐рд░рд┐рдХреНрдд рдкрдврд╝рдирд╛:
// Without nesting
.table > thead > tr > th { тАж }
.table > thead > tr > td { тАж }
// With nesting
.table > thead > tr {
> th { тАж }
> td { тАж }
}
рд╕реБрдзрд╛рд░ рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рдореВрд▓реНрдпреЛрдВ, рдЪрд░, рдФрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рднреА рдЬрдЧрд╣ рдХреЗ рд╕рд╛рде рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рд╕рднреА рдЧрдгрд┐рдд рд╕рдВрдЪрд╛рд▓рди рд▓рдкреЗрдЯреЛред
// Bad example
.element {
margin: 10px 0 @variable*2 10px;
}
// Good example
.element {
margin: 10px 0 (@variable * 2) 10px;
}
рдХреЛрдб рд▓рд┐рдЦрд╛ рдФрд░ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рд░рдЦрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рд╡рд░реНрдгрдирд╛рддреНрдордХ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЯрд┐рдкреНрдкрдгреА рдХреА, рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╣реБрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдорд╣рд╛рди рдХреЛрдб рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдпрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╡реНрдпрдХреНрдд рдХрд░рддреЗ рд╣реИрдВред рдмрд╕ рдПрдХ рдШрдЯрдХ рдпрд╛ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдирд╣реАрдВ рд╣реИред
рдмрдбрд╝рд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдиреЛрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рд╡рд╛рдХреНрдп рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред
/* Bad example */
/* Modal header */
.modal-header {
...
}
/* Good example */
/* Wrapping element for .modal-title and .modal-close */
.modal-header {
...
}
.btn
рдФрд░ .btn-danger
)..btn
рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ button, рд▓реЗрдХрд┐рди .s
рдХреБрдЫ рднреА рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред.js-*
рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ (рдХреЗ рд░реВрдк рдореЗрдВ рд╢реИрд▓реА рдХреЗ рдЦрд┐рд▓рд╛рдл) рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдПрдВ, рд▓реЗрдХрд┐рди рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЕрдкрдиреЗ рд╕реАрдПрд╕рдПрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПредрдпрд╣ рднреА SASS рдФрд░ LESS рдЪрд░ рдирд╛рдо рдмрдирд╛рддреЗ рд╕рдордп рд╣реА рдЗрди рдирд┐рдпрдореЛрдВ рдХреЗ рдХрдИ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
/* Bad example */
.t { ... }
.red { ... }
.header { ... }
/* Good example */
.tweet { ... }
.important { ... }
.tweet-header { ... }
[class^="..."]
) рдЖрдорддреМрд░ рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдШрдЯрдХреЛрдВ рдкрд░)ред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреНрд░рджрд░реНрд╢рди рдЗрди рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИредрдЕрддрд┐рд░рд┐рдХреНрдд рдкрдврд╝рдирд╛:
/* Bad example */
span { ... }
.page-container #stream .stream-item .tweet .tweet-header .username { ... }
.avatar { ... }
/* Good example */
.avatar { ... }
.tweet-header .username { ... }
.tweet .avatar { ... }
/*
* Component section heading
*/
.element { ... }
/*
* Component section heading
*
* Sometimes you need to include optional context for the entire component. Do that up here if it's important enough.
*/
.element { ... }
/* Contextual sub-component or modifer */
.element-heading { ... }
рдЖрдо рдХреЛрдб рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдФрд░ рдЧрдВрджрд╛ diffs рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдВрдкрд╛рджрдХ рд╕реЗрдЯ:
рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдФрд░ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЗрди рд╡рд░реАрдпрддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ .editorconfig
рдлрд╝рд╛рдЗрд▓ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЗрдЦреЗрдВ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдореЗрдВ рдПрдХ. рдФрд░ рдЬрд╛рдиреЗрдВ EditorConfig рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ.