CSSã¢ã³ã«ãŒåã¹ã³ãŒãïŒã¢ã³ã«ãŒåç §ã¹ã³ãŒãïŒã詳ããæ¢æ±ããŸããã¢ãã³ãªCSSæè¡ã䜿çšããŠãã¢ã¯ã»ã·ãã«ã§ä¿å®æ§ãé«ããå ç¢ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããæ¹æ³ãåŠã³ãŸãããã
CSSã¢ã³ã«ãŒåã¹ã³ãŒãã®è§£æïŒç·åã¬ã€ã
CSSã¢ã³ã«ãŒåã¹ã³ãŒãïŒã¢ã³ã«ãŒåç §ã¹ã³ãŒããšãåŒã°ããŸãïŒã¯ãã¢ãã³CSSã®åŒ·åã§ãããªãããææèŠéããããã¡ãªæ©èœã§ããããã¯ãURLã®ãã©ã°ã¡ã³ãèå¥åïŒã#ãã®åŸã®éšåïŒã«åºã¥ããŠèŠçŽ ãã¹ã¿ã€ãªã³ã°ããã¡ã«ããºã ãæäŸããŸããããã¯ãã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒSPAïŒã®äœæãã¢ã¯ã»ã·ããªãã£ã®åäžããããŠå šäœçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åŒ·åã«ç¹ã«åœ¹ç«ã¡ãŸãã
ã¢ã³ã«ãŒãªã³ã¯ãš:targetç䌌ã¯ã©ã¹ã®çè§£
ã¢ã³ã«ãŒåã¹ã³ãŒãã«æ·±ãå
¥ãåã«ãã¢ã³ã«ãŒãªã³ã¯ãš:targetç䌌ã¯ã©ã¹ã®åºæ¬ãç°¡åã«ããããããŸãããã
ã¢ã³ã«ãŒãªã³ã¯ã䜿çšãããšããŠã§ãããŒãžå
ã®ç¹å®ã®ã»ã¯ã·ã§ã³ã«ç§»åã§ããŸããããã¯ã<a>ã¿ã°ã®href屿§ãã#ãã§å§ãŸãå€ã«èšå®ãããã®åŸã«èå¥åïŒãã¢ã³ã«ãŒåãïŒãç¶ããŸãããã©ãŠã¶ãã¹ã¯ããŒã«ããå
ã®ã¿ãŒã²ããèŠçŽ ã¯ããã®èå¥åã«äžèŽããid屿§ãæã¡ãŸãã
äŸïŒ
<a href="#section2">Go to Section 2</a>
<h2 id="section2">Section 2</h2>
:targetç䌌ã¯ã©ã¹ã¯ãURLã®çŸåšã®ãã©ã°ã¡ã³ãèå¥åãšidãäžèŽããèŠçŽ ãéžæããŸããããã䜿çšããŠãã¿ãŒã²ãããšãªã£ãèŠçŽ ãã¹ã¿ã€ãªã³ã°ã§ããŸãïŒ
#section2:target {
background-color: yellow;
padding: 10px;
}
URLãexample.com#section2ã®å Žåãid="section2"ãæã€<h2>èŠçŽ ã¯é»è²ã®èæ¯ãšããã£ã³ã°ãæã€ããšã«ãªããŸãã
ã¢ã³ã«ãŒåã¹ã³ãŒãïŒã¢ã³ã«ãŒåç §ã¹ã³ãŒãïŒãšã¯äœãïŒ
ã¢ã³ã«ãŒåã¹ã³ãŒãã¯ã:targetç䌌ã¯ã©ã¹ãããã«äžæ©é²ãããã®ã§ããããã«ãããã¿ãŒã²ããèŠçŽ èªäœã ãã§ãªãããã®ç¥å
ãåå«ãã¹ã¿ã€ãªã³ã°ããããšãå¯èœã«ãªããŸããããã¯ãç¹å®ã®ã¢ã³ã«ãŒãã¿ãŒã²ããã«ãªã£ããšãã«ã®ã¿ã¢ã¯ãã£ãã«ãªãã¹ã¿ã€ãªã³ã°ã®ãã¹ã³ãŒãããäœæããŸãã
ã¢ã³ã«ãŒåã¹ã³ãŒãã®åã¯ãããã³ã³ããã¹ããæèããã€ã³ã¿ã©ã¯ãã£ããªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæã§ããç¹ã«ãããŸããããã¯ãåçŽãªãã€ã©ã€ããè¶ ããããŒãžå ã§ã®ãŠãŒã¶ãŒã®ããã²ãŒã·ã§ã³ã«åºã¥ããŠè€éãªèŠèŠç倿Žãå¯èœã«ããŸãã
ã¢ã³ã«ãŒåã¹ã³ãŒãã®ä»çµã¿
:targetç䌌ã¯ã©ã¹ã®åœ±é¿ã¯ãäžèŽããidãæã€èŠçŽ ã ãã«ãšã©ãŸããŸãããCSSã»ã¬ã¯ã¿ã䜿çšããŠãããã¥ã¡ã³ããªããžã§ã¯ãã¢ãã«ïŒDOMïŒããªãŒå
ã§:targetèŠçŽ ã«é¢é£ããèŠçŽ ãã¿ãŒã²ããã«ããããšãã§ããŸããããã«ãããã¢ã³ã«ãŒã®ãã¹ã³ãŒããå
ã«ããèŠçŽ ã®ã¹ã¿ã€ãªã³ã°ã詳现ã«å¶åŸ¡ã§ããŸãã
次ã®ã·ããªãªãèããŠã¿ãŸãããïŒ
<div id="container">
<nav>
<ul>
<li><a href="#item1">Item 1</a></li>
<li><a href="#item2">Item 2</a></li>
</ul>
</nav>
<section id="item1">
<h2>Item 1 Content</h2>
<p>Some content for item 1.</p>
</section>
<section id="item2">
<h2>Item 2 Content</h2>
<p>Some content for item 2.</p>
</section>
</div>
次ã«ãããã€ãã®CSSã远å ããŸãããïŒ
#item1:target {
background-color: lightblue;
}
#item1:target ~ #item2 {
opacity: 0.5; /* Dim item2 when item1 is targeted */
}
#container:has(:target) {
border: 2px solid green; /* Example of :has, needs browser support or polyfill */
}
#item2:target {
background-color: lightgreen;
}
#item1ãã¿ãŒã²ããã®å ŽåïŒäŸïŒURLãexample.com#item1ïŒããã®èæ¯ã¯æ°Žè²ã«ãªãã#item2ã¯èæãïŒäžéæåºŠ0.5ïŒãªããŸãã#item2ãã¿ãŒã²ããã«ãªããšãããã¯èç·è²ã«ãªããŸãã:hasã»ã¬ã¯ã¿ã¯ã#containerãã¿ãŒã²ããèŠçŽ ãæã£ãŠãããã©ããããã§ãã¯ããããã«æ ç·ãé©çšããŸãã:hasã¯ããªãã£ã«ãå¿
èŠãªå Žåãããã¹ãŠã®ãã©ãŠã¶ã§ãµããŒããããŠããããã§ã¯ãªãããšã«æ³šæããŠãã ããã
ã¢ã³ã«ãŒåã¹ã³ãŒãã®å®çšçãªãŠãŒã¹ã±ãŒã¹
ã¢ã³ã«ãŒåã¹ã³ãŒãã¯ããŠã§ãéçºã«ãããŠããã€ãã®å®çšçãªå¿çšãæäŸããŸãïŒ
1. ã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒSPAïŒã®åŒ·å
SPAã¯ãããã²ãŒã·ã§ã³ãã³ã³ãã³ãã®æŽæ°ãåŠçããããã«ããã°ãã°JavaScriptã«äŸåããŸããããããã¢ã³ã«ãŒãªã³ã¯ãšã¢ã³ã«ãŒåã¹ã³ãŒãã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãã»ã¯ã·ã§ã³ã管çããããã®ãããã»ãã³ãã£ãã¯ã§ã¢ã¯ã»ã·ãã«ãªæ¹æ³ãæäŸã§ããŸãã
äŸãã°ãã¢ã³ã«ãŒãªã³ã¯ã䜿çšããŠSPAå ã®ç°ãªããã¥ãŒéãç§»åããçŸåšã®ã¿ãŒã²ããã«åºã¥ããŠã³ã³ãã³ãã衚瀺ãŸãã¯é衚瀺ã«ããããã«CSSã䜿çšã§ããŸããããã«ããããã宣èšçãªã¢ãããŒããæäŸãããã«ãŒãã£ã³ã°ãJavaScriptã®ã¿ã«äŸåããå Žåãšæ¯èŒããŠSEOãæ¹åããããšãã§ããŸãã
ã¿ããæã€ã·ã³ãã«ãªSPAãèããŠã¿ãŸãããïŒ
<div id="spa-container">
<nav>
<ul>
<li><a href="#tab1">Tab 1</a></li>
<li><a href="#tab2">Tab 2</a></li>
<li><a href="#tab3">Tab 3</a></li>
</ul>
</nav>
<div id="tab1" class="tab-content">Content for Tab 1</div>
<div id="tab2" class="tab-content">Content for Tab 2</div>
<div id="tab3" class="tab-content">Content for Tab 3</div>
</div>
CSSã¯æ¬¡ã®ããã«ãªããŸãïŒ
.tab-content {
display: none; /* Initially hide all tabs */
}
#tab1:target, #tab2:target, #tab3:target {
display: block; /* Show the targeted tab */
}
URLãexample.com#tab2ã®å Žåã#tab2ã®ã³ã³ãã³ãã®ã¿ã衚瀺ãããŸãã
2. ã¢ã¯ã»ã·ãã«ãªããã²ãŒã·ã§ã³ã®äœæ
ã¢ã³ã«ãŒãªã³ã¯ã¯æ¬è³ªçã«ã¢ã¯ã»ã·ãã«ã§ããã¹ã¯ãªãŒã³ãªãŒããŒã¯ãããŒãžå ã®ç¹å®ã®ã»ã¯ã·ã§ã³ã«ç§»åããããã«ãããã䜿çšã§ããŸããã¢ã³ã«ãŒãªã³ã¯ãšã¢ã³ã«ãŒåã¹ã³ãŒããçµã¿åãããããšã§ããŠãŒã¶ãŒã«èŠèŠçãªæããããæäŸãããŠã§ããµã€ãå šäœã®ã¢ã¯ã»ã·ããªãã£ãåäžãããããšãã§ããŸãã
äŸãã°ãã¢ã³ã«ãŒåã¹ã³ãŒãã䜿çšããŠããã²ãŒã·ã§ã³ã¡ãã¥ãŒã®çŸåšã®ã»ã¯ã·ã§ã³ã匷調衚瀺ããããé害ãæã€ãŠãŒã¶ãŒã«è¿œå ã®ã³ã³ããã¹ããæäŸãããããããšãã§ããŸãã
3. Scroll-to-Textæ©èœã®å®è£
Scroll-to-textã¯ããŠã§ãããŒãžäžã®ç¹å®ã®ããã¹ãã«èªåçã«ã¹ã¯ããŒã«ããŠãã€ã©ã€ããããªã³ã¯ããŠãŒã¶ãŒãå ±æã§ããããã«ããæ©èœã§ãããã®æ©èœã¯ãã°ãã°JavaScriptã䜿çšããŠå®è£ ãããŸãããã¢ã³ã«ãŒåã¹ã³ãŒãã¯ããã€ãã®å Žåã«ãããŠãããã·ã³ãã«ã§ãšã¬ã¬ã³ããªè§£æ±ºçãæäŸã§ããŸãã
ããã¯ãããã¹ããããã¯ã®åšãã«ãŠããŒã¯ãªIDãäœæããããã«å¿ããŠ:targetã»ã¬ã¯ã¿ãé©çšããããšãå«ã¿ãŸã
4. ã€ã³ã¿ã©ã¯ãã£ããªãã¥ãŒããªã¢ã«ãšããã¥ã¡ã³ããŒã·ã§ã³
åã¹ããããã¢ã³ã«ãŒãªã³ã¯ã«é¢é£ä»ããããŠãããã¥ãŒããªã¢ã«ãäœæããããšãæ³åããŠã¿ãŠãã ããããŠãŒã¶ãŒãã¹ããããã¯ãªãã¯ãããšã察å¿ããã³ãŒãã¹ããããã説æãã¢ã³ã«ãŒåã¹ã³ãŒãã䜿çšããŠãã€ã©ã€ããããŸãã
ããã¯ãåŸæ¥ã®éçãªããã¥ã¡ã³ããŒã·ã§ã³ãšæ¯èŒããŠãããé åçã§ã€ã³ã¿ã©ã¯ãã£ããªåŠç¿äœéšãæäŸããŸãã
5. åçãªãã©ãŒã ãšãŠã£ã¶ãŒã
è€æ°ã¹ãããã®ãã©ãŒã ããŠã£ã¶ãŒãã§ã¯ãã¢ã³ã«ãŒåã¹ã³ãŒãã䜿çšããŠçŸåšã®ã¹ããããèŠèŠçã«ãã€ã©ã€ãããåã®ã¹ããããç¡å¹åãŸãã¯é衚瀺ã«ããããšãã§ããŸããããã«ãããæç¢ºã§çŽæçãªæ¹æ³ã§ãŠãŒã¶ãŒããã©ãŒã ã«å°ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããšãã§ããŸãã
é«åºŠãªãã¯ããã¯ãšèæ ®äºé
1. :targetãšä»ã®ã»ã¬ã¯ã¿ã®çµã¿åãã
:targetãä»ã®CSSã»ã¬ã¯ã¿ãšçµã¿åãããããšã§ãããè€éã§ã¿ãŒã²ãããçµã£ãã¹ã¿ã€ãªã³ã°ã«ãŒã«ãäœæã§ããŸãã
äŸãã°ã:not()ç䌌ã¯ã©ã¹ã䜿çšããŠãçŸåšã®ã¿ãŒã²ããã§ã¯ãªãèŠçŽ ãã¹ã¿ã€ãªã³ã°ã§ããŸãïŒ
section:not(:target) {
opacity: 0.5; /* Dim all sections except the current target */
}
ãŸãã¯ãåå«ã»ã¬ã¯ã¿ã䜿çšããŠãã¿ãŒã²ããèŠçŽ å ã®ç¹å®ã®èŠçŽ ãã¿ãŒã²ããã«ããããšãã§ããŸãïŒ
#my-section:target h2 {
color: red; /* Make the heading red when #my-section is targeted */
}
2. è€æ°ã¿ãŒã²ããã®åŠç
äžåºŠã«ã¿ãŒã²ããã«ã§ããèŠçŽ ã¯1ã€ã ãã§ããããšã«æ³šæããããšãéèŠã§ããæ°ããã¢ã³ã«ãŒãªã³ã¯ãã¯ãªãã¯ããããšãåã®ã¿ãŒã²ããã¯ãã¯ãã¿ãŒã²ããã§ã¯ãªããªããŸãã
è€æ°ã®ã¿ãŒã²ãããåæã«åŠçããå¿ èŠãããå Žåã¯ãããããJavaScriptãä»ã®ãã¯ããã¯ã«é Œãå¿ èŠããããŸãã
3. ã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé
ã¢ã³ã«ãŒåã¹ã³ãŒãã¯ã¢ã¯ã»ã·ããªãã£ãåäžãããããšãã§ããŸããããã®å®è£ ããã¹ãŠã®ãŠãŒã¶ãŒã«ãšã£ãŠæ¬åœã«ã¢ã¯ã»ã·ãã«ã§ããããšã確èªããããšãäžå¯æ¬ ã§ãã
- çŸåšã®ã¿ãŒã²ããã瀺ãæç¢ºãªèŠèŠçåå³ãæäŸããã
- ã¿ãŒã²ããã§ãªããšãã§ãã³ã³ãã³ããã¢ã¯ã»ã·ãã«ã§ããç¶ããããšãä¿èšŒããã
- ã¹ã¯ãªãŒã³ãªãŒããŒããã®ä»ã®æ¯æŽæè¡ã§å®è£ ããã¹ãããã
4. ããã©ãŒãã³ã¹ãžã®åœ±é¿
äžè¬çã«ãã¢ã³ã«ãŒåã¹ã³ãŒãã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã¯æå°éã§ããããããè€éãªCSSã»ã¬ã¯ã¿ã䜿çšããããå€§å¹ ãªã¹ã¿ã€ãªã³ã°ã®å€æŽãé©çšãããããå Žåã¯ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ããã¹ãããŠãå¿çæ§ãç¶æããããšã確èªããããšãéèŠã§ãã
ã¢ã³ã«ãŒåã¹ã³ãŒãã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
- èšè¿°çã§æå³ã®ããã¢ã³ã«ãŒåã䜿çšãããããã«ãããã³ãŒãå šäœã®æç¢ºæ§ãšä¿å®æ§ãåäžããŸãã
- CSSã»ã¬ã¯ã¿ãç°¡æœã§çãçµã£ããã®ã«ä¿ã€ãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ã®ããé床ã«è€éãªã»ã¬ã¯ã¿ã¯é¿ããŠãã ããã
- ãŠãŒã¶ãŒã«æç¢ºãªèŠèŠçãã£ãŒãããã¯ãæäŸãããã©ã®èŠçŽ ãçŸåšã¿ãŒã²ããã«ãªã£ãŠããããæç¢ºã«ããŠãã ããã
- å®è£ ã培åºçã«ãã¹ããããç°ãªããã©ãŠã¶ãããã€ã¹ã§æåŸ ã©ããã«åäœããããšã確èªããŠãã ããã
- ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ããèæ ®ããããŠãŒã¶ãŒã®ãã©ãŠã¶ãã¢ã³ã«ãŒåã¹ã³ãŒãããµããŒãããŠããªãå Žåã¯ãJavaScriptãä»ã®æè¡ã䜿çšããŠãã©ãŒã«ããã¯ã¡ã«ããºã ãæäŸããŠãã ããã
ã¢ã³ã«ãŒåã¹ã³ãŒãã®ä»£æ¿æ¡
ã¢ã³ã«ãŒåã¹ã³ãŒãã¯åŒ·åãªããŒã«ã§ãããåžžã«æè¯ã®è§£æ±ºçãšã¯éããŸãããå Žåã«ãã£ãŠã¯ãä»ã®æè¡ãããé©åãªããšããããŸãïŒ
- JavaScript: JavaScriptã¯ãè€éãªã€ã³ã¿ã©ã¯ã·ã§ã³ãç¶æ 管çãåŠçããããã®æãé«ãæè»æ§ãæäŸããŸãã
- CSSã¯ã©ã¹: ãŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ãä»ã®ã€ãã³ãã«åºã¥ããŠã¹ã¿ã€ãªã³ã°ãåçã«é©çšããããã«CSSã¯ã©ã¹ã䜿çšã§ããŸãããã®ã¢ãããŒãã§ã¯ãã¯ã©ã¹ã®è¿œå ãšåé€ã«JavaScriptãå¿ èŠã§ãã
- ç¶æ 管çã©ã€ãã©ãªïŒäŸïŒReact, Vue, AngularïŒ: ãããã®ã©ã€ãã©ãªã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ã管çããããã«å¿ããŠUIãæŽæ°ããããã®å ç¢ãªã¡ã«ããºã ãæäŸããŸãã
ãã©ãŠã¶ã®äºææ§
ã¢ã³ã«ãŒåã¹ã³ãŒãã®åºç€ã§ãã:targetç䌌ã¯ã©ã¹ã¯ã以äžãå«ãææ°ã®ãã©ãŠã¶ã§åºããµããŒããããŠããŸãïŒ
- Chrome
- Firefox
- Safari
- Edge
- Opera
ããããå€ãããŒãžã§ã³ã®Internet Explorerã§ã¯ãµããŒããéå®çã§ããããå šããªãå ŽåããããŸããå€ããã©ãŠã¶ããµããŒãããå¿ èŠãããå Žåã¯ãããªãã£ã«ã䜿çšãããããã©ãŒã«ããã¯ã¡ã«ããºã ãæäŸããå¿ èŠããããŸãã
:hasã»ã¬ã¯ã¿ã¯ããæ°ãããæ®éçãªãµããŒãããªãå ŽåããããŸãã
çµè«
CSSã¢ã³ã«ãŒåã¹ã³ãŒãã¯ãã¢ã¯ã»ã·ãã«ã§ä¿å®æ§ãé«ããã€ã³ã¿ã©ã¯ãã£ããªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãäœæããããã®è²ŽéãªããŒã«ã§ãããã®ä»çµã¿ãçè§£ãããã¹ããã©ã¯ãã£ã¹ãé©çšããããšã§ããã®åãæŽ»çšããŠãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããããŠã§ããµã€ãå šäœã®åè³ªãæ¹åããããšãã§ããŸãã
ããã¯äžèœè¬ã§ã¯ãããŸããããã¢ã³ã«ãŒåã¹ã³ãŒãã¯å€ãã®äžè¬çãªãŠã§ãéçºã®èª²é¡ã«å¯ŸããŠãã·ã³ãã«ã§ãšã¬ã¬ã³ããªè§£æ±ºçãæäŸããŸããã§ããããæ¬¡ã«ã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã¢ã¯ã»ã·ãã«ãªããã²ãŒã·ã§ã³ãäœæããããscroll-to-textæ©èœãå®è£ ãããããéã«ã¯ãã¢ã³ã«ãŒåã¹ã³ãŒãã詊ããŠã¿ãããšãæ€èšããŠãã ããã
ã©ããªCSSæ©èœã䜿çšããå Žåã§ããåžžã«ã¢ã¯ã»ã·ããªãã£ãããã©ãŒãã³ã¹ããããŠã¯ãã¹ãã©ãŠã¶äºææ§ãåªå ããããšãå¿ããªãã§ãã ããã