Webéçºã«ãããCSSã¢ã³ã«ãŒåã®è¡çªãç¹å®ã»è§£æ±ºããã¹ã ãŒãºãªããã²ãŒã·ã§ã³ãšåªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã確ä¿ããããã®å æ¬çã¬ã€ãã
CSSã¢ã³ã«ãŒåã®è¡çªïŒã¢ã³ã«ãŒãªã³ã¯ã®ç«¶åãç¹å®ã解決ããæ¹æ³
ã¢ã³ã«ãŒãªã³ã¯ïŒããã·ã¥ãªã³ã¯ãŸãã¯ãžã£ã³ããªã³ã¯ãšãåŒã°ããïŒã¯ãWebããã²ãŒã·ã§ã³ã®åºæ¬çãªéšåã§ããããã«ããããŠãŒã¶ãŒã¯WebããŒãžã®ç¹å®ã»ã¯ã·ã§ã³ã«ãã°ãããžã£ã³ãã§ããŸããããããããŒãžäžã®è€æ°ã®èŠçŽ ãåãid屿§ãå
±æããŠããå ŽåïŒã¢ã³ã«ãŒåã®è¡çªïŒãæåŸ
ãããããã²ãŒã·ã§ã³åäœãæ©èœããªããªããŸãããã®èšäºã§ã¯ãCSSã¢ã³ã«ãŒåã®è¡çªãçè§£ããç¹å®ãã解決ããããã®å
æ¬çãªã¬ã€ããæäŸããã¹ã ãŒãºã§äºæž¬å¯èœãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãä¿èšŒããŸãã
ã¢ã³ã«ãŒãªã³ã¯ãšid屿§ã®çè§£
è¡çªã®è€éãã«é£ã³èŸŒãåã«ãã¢ã³ã«ãŒãªã³ã¯ã®åºæ¬ãšãããã©ã®ããã«æ©èœããããå確èªããŸãããã
ã¢ã³ã«ãŒãªã³ã¯ã®ä»çµã¿
ã¢ã³ã«ãŒãªã³ã¯ã¯ãURLå
ã§#èšå·ã«ç¶ãèå¥åïŒã¢ã³ã«ãŒåïŒã䜿çšããŸãããã®èå¥åã¯ãããŒãžäžã®HTMLèŠçŽ ã®id屿§ã«å¯Ÿå¿ããŸãããŠãŒã¶ãŒãã¢ã³ã«ãŒãªã³ã¯ãã¯ãªãã¯ããããããã·ã¥ãå«ãURLã«ããã²ãŒããããšããã©ãŠã¶ã¯äžèŽããidãæã€èŠçŽ ã衚瀺ãããããã«ããŒãžãã¹ã¯ããŒã«ããŸãã
äŸãã°ã以äžã®HTMLã¯idããintroductionãã®ã»ã¯ã·ã§ã³ã«ãžã£ã³ããããªã³ã¯ãäœæããŸãã
<a href="#introduction">Jump to Introduction</a>
<div id="introduction">
<h2>Introduction</h2>
<p>This is the introduction section.</p>
</div>
äžæã®id屿§ã®éèŠæ§
id屿§ã¯ãHTMLããã¥ã¡ã³ãå
ã§äžæã§ããããã«èšèšãããŠããŸãããã®äžææ§ã¯ãã¢ã³ã«ãŒãªã³ã¯ãJavaScriptã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãããã³CSSã¹ã¿ã€ãªã³ã°ãæ£ããæ©èœããããã«äžå¯æ¬ ã§ããè€æ°ã®èŠçŽ ãåãidãå
±æãããšããã©ãŠã¶ã®åäœã¯äºæž¬äžèœã«ãªããå€ãã®å Žåããã®idãæã€æåã®èŠçŽ ã®ã¿ãã¿ãŒã²ããã«ãããŸãã
ã¢ã³ã«ãŒåã®è¡çªãç¹å®ããæ¹æ³
ã¢ã³ã«ãŒåã®è¡çªã¯ãç¹ã«å€§èŠæš¡ãŸãã¯åçã«çæãããWebããŒãžã§ã¯ã埮åŠã§çºèŠãé£ããå ŽåããããŸãã以äžã«ããããã®ç«¶åãç¹å®ããããã®ããã€ãã®æ¹æ³ã瀺ããŸãã
HTMLã³ãŒãã®æåæ€æ»
æãåºæ¬çãªã¢ãããŒãã¯ãHTMLã®ãœãŒã¹ã³ãŒããæåã§ç¢ºèªããããšã§ããåãid屿§ãè€æ°ã®èŠçŽ ã§äœ¿çšãããŠããç®æãæ€çŽ¢ããŸããããã¯é¢åãªäœæ¥ãããããŸããããç¹ã«å°èŠæš¡ãªãããžã§ã¯ãã«ãšã£ãŠã¯è¯ãåºçºç¹ã§ãã
ãã©ãŠã¶éçºè ããŒã«
ãã©ãŠã¶éçºè ããŒã«ã¯ãWebããŒãžã®æ€æ»ãšãããã°ã®ããã®åŒ·åãªæ©èœãæäŸããŸãããããã䜿çšããŠã¢ã³ã«ãŒåã®è¡çªãç¹å®ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
- èŠçŽ ãæ€èšŒïŒ çãããèŠçŽ ãå³ã¯ãªãã¯ãããæ€èšŒããŸãã¯ãèŠçŽ ã調æ»ããéžæããŠããã®HTMLã³ãŒãã衚瀺ããŸãã
id屿§ãæ€çŽ¢ïŒ èŠçŽ ããã«ã®æ€çŽ¢æ©èœïŒéåžžã¯Ctrl+FãŸãã¯Cmd+FïŒã䜿çšããŠãid屿§ã®ã€ã³ã¹ã¿ã³ã¹ãæ€çŽ¢ããŸãã- ã³ã³ãœãŒã«ãšã©ãŒïŒ äžéšã®ãã©ãŠã¶ã§ã¯ãéè€ãã
id屿§ãæ€åºããããšãã³ã³ãœãŒã«ã«èŠåããšã©ãŒã衚瀺ãããããšããããŸãããã®ãããªã¡ãã»ãŒãžããªãããã³ã³ãœãŒã«ãæ³šææ·±ã確èªããŠãã ããã - ç£æ»ããŒã«ïŒ æè¿ã®ãã©ãŠã¶ã«ã¯ãéè€ãã
id屿§ãå«ãäžè¬çãªåé¡ãèªåçã«ã¹ãã£ã³ã§ããç£æ»ããŒã«ãå«ãŸããŠããããšããããããŸããChromeã®Lighthouseã®ãããªããŒã«ã䜿çšããŠããããã®ç£æ»ãå®è¡ããŸãã
HTMLããªããŒã¿ãŒ
W3C Markup Validation ServiceïŒvalidator.w3.orgïŒãªã©ã®HTMLããªããŒã¿ãŒã¯ãHTMLã³ãŒããåæããéè€ããid屿§ãå«ãHTMLæšæºã®éåãç¹å®ã§ããŸãããããã®ããªããŒã¿ãŒã¯ããšã©ãŒã®æ£ç¢ºãªå Žæãç¹å®ãã詳现ãªã¬ããŒããæäŸããŸãã
èªåãã¹ãããŒã«
å€§èŠæš¡ãªãããžã§ã¯ãã§ã¯ãã¢ã³ã«ãŒåã®è¡çªãå«ãæœåšçãªåé¡ã«ã€ããŠã³ãŒããã¹ãã£ã³ã§ããèªåãã¹ãããŒã«ã®äœ¿çšãæ€èšããŠãã ããããããã®ããŒã«ã¯ãéçºã¯ãŒã¯ãããŒã«çµ±åããŠããšã©ãŒãæ©æã«çºèŠããããšãã§ããŸãã
ã¢ã³ã«ãŒåã®è¡çªã解決ããæ¹æ³
ã¢ã³ã«ãŒåã®è¡çªãç¹å®ããããæ¬¡ã®ã¹ãããã¯ãããã解決ããããšã§ãã以äžã«ããã€ãã®æŠç¥ã瀺ããŸãã
id屿§ã®ååã倿Žãã
æãç°¡åãªè§£æ±ºçã¯ãid屿§ã®ååã倿ŽããŠäžææ§ã確ä¿ããããšã§ããèŠçŽ ã®ç®çãåæ ããã説æçã§æå³ã®ããååãéžæããŠãã ããã
äŸïŒ
以äžã®ä»£ããã«ïŒ
<div id="section">...
<div id="section">...
<div id="section">...
以äžã䜿çšããŸãïŒ
<div id="section-one">...
<div id="section-two">...
<div id="section-three">...
ååã倿Žããid屿§ãåç
§ããŠããã¢ã³ã«ãŒãªã³ã¯ãå¿ããã«æŽæ°ããŠãã ããã
ã¹ã¿ã€ãªã³ã°ã«id屿§ã®ä»£ããã«CSSã¯ã©ã¹ã䜿çšãã
id屿§ãäž»ã«ã¹ã¿ã€ãªã³ã°ã®ããã«äœ¿çšãããŠããå Žåã¯ã代ããã«CSSã¯ã©ã¹ã䜿çšããããšãæ€èšããŠãã ãããCSSã¯ã©ã¹ã¯è€æ°ã®èŠçŽ ã«é©çšã§ãããããWebãµã€ãå
šäœã§äžè²«ããã¹ã¿ã€ã«ãé©çšããã®ã«çæ³çã§ãã
äŸïŒ
以äžã®ä»£ããã«ïŒ
<div id="highlight" style="color: yellow;">...
<div id="highlight" style="color: yellow;">...
以äžã䜿çšããŸãïŒ
<div class="highlight">...
<div class="highlight">...
<style>
.highlight {
color: yellow;
}
</style>
ãã®ã¢ãããŒãã«ãããã¹ã¿ã€ãªã³ã°ç®çã§äžæã®id屿§ã䜿çšããå¿
èŠããªããªããŸãã
åå空éãšãã¬ãã£ãã¯ã¹
å€§èŠæš¡ãªãããžã§ã¯ãããµãŒãããŒãã£ã®ã©ã€ãã©ãªãæ±ãéã«ã¯ãid屿§ã«åå空éããã¬ãã£ãã¯ã¹ã䜿çšãããšäŸ¿å©ã§ããããã«ãããä»ã®ã³ã³ããŒãã³ããã©ã€ãã©ãªã䜿çšããid屿§ãšã®è¡çªãé¿ããããšãã§ããŸãã
äŸïŒ
<div id="my-component-title">...
<div id="my-component-content">...
ãmy-component-ãã®ãããªäžè²«ãããã¬ãã£ãã¯ã¹ã䜿çšãããšãid屿§ãä»ã®ã©ã€ãã©ãªã®ãã®ãšç«¶åããå¯èœæ§ãäœããªããŸãã
åçãªidçæ
JavaScriptããµãŒããŒãµã€ãã®ãã³ãã¬ãŒããšã³ãžã³ãªã©ã䜿çšããŠHTMLãåçã«çæããå Žåã¯ãid屿§ãäžæã«çæãããããã«ããŠãã ãããããã¯ã次ã®ãããªæè¡ã䜿çšããŠå®çŸã§ããŸãã
- äžæã®èå¥åïŒ
UUID()ã®ãããªé¢æ°ã䜿çšããããã¿ã€ã ã¹ã¿ã³ããšä¹±æ°ãçµã¿åãããŠäžæã®èå¥åãçæããŸãã - ã«ãŠã³ã¿ãŒïŒ ã«ãŠã³ã¿ãŒã䜿çšããŠãèŠçŽ ãäœæãããéã«
id屿§ã«äžæã®çªå·ãå²ãåœãŠãŸãã
äŸïŒJavaScriptïŒïŒ
function createUniqueId() {
return 'id-' + Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
}
let newElement = document.createElement('div');
newElement.id = createUniqueId();
document.body.appendChild(newElement);
ãã©ãŒã èŠçŽ ã«name屿§ã䜿çšãã
ãã©ãŒã èŠçŽ ã«ã€ããŠã¯ãid屿§ã«é Œãã®ã§ã¯ãªããname屿§ã䜿çšããŠãã©ãŒã ãã£ãŒã«ããèå¥ããŸããname屿§ã¯ãã®ç®çã®ããã«ç¹å¥ã«èšèšãããŠãããäžæã§ããå¿
èŠã¯ãããŸããã
äŸïŒ
<input type="text" name="username">
<input type="password" name="password">
ã¢ã³ã«ãŒåã®è¡çªãé¿ããããã®ãã¹ããã©ã¯ãã£ã¹
ã¢ã³ã«ãŒåã®è¡çªãé²ãããšã¯ãé©åã«æ§é åããæ©èœçãªWebãµã€ããç¶æããããã«äžå¯æ¬ ã§ãã以äžã«ãåŸãã¹ãããã€ãã®ãã¹ããã©ã¯ãã£ã¹ã瀺ããŸãã
ã³ãŒãã£ã³ã°åºæºã確ç«ãã
ããŒã ã®ããã«ãäžæã®id屿§ã®éèŠæ§ã匷調ããæç¢ºãªã³ãŒãã£ã³ã°åºæºãå®çŸ©ããŸããåœåèŠåããã¬ãã£ãã¯ã¹ãããã³åçãªidçæã«é¢ããã¬ã€ãã©ã€ã³ãå«ããŸãã
ã³ãŒãã¬ãã¥ãŒ
éçºããã»ã¹ã®äžç°ãšããŠã³ãŒãã¬ãã¥ãŒã宿œããŸããããã«ãããããŒã ã¡ã³ããŒã¯ãæ¬çªç°å¢ã«åæ ãããåã«ãæœåšçãªã¢ã³ã«ãŒåã®è¡çªããã®ä»ã®ã³ãŒãã£ã³ã°ãšã©ãŒãç¹å®ã§ããŸãã
èªåãªã³ãã£ã³ã°
ãªã³ãã£ã³ã°ããŒã«ã䜿çšããŠãéè€ããid屿§ãå«ãäžè¬çãªãšã©ãŒã«ã€ããŠã³ãŒããèªåçã«ãã§ãã¯ããŸãããªã³ãã£ã³ã°ã¯éçºç°å¢ã«çµ±åããŠããªã¢ã«ã¿ã€ã ã®ãã£ãŒãããã¯ãæäŸã§ããŸãã
宿çãªãã¹ã
ã¢ã³ã«ãŒãªã³ã¯ãæåŸ ã©ããã«æ©èœããããšã確èªããããã«ã宿çãªãã¹ããå®è¡ããŸããããã«ã¯ãäºææ§ã®åé¡ãç¹å®ããããã«ãããŸããŸãªãã©ãŠã¶ãããã€ã¹ã§ã®ãã¹ããå«ãŸããŸãã
ã¢ã¯ã»ã·ããªãã£ãèæ ®ãã
ã¢ã³ã«ãŒãªã³ã¯ãšäžæã®IDã®é©åãªäœ¿çšã¯ãWebã¢ã¯ã»ã·ããªãã£ã«ãšã£ãŠäžå¯æ¬ ã§ããã¹ã¯ãªãŒã³ãªãŒããŒããã®ä»ã®æ¯æŽæè¡ã¯ããããã®å±æ§ã«äŸåããŠãé害ãæã€ãŠãŒã¶ãŒã«æå³ã®ãããã©ãŠãžã³ã°äœéšãæäŸããŸããã¢ã³ã«ãŒãªã³ã¯ã説æçã§ãããã¿ãŒã²ããã»ã¯ã·ã§ã³ãæç¢ºã«ã©ãã«ä»ããããŠããããšã確èªããŠãã ããã
ã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒSPAïŒãžã®åœ±é¿
ã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒSPAïŒã¯ãã¢ããªã±ãŒã·ã§ã³å ã®ããã²ãŒã·ã§ã³ã«ã¢ã³ã«ãŒãªã³ã¯ãå€çšããããšããããããŸããSPAã§ã¯ãã¢ã³ã«ãŒåã®è¡çªã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã«ãŒãã£ã³ã°ãšç¶æ 管çã劚ããå¯èœæ§ããããããç¹ã«ã€ã©ã€ã©ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ã€ãªããå¯èœæ§ããããŸãã
SPAã«ãŒãã£ã³ã°ãšããã·ã¥ãªã³ã¯
å€ãã®SPAãã¬ãŒã ã¯ãŒã¯ã¯ãããã·ã¥ãªã³ã¯ïŒ#ã«ç¶ãã«ãŒãïŒã䜿çšããŠãç°ãªããã¥ãŒéã®ããã²ãŒã·ã§ã³ãã·ãã¥ã¬ãŒãããŸããäŸãã°ã#/productsã®ãããªã«ãŒãã¯ã補åã®ãªã¹ãã衚瀺ãããããããŸããã
SPAã«ãããè¡çªã®èª²é¡
SPAã§ã¯ãã¢ã³ã«ãŒåã®è¡çªãã«ãŒãã£ã³ã°ããžãã¯ã«å¹²æžããã¢ããªã±ãŒã·ã§ã³ãééã£ããã¥ãŒã«ããã²ãŒãããããäžæ£ç¢ºãªã³ã³ãã³ãã衚瀺ãããããåå ãšãªãããšããããŸããããã¯ãSPAã®ã«ãŒãã£ã³ã°ã¡ã«ããºã ãã¢ã³ã«ãŒåã®äžææ§ã«äŸåããŠããããã§ãã
SPAã®ããã®æŠç¥
SPAã§ã¢ã³ã«ãŒåã®è¡çªãé¿ããããã«ã¯ã以äžã®æŠç¥ãæ€èšããŠãã ããã
- äžå åãããã«ãŒãã£ã³ã°ïŒ ã¢ããªã±ãŒã·ã§ã³ã®ããã²ãŒã·ã§ã³ãäžè²«ããæ¹æ³ã§ç®¡çãããäžå åãããã«ãŒãã£ã³ã°ã©ã€ãã©ãªãŸãã¯ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŸãã
- URLãã©ã¡ãŒã¿ïŒ ããã·ã¥ãªã³ã¯ã ãã«é Œãã®ã§ã¯ãªããURLãã©ã¡ãŒã¿ã䜿çšããŠãã¥ãŒéã§ããŒã¿ãæž¡ããŸãã
- åçã³ã³ãã³ãã®ããã®äžæã®IDïŒ åçã³ã³ãã³ããçæããéã¯ãåãã¥ãŒã«å¯ŸããŠ
id屿§ãäžæã«çæãããããã«ããŸãã
åœéåïŒi18nïŒã«é¢ããèæ ®äºé
ã°ããŒãã«ãªèŠèŽè
åãã®Webãµã€ããéçºããéã«ã¯ãåœéåïŒi18nïŒãã¢ã³ã«ãŒãªã³ã¯ãšid屿§ã«äžãã圱é¿ãèæ
®ããããšãéèŠã§ããç°ãªãèšèªãæåã»ããã¯ã察åŠãå¿
èŠãªè€éããçãå¯èœæ§ããããŸãã
æåãšã³ã³ãŒãã£ã³ã°
HTMLããã¥ã¡ã³ããããµããŒãããäºå®ã®ãã¹ãŠã®èšèªããµããŒãããæåãšã³ã³ãŒãã£ã³ã°ã䜿çšããŠããããšã確èªããŠãã ãããUTF-8ã¯ãã»ãšãã©ã®çŸä»£çãªWebãµã€ãã§æšå¥šããããšã³ã³ãŒãã£ã³ã°ã§ãã
id屿§ã®ããŒã«ã©ã€ãº
id屿§ã«èšèªåºæã®çšèªã䜿çšããããšã¯é¿ããŠãã ãããããã«ãããWebãµã€ããè€æ°ã®èšèªã§ç¶æããããšãå°é£ã«ãªãå¯èœæ§ããããŸãã代ããã«ãäžè¬çãŸãã¯èšèªã«äžç«ãªçšèªã䜿çšããŠãã ããã
å³ããå·ŠïŒRTLïŒèšèª
ã¢ã©ãã¢èªãããã©ã€èªã®ãããªå³ããå·ŠïŒRTLïŒèšèªããµããŒãããå Žåã¯ãCSSãšJavaScriptã³ãŒããã¬ã€ã¢ãŠããæ£ããåŠçããããšã確èªããŠãã ãããããã«ã¯ãèŠçŽ ã®é 眮ãããã¹ãã®æ¹åã®èª¿æŽãå«ãŸããå ŽåããããŸãã
çµè«
ã¢ã³ã«ãŒåã®è¡çªã¯ãWebéçºã«ãããŠã€ã©ã€ã©ããåé¡ã§ãããããã²ãŒã·ã§ã³ã®ç Žæã貧匱ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ã€ãªãããŸãããããã®è¡çªã®åå ãçè§£ãããã®èšäºã§æŠèª¬ããæŠç¥ãå®è¡ããããšã§ãWebãµã€ããé©åã«æ§é åãããã¢ã¯ã»ã¹ããããããŠãŒã¶ãŒãã¬ã³ããªãŒã§ããããšãä¿èšŒã§ããŸããäžæã®id屿§ãåªå
ããæç¢ºãªã³ãŒãã£ã³ã°åºæºã確ç«ãã宿çãªãã¹ããå®è¡ããŠãã¢ã³ã«ãŒåã®è¡çªãããããçºçããªãããã«ããããšãå¿ããªãã§ãã ããããããã®å®è·µã¯ãã°ããŒãã«ãªèŠèŽè
ã«å¯Ÿå¿ããå
ç¢ã§ä¿å®å¯èœãªWebã¢ããªã±ãŒã·ã§ã³ãäœæããããã«äžå¯æ¬ ã§ãã