ããã«ã¡ã¯HabrïŒ

åœåãç§ã¯èšäºããGOSTÊ»uã«ããHTMLããšåŒã³ããã£ãã®ã§ãããã»ãšãã©ã®ããã°ã©ããŒã¯ãMetroology and Standardizationããšããäž»é¡ãæããããæšæºåãããèªèšŒãããçµ±äžãã«ã€ããŠèª°ããèããŠããŸããã§ããã
i-Freeã§ã¯ãå€ãã®Webã¢ããªã±ãŒã·ã§ã³éçºãè¡ã£ãŠããŸãã ãããŠãããããããããããã®ã§ããããã¯ç°ãªã£ãŠãããç°ãªãæ¡ä»¶ã§åäœããŸãããããããæšæºåã«ã€ããŠããèªèº«ã§èããªããã°ãªããŸããã ãã®ãããªãããžã§ã¯ããBulletproof HTML5ãïŒ
http://html5boilerplate.com/ ïŒããããéçºè
ã¯å®ç§ãªããŒãžãã³ãã¬ãŒããäœæããããšã«ããŸããã ç§ã¯åœŒãæ¬åœã«å¥œãã§ã圌ãšäžç·ã«ãã¹ãŠã®ãããžã§ã¯ããå§ããŸããã ãããããã°ã次ã
ãšä¿®æ£ãããŸããŸãå€ãã®æ°ããã¢ããªã±ãŒã·ã§ã³ãäœæããŠãããã¡ã«ãå€ãã®ãã°ãèŠã€ãããªããšããçµè«ã«éããŸããã ãã®èšäºã§ã¯ãããŒãžãWebã¢ããªã±ãŒã·ã§ã³ã®äœææã«éåžžã¹ãããããããã®ã«ã€ããŠèª¬æãã空çœããŒãžãã³ãã¬ãŒããã¢ããããŒãããæ¹æ³ãšçç±ã瀺ããŸãã
èšèªãã€ã³ã¿ãŒïŒ
<html lang="ru-RU">
ããã¯ãCSSã®ãã€ãã³ãšãã¢ã«ãªã£ãŠããŸãã ãããã£ãŠããã©ãŠã¶ã¯ãã€ãã³ãããæ£ç¢ºã«é
眮ã§ããŸãã
p { -moz-hyphens: auto; -webkit-hyphens: auto; -ms-hyphens: auto; hyphens: auto; }
ã¹ã±ãŒãªã³ã°ããæ©èœãåé€ããŸãã
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, user-scalable=no, maximum-scale=1.0"/>
ããã¯ãããŒãžãããŒããããã®ãåŸ
ã¡ãè§£å床ã2åã«ããã ãã®Badaãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãæèŒããæºåž¯é»è©±ã§ç¹ã«åœ¹ç«ã¡ãŸãããŸãããºãŒã ããªãã«ããŸãã éåžžãã¢ããªã±ãŒã·ã§ã³ã«ã¯ãºãŒã ã¯ãããŸããã
äžèšã®åé¡ã®å¥ã®ã¿ã°ïŒ
<meta name="HandheldFriendly" content="True"/>
ããŒãžãã¢ãã€ã«ããã€ã¹çšã«æé©åãããããŒã¯ã¢ããã䜿çšããããšã瀺ãã€ã³ãžã±ãŒã¿ãŒã èªåã¹ã±ãŒãªã³ã°ãªãã§ããã¥ã¡ã³ãã衚瀺ããããã«èŠæ±ããŸãã
ããã¥ã¡ã³ãã®ãã£ãã·ã¥ãçŠæ¢ããŸãã
<meta http-equiv="Cache-Control" content="no-cache"/>
ããã¯ãäžéšã®ããã€ã¹ã§ããŒãžã埩å
ããããã®äžé©åãªè©Šã¿ãåãé€ãã®ã«åœ¹ç«ã¡ãŸãã ã€ãŸãã詊è¡ã¯é©åã§ããããã¹ãŠã®ããã€ã¹ããã°ãªãã§ããŒãžã埩å
ããããã§ã¯ãããŸããã
Mobile Internet Explorerã䜿çšãããšãClearTypeãã¯ãããžãŒã匷å¶çã«ã¢ã¯ãã£ãã«ããŠããã©ã³ããã¹ã ãŒãºã«ã§ããŸãã
<meta http-equiv="cleartype" content="on"/>
Appleããã€ã¹ã®åçã远å ããããšãå¿ããªãã§ãã ããïŒ
<link rel="apple-touch-startup-image" href="images/startup.png"> <link rel="apple-touch-icon" href="images/touch-icon-iphone.png"/> <link rel="apple-touch-icon" sizes="72x72" href="images/touch-icon-ipad.png"/> <link rel="apple-touch-icon" sizes="114x114" href="images/touch-icon-iphone-retina.png"/> <link rel="apple-touch-icon" sizes="144x144" href="images/touch-icon-ipad-retina.png"/>
ãã®ã¡ã¿ã¿ã°ã¯ãã¢ããªã±ãŒã·ã§ã³ãå
šç»é¢ã¢ãŒãã§éãããã«å¿
èŠã§ãã
<meta name="apple-mobile-web-app-capable" content="yes"/>
ããã§ã¯ãiPhoneã®ãããããŒã調æŽããŸãã
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/>
ããŠãWindows 8ã¯iPhoneã®äŸã§ãã 説æçšã®è¿œå ããŒã¯ã¢ããïŒ
<meta name="application-name" content="Title"/> <meta name="msapplication-tooltip" content="Description"/>
ã¡ãã¥ãŒã«ã¢ããªã±ãŒã·ã§ã³ãžã®ãªã³ã¯ãé
眮ããããã®è¿œå ã®ããŒã¯ã¢ããïŒ
<meta name="msapplication-TileColor" content="#990000"/> <meta name="msapplication-TileImage" content="images/custom_icon_144.png"/> <meta name="msapplication-square70x70logo" content="images/custom_icon_70.png"/> <meta name="msapplication-square150x150logo" content="images/custom_icon_150.png"/> <meta name="msapplication-square310x310logo" content="images/custom_icon_310.png"/> <meta name="msapplication-wide310x150logo" content="images/custom_icon_310x150.png"/>
ãŠã£ã³ããŠã®è¿œå èšå®ã ã©ããããããã¯è¡ã£ãŠããªãHTAãžã®åç
§ã§ãïŒ
<meta name="msapplication-window" content="width=400;height=300"/>
IEã«æåŸã®ã¢ãŒãã«åãæ¿ããããäŸé ŒããŸãã
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
ç»åããã«ãç¡å¹ã«ããŸãã
<meta http-equiv="imagetoolbar" content="no"/>
IEã«ã¯ãçŸåšã®OSããŒããèæ
®ããã«ããã¹ãŠãå€å
žçãªã¹ã¿ã€ã«ã§èšèšããããã«äŸé ŒããŸãã
<meta http-equiv="msthemecompatible" content="no"/>
é»è©±çªå·ãšäœæã®èªèãçŠæ¢ãããããã匷調ããŸãã
<meta name="format-detection" content="telephone=no"/> <meta name="format-detection" content="address=no"/>
éåžžã®WebããŒãžã§ã¯ãé»è©±ãšäœæã説æããCSSã¹ã¿ã€ã«ã®ã»ãããæ¿å
¥ããæ¹ãããããã®èªèããããã¯ãããããåªããŠããŸãã
å®å
šãªSEOãããïŒ
<title></title> <meta name="description" content=""/> <meta name="keywords" content=""/> <meta name="author" content=""/> <meta name="copyright" content="(c)"> <meta http-equiv="Reply-to" content="mail@yandex.ru">
æè¿ã圌ãã圌ã®ããšãå¿ãå§ããŸããããã¢ããªã±ãŒã·ã§ã³ããªã³ã©ã€ã³ã®ãµã€ãã«ããå Žåã圌ã¯å©ããããšãã§ããŸãã
å¿
ãããã©ã«ãã®ã¹ã¿ã€ã«ãåé€ããŠãã ããïŒ
<link href="css/reset.min.css" rel="stylesheet" type="text/css"/>
ãªã»ãããå°ã倿ŽããŸããã 圌ã¯TDã¿ã°ã®èæ¯ãèšå®ããŸãããããã«ãããTRã¿ã°ãä»ããŠè¡å
šäœãåãããšãå€ãIEã§ãã°ãçºçããŸããã
æšæºã¹ã¿ã€ã«ã®ã»ããã远å ããŸãã
<link href="css/default.css" rel="stylesheet" type="text/css"/>
ãããŠã圌ãã¯ããã«ããã€ãã®ãã¥ã¢ã³ã¹ãèæ
®ããŸããã ããšãã°ãCSSã®éžæãåé€ããŸãã
body { -webkit-tap-highlight-color: rgba(255, 255, 255, 0); -webkit-focus-ring-color: rgba(255, 255, 255, 0); outline: none; -moz-user-select: none; -o-user-select: none; -khtml-user-select: none; -webkit-user-select: none; user-select: none; resize: none; -webkit-text-size-adjust: none; }
ãã ããããã¹ãå
¥åãã£ãŒã«ãã«ã¯ãã®ãŸãŸã«ããŠãããŸãã
input, textarea { -moz-user-select: text; -o-user-select: text; -khtml-user-select: text; -webkit-user-select: text; user-select: text; resize: none; }
äž»ã«ããŠãŒã¶ãŒãäœãéžæããŠã¯ãªããªãWebã¢ããªã±ãŒã·ã§ã³ãäœæããŠããããšãæãåºãããŠãã ããã éåžžã®ãµã€ãã§ã¯ãããã¹ãã®éžæãçŠæ¢ããããšã¯ã§ããŸããã
éåžžãå¢çç·ã®åçã眮ãããšã¯å¿ããããŸããã reset.cssã«ãããŸãããvertical-alignã¯ã¹ããããããŸãã
img { border: 0; vertical-align: top; }
ãŸãããç§ã®ç®ãåŒã¶ãããã®æšæºçãªã¢ãã¡ãŒã·ã§ã³ã¯ã©ã¹ããããŸãã
.animation { -webkit-transition: background-color 0.7s, color 1s, opacity 0.5s; -ms-transition: background-color 0.7s, color 1s, opacity 0.5s; -o-transition: background-color 0.7s, color 1s, opacity 0.5s; -moz-transition: background-color 0.7s, color 1s, opacity 0.5s; transition: background-color 0.7s, color 1s, opacity 0.5s; }
ãã¿ã³ãã¿ããªã©ã®å¿
èŠã«å¿ããŠã³ããŒã§ããŸãã äžçªäžã®è¡ã¯ãåžžã«ç®ãåŒããšããã¢ãã¡ãŒã·ã§ã³ãæ¥ç¶ããããšã¯èªç¶ãªãã®ã«ãªããšããããšã§ãã æ¥ç¶ããéã«èŠããŠããå¿
èŠãããæ©èœãšããŠãããã«ã€ããŠèŠããŠããå¿
èŠã¯ãããŸããã
ãããŠããããã®ã¹ã¿ã€ã«ã§ã¯ãåžžã«HTMLãã³ãã¬ãŒãã®äžéšã«ãããã¬ãŒãã«è²ãä»ããŸãã
<noscript class="no_script_message"> JavaScript. . JavaScript. </noscript>
ãããŠãã¡ãããææã®IEã®ããã«ãæåã«ä»¥äžã远å ããŸãã
ãã®è¡ã§ã¯ãã¹ã¯ãªãããå±éºã§ãããªã©ã®å
åãèŠããªãããã«é Œã¿ãŸãã ãªã©ããã ããJSãååŸããŠæå¹ã«ããã ãã§ãã
ããŠã瞊åããšæšªåãã®ã¹ã¿ã€ã«ïŒ
<link href="css/portrait.css" rel="stylesheet" media="all and (orientation:portrait)"/> <link href="css/landscape.css" rel="stylesheet" media="all and (orientation:landscape)"/>
HTAã«ç¿»èš³ãããšã次ã®ãããªæ¿å
¥ããããŸãã
HTAãã¡ã€ã«ã®ãã©ã¡ãŒã¿ãŒã¯æ¬¡ã®ãšããã§ãïŒããšãã°ãã·ã¹ãã ã¡ãã¥ãŒã®ååšãã¹ã¯ããŒã«ã®äžåšãªã©ïŒã ãŸããJSãã¡ã€ã«ã远å ããŸããïŒããã©ã«ãã§ã¯ã³ã¡ã³ãåãããŠããŸãïŒïŒ
<script src="js/hta.js"></script>
ãã®ã¿ã¹ã¯ã¯ããŠã£ã³ããŠãçµã£ãŠãç»é¢ã®äžå€®ã«é
眮ããããšã§ãïŒãã¡ããããããå¯èœãªå ŽåïŒã
ãŸãããããããã§ã«ããã«ç²ŸéããŠããïŒ
<script src="js/html5.js"></script>
æ°ããHTML5ã¿ã°ãå®è¡ããå€ãIEçšã«åäœæããŸãã
ãŸããç§ãã¡ã¯Androidããã³ã
<script src="js/android.js"></script>
ããšãã°ãã¢ãã¬ã¹ããŒãåé€ããŸãã ãããè¡ãã«ã¯ïŒ
- ããŒãžã®é«ããååŸãã2å¢ãããŸã
- äžéšã1ãã¯ã»ã«ãŸã§ã¹ã¯ããŒã«ããŸã
- é«ããå
ã®äœçœ®ã«æ»ã
Androidã§ãã®ããã¯ã䜿çšãããšãã¢ãã¬ã¹ããŒãæ¶ããŸãã ãããŠãæåŸãŸã§ããçŽãããšãã§ãããšãIvan ChashkinãDUMP-2014ã§ããã«ã€ããŠè©±ããŸããïŒãŸããMail.ruã®èšäº
http://habrahabr.ru/company/mailru/blog/165213/ããããŸãïŒã äžçªäžã®è¡ã¯ããã¹ãŠã®ã¿ããã€ãã³ããåå®çŸ©ããŠstopPropagationã«ãããšãã€ãã³ãã®éä¿¡ã§Androidããã¬ãŒãã忢ãããšããããšã§ãã
å¯èœã§ããã°ããªãã©ã€ã³äœæ¥çšã«ã¢ããªã±ãŒã·ã§ã³ããã£ãã·ã¥ããŠãã ããïŒ
<html manifest="default.appcache">
ãã€ãããŒã·ã§ã³ãšèšèªã«ã€ããŠã詳ãã説æããŠãããããå®å
šãªã¿ã°ã¯æ¬¡ã®ãšããã§ãã
<html manifest="default.appcache" lang="ru-RU">
äžè¬ã®äººã®å
¥åã¯æ¬¡ã®ããã«ãªããŸãã
<input type="text" id="name">
å«ç
è
ã®å
¥åã¯æ¬¡ã®ããã«ãªããŸãã
<input type="text" autocomplete="on" spellcheck="true" autocapitalize="off" autocorrect="off" autofocus required maxlength="30" pattern="^[--\s\-\_0-9]+$" class="input_name" id="input_name" placeholder=" " x-webkit-speech />
èŠçŽ ã®å±æ§ïŒ- ãã¬ãŒã¹ãã«ããŒ-å
¥åãã³ã
- maxlength-å
¥åããæåæ°ãå¶éãã
- ã¹ãã«ãã§ãã¯-ã¹ãã«ãã§ãã¯
- autocorrect-æžé¢ã®èªåä¿®æ£
- autocapitalize-倧æåå°æåã®èªå倿
- x-webkit-speech-é³å£°å
¥å
ã¢ã€ãã ã®èŠä»¶ïŒ- ã¢ã€ãã ã®ã¿ã€ãã¯å
¥åã®ã¿ã€ããšäžèŽããå¿
èŠããããŸãã ããããã¹ã¯ãŒãå
¥åãã£ãŒã«ãã§ããå Žåããã¹ã¯ãŒãã¿ã€ãã§ãªããã°ãªããŸããã å
¥åããæåã¯ã¢ã¹ã¿ãªã¹ã¯ã«çœ®ãæããå¿
èŠããããŸãã
- é
ç®ã«ã¯ãå
¥åããå¿
èŠã®ããããŒã¿ã®äŸãæ·»ä»ããå¿
èŠããããŸãã
- èŠçŽ ã¯ããŠãŒã¶ãŒã«ãªã³ã¶ãã©ã€ã§å
¥åãä¿ãå¿
èŠããããŸãã
- ã¢ã€ãã ã¯ã¹ãã«ãã¹ããã§ãã¯ããå¿
èŠããããŸãã
- æå€§å
¥åé·ãå¶éããå¿
èŠããããŸãã
- ãããæ°ãããã¹ã¯ãŒããå
¥åãããã£ãŒã«ãã§ããå Žåãããã¹ã¯ãŒããèªåçæããããã¿ã³ã远å ããå¿
èŠããããŸãã ã¯ãªãã¯ãããšãã©ã³ãã ãªãã¹ã¯ãŒããçæãããŸãã
- èŠçŽ ã«ã¯ãäºæ³ãããããŒã¿åã瀺ããã¿ãŒã³å±æ§ãå«ãŸããŠããå¿
èŠããããŸãã
- JavaScriptãå®è¡ããå ŽåããŠãŒã¶ãŒãå
¥åããããŒã¿ã¯ãã®å Žã§ç¢ºèªããå¿
èŠããããŸãã ããŒã¿ãæ€èšŒã«åæ Œããªãã£ãå Žåã¯ãããã«ãŠãŒã¶ãŒã«éç¥ããå¿
èŠããããŸãã
æšå¥šäºé
ïŒ- ããããã¹ã¯ãŒãå
¥åãã£ãŒã«ãã®å Žåãããã¹ã¯ãŒããèŠãããã¿ã³ïŒéåžžã¯ãç®ãã®åœ¢ã§çºè¡ãããŸãïŒã远å ããå¿
èŠããããŸããã¯ãªãã¯ãããšããã£ãŒã«ãã¿ã€ããããã¹ãã«ãªãããŠãŒã¶ãŒã¯å
¥åããŒã¿ã確èªã§ããŸãã
- ãã£ãŒã«ãã«èªåå
¥åããå¯èœæ§ãããå Žåã¯ãããã䜿çšããå¿
èŠããããŸãã ãŸãã¯ãèŠçŽ ã®è¿ãã«ãã¿ã³ãé
眮ãããšãã¯ãªãã¯ãããšèªåè£å®ãæ©èœããŸãã
- ç¶æ³ã«ãã£ãŠã¯ããèªåä¿®æ£ãã䜿çšããŠãçŠæ¢ãããŠããæåããã®å Žã§åé€ããããšãã§ããŸãã ãã®ç¶æ³ã®å±éºæ§ã¯ããŠãŒã¶ãŒãä¿®æ£ã«æ°ä»ãããå
¥åãããããŒã¿ãšã¯ç°ãªãããŒã¿ãéä¿¡ããå¯èœæ§ãããããšã§ãã
ãããã®ããããã£ã®ååã¯
textareaã«è»¢éã§ããŸãã ããããã³èªåè£å®ãã¹ãã«ãé³å£°å
¥åãããŒã«ããããé·ãå¶éãªã©ã ãã ãã远å ã®èŠä»¶ãããã€ããããŸãã
- ãã£ãŒã«ãã®ãµã€ãºå€æŽã¯çŠæ¢ããå¿
èŠããããŸãïŒãµã€ãºå€æŽïŒCSSã§ã¯ãªãïŒ
- ãããç¹å®ã®ã¡ãã»ãŒãžã®å
¥åã§ããå Žåãå
¥åã§ããæåæ°ããŠãŒã¶ãŒã«éç¥ããå¿
èŠããããŸãã
ã¬ã€ã¢ãŠãããŒãïŒ- çæ³çãªã¬ã€ã¢ãŠãã¯ãIE6ãšãªã¢ã®ã©ããã§åç¶ããã¯ãã§ãã ã€ã³ã©ã€ã³ãããã¯ãæå°éã«äœ¿çšããããšããŸãã ã€ã³ã©ã€ã³èŠçŽ ãŸãã¯ãããã¯èŠçŽ ã«ãªã£ãå Žåã«äœãèµ·ããããäºåã«ç¢ºèªããŸãã
- äœçœ®ã¯å±éºã§ãã äœãé
眮ããªãããšããå§ãããŸãã
- ãããŒã-ãŸããè¯ãããšã«ã€ãªãããŸããã 圌ã«ã€ããŠå®å
šã«å¿ããããšããå§ãããŸãã
- èšèšã§ã¯ãç¹å®ã®ãã©ã°ã¡ã³ããè±èœããå¯èœæ§ãçŽã¡ã«æäŸããå¿
èŠããããŸãã ãã®ç¹ã§Metroã¹ã¿ã€ã«ã¯å®ç§ã§ãã ã©ãããããããMicrosoftãäžžãè§ãã°ã©ããŒã·ã§ã³ã圱ã®ãªãã¹ã¿ã€ã«ãäœã£ããšããæãã€ããŸããã ã€ãŸãã圌ãã¯ããã«ãã©ãŠã¶ããèµ·åããããã誰ããã°ãéé£ããããšã¯ã§ããŸããã§ããã
ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ããšã°ã¬ãŒã¹ãã«ãã°ã©ããŒã·ã§ã³Yandexã®Sergey Gorobtsovã«ããProgressive Enhancementããã³Graceful DegradationïŒ
http://tech.yandex.ru/education/shri/ekb-2013/talks/1500/ ïŒã«ã€ããŠã®ã¬ããŒããèŠãŠãã©ãã§ãããŸãã¬ã€ã¢ãŠãã§ããããã«ããããšããå§ãããŸãã
æšæºåã«ã¯ä»ã«äœãå¿
èŠã§ããïŒãŸãããã³ãã¬ãŒãã§ã¯ãæšæºã®ã¢ã©ãŒãã®çœ®ãæãããµã€ããžã®èªåã¹ã¯ããŒã«ã®è¿œå ïŒãããvkontakteãªã©ïŒãªã©ãæ¢è£œã®ã¢ãžã¥ãŒã«ãããã«æ¥ç¶ããŸãã ãããããããã¯ãã§ã«ãã®èšäºã®ç¯å²ãè¶
ãããã€ã¯ã§ãã
ãããããã®æšæºçãªèªè»¢è»ã¯äŸ¿å©ã§ãã æšæºã®ãã€ã¯ãããã¿ãŒïŒ
<footer itemscope itemtype="http://schema.org/LocalBusiness"> «<span itemprop="name">Google</span>» <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> <span itemprop="streetAddress"> 1</span> <span itemprop="addressLocality">-</span>, <span itemprop="addressRegion"> .</span> <meta itemprop="addressCountry" content="RU"/> </div> -: <time itemprop="openingHours" datetime="Mo, Tu, We, Th, Fr, Sa, Su 10:00-21:00">10:00 - 21:00 </time> <span itemprop="telephone">206-555-1234</span>. <span itemprop="email">info@wikimedia.org</span>. <a href="http://www.google.com" itemprop="url">http://google.com</a>. </footer>
äžæ¹ããã¹ãŠã®æ€çŽ¢ãšã³ãžã³ã¯ããã¥ã¡ã³ãã«å«ãŸããŠããŸããã誰ãããããµããŒãããŠããŸããã ç§ã¯ãã®ããã¿ãŒã䜿çšããŸã ç¥ããªããããããŸããããå°æ¥çã«ã¯äœ¿çšãéå§ãããããããŸããã
ããããããããã¹ãŠã§ãã ãã¹ã¿ãŒãã人ã®ããã«-å°ããªããŒãã¹ïŒ
ãã¢ã§ã¯ãèšäºã®ãã¹ãŠã®ã¡ã¿ã¿ã°ãèŠãããšãã§ããŸãã