CSSãšJavaScriptã¯é£æºããŠæ©èœããããããã«ç¬èªã®é·æããããŸãããã€ã³ã¿ãŒãã§ã€ã¹ã®ã«ãã¯ã¢ã³ããã£ãŒã«ãå¶åŸ¡ããããã«CSSã䜿çšããã°ããã»ã©ããã©ãŒã«ããã¬ã©ã³ãã§ä¿¡é Œæ§ã®é«ãWebã¢ããªã±ãŒã·ã§ã³ã«ãªããšæããŸãããã€ã³ãã¯ä»¥äžã®éãã§ãã
- CSSã¯ããã®æ§è³ªäžãé害ã«åŒ·ããã¯ãããžãŒã§ããããã¯ãCSSããŒãµãŒãçè§£ã§ããªãããããã£ã«ééãããšããããåã«ç¡èŠããŠå ã«é²ãããšãæå³ããŸããèšãæãããšãCSSã䜿çšããŠãããã°ã©ããŒã¯ã¹ã¿ã€ã«ãé©çšããããããæ©èœããããšãæåŸ ããŸãã
- JavaScriptã¯ãã©ãŒã«ããã¬ã©ã³ããã¯ãããžãŒã§ã¯ãããŸãããJSã³ãŒãã®åäžã®æ§æãšã©ãŒã¯ãã¢ããªã±ãŒã·ã§ã³å šäœãç Žå£ããå¯èœæ§ããããŸããã€ãŸããJSã䜿çšããŠãµã€ãã®ã¹ã¿ã€ã«ã管çããå Žåã察å¿ããæ§é ã®æ©èœã確èªããå¿ èŠããããŸãã
JSã§ã¯ãªãCSSããã€äœ¿çšããããšãã質åã«çããéã«èæ ®ãã¹ãä»ã®å€ãã®èæ ®äºé ããããŸãã
CSSã¯ã察å¿ããJSãœãªã¥ãŒã·ã§ã³ãããã¯ããã«ç°¡åã§ãäœæãç°¡åãªçŽ æŽããããœãªã¥ãŒã·ã§ã³ãèšèšããããã®æ°ããæ¹æ³ãæäŸããŸããããã¯ãCSSã®æ©èœã®å€ããæããŸãïŒé·ç§»ãã«ã¹ã¿ã ããããã£ãã¢ãã¡ãŒã·ã§ã³ããã£ã«ã¿ãŒãæ°åŠã
ãã®æçš¿ã§ã¯ããŸã ç¥ããªããããããªãCSSã®ã¯ãŒã«ãªæ©èœã®ããã€ãïŒãã®ãã¡ã®ããã€ãã¯ããæè¿ã®ãã®ã§ãïŒã«ã€ããŠèª¬æããŸããã€ãŸããã¹ã ãŒãºãªã¹ã¯ããŒã«ãããããã£
position: stickyãããã³ãã®ä»ã®å¯èœæ§ã«ã€ããŠèª¬æããŸãããããã®å®è£
ã§ã¯ã以åã¯ç¬åµçãªJSã³ãŒããäœè¡ãèšè¿°ããå¿
èŠããããŸããã
1.ã¹ã ãŒãºãªã¹ã¯ããŒã«
以åã¯ãããŒãžã«ã¹ã ãŒãºãªã¹ã¯ããŒã«ãè£ åããã«ã¯ãæ°è¡ã®JSã³ãŒããå¿ èŠã§ããããããŠä»ããã®ã¿ã¹ã¯ã¯CSSã«ãã£ãŠã®ã¿è§£æ±ºããããšãã§ããŸãããŸããããã¯çŽ æŽãããããšã§ã¯ãããŸãããïŒããã§ãCSSããããã£ã䜿çšããŠã¹ã ãŒãºãªã¹ã¯ããŒã«ãå©çšã§ããŸã
scroll-behaviorã
ããã¯ãããã©ã®ããã«èŠãããã§ãïŒ
html {
scroll-behavior: smooth;
}

ã¹ã ãŒãºã¹ã¯ããŒã«ãå®è£
âããã CodePenäžã®äŸã§
ãããæžããŠããæç¹ã§ã¯ããã®ããããã£ã¯
scroll-behaviorå¯äžã®ChromeãšFirefoxã§ãµããŒããããŠããŸããEdgeãIEãSafariïŒãã¹ã¯ããããšã¢ãã€ã«ïŒã§ã¯ãŸã ãµããŒããããŠããŸããããã®ããããã£ã®ãµããŒãã®è©³çްã«ã€ããŠã¯ãã䜿çšã§ããŸããããåç
§ããŠãã ããã
2.ãã³çãèŠçŽ
èŠçŽ ã®åºå®ã¯ãç§ã®ãæ°ã«å ¥ãã®CSSæ©èœã®1ã€ã§ããéèŠãªã®ã¯ãããŒãžãã¹ã¯ããŒã«ããŠãã察å¿ããèŠçŽ ããã¥ãŒããŒãããæ¶ããªããšããããšã§ããããã§ãããŒãžäžã®èŠçŽ ãä¿®æ£ãããã
offsetToã«window.scrollYãJSã«é Œãå¿
èŠã¯ãããŸãããæè¿ã§ã¯ãCSSããããã£ãå©çšã§ããŸãposition: stickyã
header {
position: sticky;
top: 0;
}

ããã²ãŒã·ã§ã³ãã¥ãŒããŒãã®äžçžäžã®ãããã¯ãäŒç¬ŠããšããŒãžãã¹ã¯ããŒã«ãããšãæ¶ããªã
âããã§ã¯ãããããã£ã®äœ¿çšäŸã瀺ãCodePenãããžã§ã¯ããã
position: sticky
ãã®ããããã£ãæ£ãã䜿çšããã«ã¯ãããªãã®ã¢ã«ãŠã³ãã«èŠçŽ ã«åãŒã圱é¿ã®ç¹æ®æ§ãåãå¿ èŠããããŸããé©çšããããšãHTMLããŒãžã®æ§é ã圹å²ãæãããŸããã¡ãªã¿ã«ããããã®æ©èœãèæ ®ãããŠããªãã®ã¯äºå®ã§ããããã®çç±ã¯ããã®ããããã£ãæ©èœããªãå Žåãããããã§ãã
次ã®HTMLã³ãŒããèŠãŠã¿ãŸãããã
<main class="container">
<nav class="nav">
<ul>
<li>Home</li>
<li>About</li>
<li>Contact</li>
</ul>
</nav>
<div class="main-content">Main Content</div>
<footer class="footer">Footer</footer>
</main>
ã¡ãã¥ãŒïŒ
navãã®äŸã®ã¢ã€ãã ïŒã¯ããã®èŠªã¢ã€ãã ïŒãã®äŸã§ã¯ïŒãšéãªã£ãŠããé åã§ã®ã¿ä¿®æ£ã§ãmainãŸãããã®çµæãããããã£ã䜿çšããå Žåposition: stickyãèŠçŽ ã®2ã€ã®äž»èŠãªã¯ã©ã¹ãåºå¥ã§ããŸãã
- ãããã³ã°å¯èœãªèŠçŽ ïŒããã¯ãæã
ã¯ããããã£ãé©çšããå
ã®èŠçŽ ã§ãã
position: stickyïŒnavæã ã®å Žåã«ã¯ïŒããã®èŠçŽ ã¯ãæå®ãããäœçœ®ã«å°éãããŸã§èŠªèŠçŽ å ãç§»åããŸããããšãã°ã-ã«ããããšãã§ããŸãtop: 0pxã - ãããã³ã°å¯èœãªèŠçŽ ã³ã³ããïŒããã¯ããããã³ã°å¯èœãªèŠçŽ ãå«ãHTMLèŠçŽ ã§ããããã¯ããããã³ã°ãããã¢ã€ãã ãç§»åã§ããé åã§ãããã®ãã³ã³ãããã¯ããããã³ã°å¯èœãªã¢ã€ãã ãååšã§ããå¢çãå®çŸ©ããŸãã
ãã®æ©èœã䜿çšãããšããµã€ãã®äœ¿ãããããå€§å¹ ã«åäžããŸããããã¯ããŠãŒã¶ãŒãé »ç¹ã«ããŒãžãã¹ã¯ããŒã«ããå¿ èŠããããããžã§ã¯ãã«ç¹ã«åœãŠã¯ãŸããŸãã
ãã®æ©èœã¯ãã»ãŒ100ïŒ ã®ãã©ãŠã¶ãµããŒããåããŠããŸãã
3.ããã¹ãã®ããªãã³ã°
CSSã«ã¯ã2ã€ã®ãã°ãããããããã£ã
text-overflowããline-clampãŸãããšãããã«ãããããã¹ããããªãã³ã°ããåèªãæ
éã«åŠçãããšåæã«ãJavaScriptããã®ä»ã®è€éãªæ¹æ³ã䜿çšããŠãã®ãããªåé¡ã解決ããå¿
èŠããªããªããŸããã©ã¡ãã®ããããã£ãæ°ãããã®ã§ã¯ãããŸããããéåžžã«äŸ¿å©ã§ãã

ããã¹ããããªãã³ã°
âããã«ã¯ãããŸãCodePenäžã®äŸ
ã®ããããã£ã®è©³çްãŸããã話
text-overflowãline-clampã
âããã¹ããªãŒããŒãããŒããããã£
ãã®ããããã£ã¯ãããã¹ãã1è¡ã«åãŸããªãå Žåã«ããã¹ããåãæšãŠãå¿ èŠãããå Žåã«ãããã¹ãã衚瀺ããæ¹æ³ãå¶åŸ¡ããŸãããã®ãããªç¶æ³ã®äŸã¯ãäžã®å³ã®ã«ãŒãã®ããããŒã«ç€ºãããŠããŸããããã§ã¯ãæ§æã䜿çšã§ã
text-overflow: ellipsisãŸãâŠãããã«ãããããªãã³ã°ãããããã¹ãã®æåŸã«UnicodeæåïŒïŒã远å ãããŸãã
ããããã£
text-overflow: ellipsisããã®ä»äºãããããã«ã¯ãåãããããã£white-space: nowrapãšã䜿çšããå¿
èŠãããoverflow: hiddenãŸãã
.card-title {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
ãã®æ©èœã¯ãæè¿ã®ãã¹ãŠã®ãã©ãŠã¶ãŒã§ã»ãŒå®å šã«ãµããŒããããŠããŸãã
âã©ã€ã³ã¯ã©ã³ãç¹æ§
ãã®ããããã£ã¯ã1è¡ã§ã¯ãªããè€æ°è¡ã®ããã¹ããåŠçããå¿ èŠãããå Žåã«åœ¹ç«ã¡ãŸãïŒãã®ãããªããã¹ãã®äŸã¯ãäžã®å³ã®ã«ãŒãã®å 容ã§ãïŒãããã¯CSSãªãŒããŒãããŒã¢ãžã¥ãŒã«ã¬ãã«3æšæºã®äžéšã§ãããçŸåšã¯ãäœæ¥ãã©ãããã®ã¹ããŒã¿ã¹ã«ãªã£ãŠããŸããããã®ããããã£ã¯ããã¬ãã£ãã¯ã¹ãä»ããŠããŠããçŽ95ïŒ ã®ãã©ãŠã¶ã§ãã§ã«ãµããŒããããŠããŸã
-webkit-ã䜿çšããåã«ã衚瀺ãããæåæ°ãå¶åŸ¡ããæ©èœããªãããšãèæ
®ããããšãéèŠã§ãããããããšã«ããããã¯ä¿¡ããããªãã»ã©äŸ¿å©ã§ãã
ããã䜿çšããã«ã¯ã
display: -webkit-boxandããããã£ã䜿çšããŠå€ãflexboxå®è£
ã䜿çšããå¿
èŠããããŸã-webkit-box-orient: verticalãããã¯ãããã©ã®ããã«èŠãããã§ãïŒ
.card-description {
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
}
4.ã«ã¹ã¿ã CSSããããã£ïŒCSS倿°
JavaScriptã®äžçã§ã¯ãCSSããªããã»ããµïŒSassãLessãStylusãªã©ïŒã¯éåžžã«äŸ¿å©ã§äººæ°ã®ãããã¯ãããžãŒã§ããããªããã»ããµã¯CSSã®æ©èœãæ¡åŒµãã倿°ã颿°ãªã©ã䜿çšã§ããããã«ããŸããããããæè¿ã®Webèšèšè ã¯ãã«ã¹ã¿ã CSSããããã£ãŸãã¯CSS倿°ãšåŒã°ãã匷åãªæšæºCSSæ©èœã«ã¢ã¯ã»ã¹ã§ããŸãã
CSS倿°ã¯ãã¢ããªã®äžè²«æ§ãç¶æããDRYã®å®è£ ã«åœ¹ç«ã¡ãŸãããããã¯ãã¢ããªã±ãŒã·ã§ã³ããŒãã®éçºãšä¿å®ã容æã«ããŸãããããã®æ©èœã¯ãããªããã»ããµãæåããäž»ãªçç±ã®1ã€ã§ããããã«ã€ããŠè©³ããã¯ããã¡ããã芧ãã ããã
æšæºã®CSSæ©èœã䜿çšãããšã倿°ãäœæããããã®ããªããã»ããµãäžèŠã«ãªããŸãã倿°ã¯ãç§ãã¡ãæããä»ã®æšæºçãªCSSæ©èœãšåæ§ã«ãã«ã¹ã±ãŒãæ¹åŒã§æ©èœããŸãã
CSS倿°ã®äœæã¯éåžžã«ç°¡åã§ããã€ãŸãã倿°ã宣èšããã«
--ã¯ãååã®åã«2ã€ã®ããã·ã¥ïŒïŒãä»ããã ãã§ååã§ãããã®åŸã倿°ã®å€ãå¿
èŠãªå Žåã颿°ãåŒã³åºããvar()ã以åã«äœæããã倿°ãåŒæ°ãšããŠæž¡ãããŸããã芧ã®ãšããããã¹ãŠãéåžžã«åçŽã§ãã
:root {
--base: #ffc600;
--spacing: 10px;
--blur: 10px;
}
img {
padding: var(--spacing);
background: var(--base);
-webkit-filter: blur(var(--blur));
filter: blur(var(--blur));
}
.hl {
color: var(--base);
}
CSS倿°ã¯JavaScriptããæäœã§ããŸãã

CSS-倿°ã®äœ¿ãæ¹
âããããããJS-ã³ãŒãã®CSS-倿°ã管çã®äœ¿ç𿹿³ã瀺ãCodePenãäžã®äŸã§ã¯ã
5.ããŒã¯ããŒãã®ãµããŒããæäŸãã
Appleãæšå¹ŽmacOSã«ããŒã¯ããŒããå°å ¥ããŠä»¥æ¥ããŸãCSSãã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãã®ããŒãã®äœ¿çšãæ€åºããæ©èœãæäŸããŠä»¥æ¥ãå€ãã®å€§èŠæš¡ãªWebãããžã§ã¯ãïŒTwitterãGoogleããããªã©ïŒããã®ãããªããŒããååŸããŠããŸãã ïŒããã§æãããŒãããµããŒããããããžã§ã¯ãã®ãªã¹ãïŒãã
ããŒã¯ããŒãã¯ãWebããŒãžãè£ é£Ÿããããã®åãªãæ¹æ³ã§ã¯ãããŸãããããã¯æ¬åœã«äœäººãã®äººã ãã€ã³ã¿ãŒãããããµãŒãã£ã³ããã®ãå©ããããšãã§ããŸãã
ããã«ããã€ãã®åŒçšããããŸãã
ãããŠã客芳çãªçç±ã§ãããŒã¯ã¢ãŒããå¿ èŠãšãã人ã ãããŸãã圌ãã¯ãã®ã¢ãŒããé害è ã®ããã®ããŒã«ã®1ã€ãšããŠäœ¿çšããŠããŸããããšãã°ãç§ãã¡ã¯èŠåã®åŒ±ã人ã«ã€ããŠè©±ããŠããã
Thomas Steinerãã«ã¹ã¿ããŒãœãªã¥ãŒã·ã§ã³ãšã³ãžãã¢ãGoogleããã€ãã
ã¢ãªãŒã¯ã¢ãã·ã£ãŒçå矀ã§ãããã®ããã圌女ã¯äœãèããããçæ¹ã®ç®ã®èŠéã¯5床ã«å¶éãããŠããŸãã ïŒâŠïŒããŒã¯ã¢ãŒãã§ããŒãžã衚瀺ããããšã¯åœŒå¥³ã®åã®ç¯å²å ã«ãªããŸãããã®ã¢ãŒãã¯ãä»ã®äººã«ã圹ç«ã€å¯èœæ§ããããé çã®ãã人ããç §æãäžååãªéšå±ã®ã³ã³ãã¥ãŒã¿ãŒã®åã«åº§ããªããã°ãªããªã人ã®ããã«ãã€ã³ã¿ãŒãããã䜿çšããå¯èœæ§ãåºããŸããäœããéçºãããšãã«ãäžéšã®ç¹å¥ãªãŠãŒã¶ãŒã ãã«çŠç¹ãåœãŠãå Žåãããã¯åœŒãã ãã§ãªã圹ç«ã€ã§ãããã
ãã£ãŒã«ãºã¬ã€ãã«ãºããã¶ã€ããŒãè±åœæ¿åºã
ãŸãã補ææThomas SteinerãããããŒã¯ã¢ãŒãã®äœ¿çšããšãã«ã®ãŒã®ç¯çŽã«ã©ã®ããã«åœ¹ç«ã€ããåŠã¶ããšãã§ããŸãããïŒâŠïŒãåç¥ã®ããã«ãAMOLEDãã£ã¹ãã¬ã€ã§ããŒã¯ã¢ãŒãã䜿çšãããšãå€ãã®ãšãã«ã®ãŒãç¯çŽã§ããŸããYouTubeãªã©ã®äººæ°ã®ããGoogleã¢ããªã察象ãšããAndroidã®èª¿æ»ã§ã¯ãå Žåã«ãã£ãŠã¯æå€§60ïŒ ã®ãšãã«ã®ãŒç¯çŽã瀺ãããŠããŸããã
ãŠãŒã¶ãŒãããŒã¯ããŒããæå¹ã«ããŠãããã©ãããéç¥ããæ°ããCSSæ©èœã¯ãã¡ãã£ã¢æ©èœ
prefers-color-schemeã§ãããã§ã«ChromeãFirefoxãSafariãOperaãšäºææ§ããããŸãã
CSS倿°ãšçµã¿åããããšãWebéçºè ã¯ã蚪åè ãåçãªææã¢ãŒããç°¡åã«å©çšã§ããããã«ããããšãéåžžã«ç°¡åã«ãªããŸãã
:root {
--color: #222;
--background: #eee;
--text: 'default';
}
body {
color: var(--color);
background: var(--background);
}
body:after {
content: var(--text);
display: block;
text-align: center;
font-size: 3rem;
}
@media (prefers-color-scheme: light) {
:root {
--color: #222;
--background: #eee;
--text: 'light';
}
}
@media (prefers-color-scheme: dark) {
:root {
--color: #eee;
--background: #222;
--text: 'dark';
}
}

ããã€ã¹ã§äœ¿çšãããŠããããŒãã®èªåæ€åº
âãã®CodePenãããžã§ã¯ãã§ã¯ãããŒãžãã¶ã€ã³ã¯ãèŠèŽè ã䜿çšããŠããããŒãã«ãã£ãŠç°ãªããŸãã
6.æä»€ ãµããŒã
é·ãéãWebéçºè ã¯ãç¹å®ã®CSSæ©èœãçŸåšã®ãã©ãŠã¶ã§ãµããŒããããŠãããã©ããã確èªããããã«ããµãŒãããŒãã£ã®ãœãªã¥ãŒã·ã§ã³ïŒModernizr JSããŒã«ãªã©ïŒã«é ŒããããåŸãŸããã§ãããããšãã°ãèŠçŽ ããããã£ãæ§æãã
-webkit-line-clampããšã§ãããããã£ããã©ãŠã¶ã§ãµããŒããããŠãããã©ããã確èªã§ãããµããŒããããŠããªãå Žåã¯ããã©ãŒã«ããã¯ã䜿çšã§ããŸãã
ãã£ã¬ã¯ãã£ããCSS
@supportsã«è¡šç€ºãããåŸãCSSã³ãŒãããçŽæ¥ãã©ãŠã¶ãŒã®æ©èœã確èªã§ããããã«ãªããŸããã
ãã£ã¬ã¯ãã£ãã¯
@supportsã¡ãã£ã¢ã¯ãšãªãšéåžžã«ãã䌌ãŠããŸããããã¯ãæ¡ä»¶æã䜿çšããŠæ§ç¯ãããæ§ã
ãªçµã¿åããã®è¡šçŸããµããŒããANDãORãããŠNOTïŒ
@supports (-webkit-line-clamp: 2) {
.el {
...
}
}
ããã¯ããã©ãŠã¶ãããããã£ããµããŒãããŠãããã©ããã確èªããŸã
-webkit-line-clampããã®å Žåãã€ãŸããæ¡ä»¶ãtrueã§ããããšã倿ããå Žåããã£ã¬ã¯ãã£ãå
ã§å®£èšãããã¹ã¿ã€ã«ãé©çšãã@supportsãŸããææ°ã®ãã©ãŠã¶ã¯ãã¹ãŠ
ãã®æ©èœããµããŒãããŠããŸãã
çµæ
ãã®æçš¿ã§ã¯ãCSSã®äŸ¿å©ãªæ©èœã®ããã€ããåãäžããŸãããJSã䜿çšããã«ãCSSã®ã¿ã䜿çšããŠäœããå®è¡ã§ããå Žåã¯ãããããŠãã ããã
ããã³ããšã³ãã®çŸä»£ã®äžçã¯æ¥éã«å€åããŠãããç§ãã¡ã¯åžžã«ããžãã¹ãããéããããè¯ãããã®ã«åœ¹ç«ã€æ°ããæ©äŒãèªç±ã«å©çšã§ããŸããCSSã詊ããŠæ°ããããšãåŠã¶ããšã¯ãéåžžã«ãããããããã ãã§ãªããéåžžã«è峿·±ãããšã§ããããŸãã仿¥åŠãã æ°ããããšã詊ããŠã¿ãããšããå§ãããŸãã
以åã¯JavaScriptã®ã¿ã䜿çšããŠè§£æ±ºããã®ãšåãåé¡ã解決ã§ããæè¿ã®CSSæ©èœãç¥ã£ãŠããŸããïŒ
