æ©è½æ¤åºã®å®è£
æ©è½æ¤åºã¯ããããã©ã¦ã¶ã¼ãããã³ã¼ãã®ãããã¯ã«å¯¾å¿ãã¦ãããã©ããã調ã¹ã対å¿ãã¦ããã (ã¾ãã¯ãã¦ããªãã) ã«å¿ãã¦ç°ãªãã³ã¼ããå®è¡ãããã¨ã§ããã©ã¦ã¶ã¼ã常ã«åä½ãããã©ã¦ã¶ã¼ã«ãã£ã¦ã¯ã©ãã·ã¥ãã¨ã©ã¼ãçºçããªãããã«ãã¾ãããã®è¨äºã§ã¯ãç¬èªã®åç´ãªæ©è½æ¤åºã®æ¸ãæ¹ãå®è£
ãã¹ãã¼ãã¢ããããããã®ã©ã¤ãã©ãªã¼ã®ä½¿ãæ¹ã @supports ãªã©ã®æ©è½æ¤åºã®ããã®ãã¤ãã£ãæ©è½ã«ã¤ãã¦è©³ãã説æãã¾ãã
| åææ¡ä»¶: | HTMLãCSSãJavaScript è¨èªã®ä¸»è¦é¨ã«éãã¦ãããã¨ã ãã©ã¦ã¶ã¼æ¨ªæãã¹ãã®åºæ¬ã«ã¤ãã¦é«æ°´æºã®èããæã£ã¦ãããã¨ã |
|---|---|
| ç®æ¨: | æ©è½æ¤åºã®æ¦å¿µã«ã¤ãã¦çè§£ããCSS 㨠JavaScript ã§é©åãªè§£æ±ºæ¹æ³ãå®è£ ã§ããããã«ããã |
æ©è½æ¤åºã®æ¦å¿µ
æ©è½æ¤åºã®æ ¹åºã«ããã¢ã¤ãã¢ã¯ãããã°ã©ã ãå®è¡ä¸ã®ãã©ã¦ã¶ã¼ãããç¹å®ã®æ©è½ã«å¯¾å¿ãã¦ãããã確ããããã®çµæã«å¿ãã¦ç°ãªãã³ã¼ããå®è¡ããã¨ãããã¨ã§ã対å¿ãã©ã¦ã¶ã¼ã¨é対å¿ãã©ã¦ã¶ã¼ã®ãããã§ã許容ã§ããæåã¨ãªãããã«ãããã¨ã§ãããããã®å¯¾çãããªããã°ããã®ç¹å®ã®æ©è½ã«å¯¾å¿ãã¦ããªããã©ã¦ã¶ã¼ã§ã¯ãµã¤ããæ£å¸¸ã«è¡¨ç¤ºãããªãã£ãããã¨ã©ã¼ãèµ·ããã¦ä½¿ãåæãæªåãããã§ãããã
ããã§ã¯ã JavaScript ã®ãããã°ã¨ã¨ã©ã¼å¦çã®è¨äºã§è§¦ããä¾ãæ¯ãè¿ã£ã¦ã¿ã¾ããããä½ç½®æ
å ± API (ãã©ã¦ã¶ã¼ãå®è¡ãã¦ãã端æ«ã®ä½ç½®æ
å ±ãè¿ãã¾ã)ã¯ã Navigator ãªãã¸ã§ã¯ãã«å«ã¾ãã geolocation ããããã£ã主ãªã¨ã³ããªã¼ãã¤ã³ãã¨ãã¦æã£ã¦ãã¾ããããã§ã以ä¸ã®ããã«ãã¦ãã©ã¦ã¶ã¼ãä½ç½®æ
å ±æ©è½ã«å¯¾å¿ãã¦ãããã©ãããæ¤åºã§ãã¾ãã
if ("geolocation" in navigator) {
navigator.geolocation.getCurrentPosition(function (position) {
// Google Maps API ãç¨ãã¦ç¾å¨ä½ç½®ããããä¸ã«è¡¨ç¤ºãã¾ã
});
} else {
// ä½ç½®æ
å ±ããªãã¦ããããã表示ã§ããããã«ãã¾ã
}
次ã«é²ãåã«ãã 1 ã¤ãä¼ãããã¦ãã ãããæ©è½æ¤åºã¨ãã©ã¦ã¶ã¼æ¤åºï¼ãµã¤ãã«ã¢ã¯ã»ã¹ãã¦ãããã©ã¦ã¶ã¼ã®ç¨®é¡ã®æ¤åºï¼ãæ··åããªãã§ãã ãããããã¯ãããªãå ´åã«ãé¿ããããã¹ãæªãã風ç¿ã§ãã詳ããã¯ã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãæååã使ç¨ãããã©ã¦ã¶ã¼ã®æ¤åº ï¼UA ã¹ãããã£ã³ã°ï¼ãåç §ãã¦ãã ããã
èªåèªèº«ã§æ©è½æ¤åºãã¹ããæ¸ã
ãã®ç¯ã§ã¯ã CSS 㨠JavaScript ã®ä¸¡æ¹ã§ãèªåèªèº«ã§æ©è½æ¤åºãã¹ããå®è£ ããæ¹æ³ãè¦ã¦ããã¾ãã
CSS
JavaScriptã§ element.style.ãããã㣠ï¼ä¾ paragraph.style.rotateï¼ã®åå¨ããã¹ããããã¨ã§ã CSS æ©è½ã®ãã¹ããæ¸ããã¨ãã§ãã¾ãã
å¤å
¸çãªä¾ã¯ããã©ã¦ã¶ã¼ã®ãµãã°ãªããã®å¯¾å¿ããã¹ããããã¨ã§ãã grid-template-columns 㨠grid-template-rows ã®ãµãã°ãªããã®å¤ã¨ã㦠subgrid ã«å¯¾å¿ãã¦ãããã©ã¦ã¶ã¼ã®å ´åãã¬ã¤ã¢ã¦ãã§ãµãã°ãªããã使ç¨ãããã¨ãã§ãã¾ããããã§ãªããã©ã¦ã¶ã¼ã§ã¯ãé常ã®ã°ãªããã使ç¨ãããã¨ãã§ãã¦ãåä½ã¯ãã¾ãããã¾ãããè¦ãç®ã¯ãã¾ãããããã¾ããã
ãã®ä¾ãç¨ããã¨ãå¤ã対å¿ãã¦ããå ´åã¯ãµãã°ãªããã®ã¹ã¿ã¤ã«ã·ã¼ããã対å¿ãã¦ããªãå ´åã¯é常ã®ã°ãªããã®ã¹ã¿ã¤ã«ã·ã¼ããå«ãããã¨ãã§ãã¾ãããã®ããã«ã¯ã HTML ãã¡ã¤ã«ã®è¦åºãã« 2 ã¤ã®ã¹ã¿ã¤ã«ã·ã¼ããå«ãããã¨ãã§ãã¾ãã 1 ã¤ã¯ãã¹ã¦ã®ã¹ã¿ã¤ã«è¨å®ããã 1 ã¤ã¯ãµãã°ãªããã«å¯¾å¿ãã¦ããªãå ´åã®æ¢å®ã¬ã¤ã¢ã¦ããå®è£ ãããã®ã§ãã
<link href="basic-styling.css" rel="stylesheet" />
<link class="conditional" href="grid-layout.css" rel="stylesheet" />
ããã§ã¯ã basic-styling.css ããã¹ã¦ã®ãã©ã¦ã¶ã¼ã«é©ç¨ãããã¹ã¿ã¤ã«è¨å®ãå¦çãã¾ããããã« 2 ã¤ã® CSS ãã¡ã¤ã« grid-layout.css 㨠subgrid-layout.css ãããã¾ãããããã«ã¯ãã©ã¦ã¶ã¼ã®å¯¾å¿ã¬ãã«ã«å¿ãã¦é¸æçã«é©ç¨ããã CSS ãæ ¼ç´ããã¦ãã¾ãã
JavaScript ã使ç¨ãã¦ãµãã°ãªããå¤ã®å¯¾å¿ããã¹ããããã©ã¦ã¶ã¼ã®å¯¾å¿ã«åºã¥ãã¦æ¡ä»¶ä»ãã¹ã¿ã¤ã«ã·ã¼ãã® href ãæ´æ°ãã¾ãã
以ä¸ã® JavaScript ã§æºãããã <script></script> ãææ¸å
ã«è¿½å ãã¾ãã
const conditional = document.querySelector(".conditional");
if (CSS.supports("grid-template-columns", "subgrid")) {
conditional.setAttribute("href", "subgrid-layout.css");
}
æ¡ä»¶æã§ã¯ã grid-template-columns ããããã£ã subgrid å¤ã«å¯¾å¿ãã¦ãããã©ãããã CSS.supports() ã使ç¨ãã¦ãã¹ããã¦ãã¾ãã
@supports
CSS ã«ã¯ãã¤ãã£ãã®æ©è½æ¤åºã¡ã«ããºã ãããã¾ãã @supports ã¢ããã«ã¼ã«ã§ããããã¯ã¡ãã£ã¢ã¯ã¨ãªã¼ã¨åãããã«åä½ãã¾ãããè§£å度ãç»é¢ã®å
å´ã縦横æ¯ãªã©ã®ã¡ãã£ã¢ç¹æ§ã«å¿ã㦠CSS ã鏿çã«é©ç¨ããã®ã§ã¯ãªãã CSS.supports() ã¨åãããã«ã CSS æ©è½ã対å¿ãã¦ãããã©ããã«ãã£ã¦ CSS ã鏿çã«é©ç¨ãã¾ãã
ä¾ãã°ãååã®ä¾ãæ¸ãæã㦠@supports ã使ç¨ãããã¨ãã§ãã¾ãã
@supports (grid-template-columns: subgrid) {
main {
display: grid;
grid-template-columns: repeat(9, 1fr);
grid-template-rows: repeat(4, minmax(100px, auto));
}
.item {
display: grid;
grid-column: 2 / 7;
grid-row: 2 / 4;
grid-template-columns: subgrid;
grid-template-rows: repeat(3, 80px);
}
.subitem {
grid-column: 3 / 6;
grid-row: 1 / 3;
}
}
ãã®ã¢ããã«ã¼ã«ãããã¯ã¯ãç¾å¨ã®ãã©ã¦ã¶ã¼ã grid-template-columns: subgrid; 宣è¨ã«å¯¾å¿ãã¦ããå ´åã«ã®ã¿ã CSS ã«ã¼ã«ãé©ç¨ãã¾ããå¤ãæå®ããæ¡ä»¶ãåä½ããããã«ã¯ãï¼ããããã£åã ãã§ãªãï¼å®å
¨ã«å®£è¨ãè¨è¼ããæå¾ã«ã»ãã³ãã³ãå«ããªãå¿
è¦ãããã¾ãã
ä»ã«ã @supports ã§ã¯ ANDãORãNOT ã®è«çæ¼ç®ãå©ç¨ã§ãã¾ãã
@supports not (grid-template-columns: subgrid) {
/* rules in here */
}
ããã¯ååã®ä¾ããã便å©ã§ããæ©è½æ¤åºããã¹ã¦ CSS ã§è¡ããã¨ãã§ãã JavaScript ã¯ä¸è¦ã§ããã¾ãããã¹ã¦ã®ãã¸ãã¯ãåä¸ã® CSS ãã¡ã¤ã«ã§å¦çãããã¨ãã§ããããã HTTP ãªã¯ã¨ã¹ããæ¸ãããã¨ãã§ãã¾ãããã®ããã CSS æ©è½ã®ãã©ã¦ã¶ã¼ã®å¯¾å¿ã夿ããã¡ã½ããã¨ãã¦æ¨å¥¨ããã¦ãã¾ãã
JavaScript
JavaScript ã®æ©è½æ¤åºãã¹ãã®ä¾ããã§ã«è¦ã¾ãããä¸è¬çã«ããã®ãããªãã¹ãã¯ããã¤ãããä¸è¬çãªãã¿ã¼ã³ã® 1 ã¤ã«ãã£ã¦è¡ããã¾ãã
æ¤åºå¯è½ãªæ©è½ã®ä¸è¬çãªãã¿ã¼ã³ã«ã¯ã以ä¸ã®ãããªãã®ãããã¾ãã
- ãªãã¸ã§ã¯ãã®ã¡ã³ãã¼
-
å ·ä½çãªã¡ã½ãããããããã£ï¼é常ã¯ãæ¤åºãã API ãä»ã®æ©è½ã使ç¨ããããã®ã¨ã³ããªã¼ãã¤ã³ãï¼ã親ãªãã¸ã§ã¯ãã«åå¨ãããã©ããã調ã¹ã¾ãã
å ã»ã©ã®ä¾ã§ã¯ã
navigatorãªãã¸ã§ã¯ãã«geolocationã¡ã³ãããããã©ããããã¹ããããã¨ã§ãä½ç½®æ å ±ã®å¯¾å¿ãæ¤åºããããã«ãã®ãã¿ã¼ã³ã使ç¨ãã¾ãããjsif ("geolocation" in navigator) { // Access navigator.geolocation APIs } - è¦ç´ ã®ããããã£
-
Document.createElement()ã使ã£ã¦ã¡ã¢ãªã¼å ã«è¦ç´ ã使ããããã«ããããã£ãåå¨ããã調ã¹ã¾ãããã®ä¾ã§ã¯ããã£ã³ãã¹ API ã®å¯¾å¿ãæ¤åºããæ¹æ³ã示ãã¦ãã¾ãã
jsfunction supports_canvas() { return !!document.createElement("canvas").getContext; } if (supports_canvas()) { // Create and draw on canvas elements } - è¦ç´ ã«ãããã¡ã½ããã®åºæã®è¿å¤
-
Document.createElement()ã使ç¨ãã¦ã¡ã¢ãªã¼å ã«è¦ç´ ã使ãããã®è¦ç´ ã«ã¡ã½ãããåå¨ããã調ã¹ã¾ããåå¨ããå ´åã¯ããã®ã¡ã½ãããè¿ãå¤ã調ã¹ã¾ãã - è¦ç´ ã«å²ãå½ã¦ãããããããã£å¤ã®ä¿æ
-
Document.createElement()ã使ç¨ãã¦ã¡ã¢ãªã¼å ã«è¦ç´ ã使ããããããã£ã«åºæã®å¤ãè¨å®ãããã®å¤ãä¿æããã¦ãããã©ããã調ã¹ã¾ãã
ããããããã¤ãã®æ©è½ã¯æ¤åºã§ããªããã¨ãç¥ããã¦ãããã¨ã«çæãã¦ãã ããããã®ãããªç¨éã§ã¯ãããªãã£ã«ã使ç¨ãããªã©ãå¥ã®ææ³ãç¨ããå¿ è¦ãããã¾ãã
matchMedia
ã¾ãã Window.matchMedia ã® JavaScript æ©è½ã«ã¤ãã¦ã触ãã¦ããããã¨æãã¾ããããã¯ã JavaScript å
ã§ã¡ãã£ã¢ã¯ã¨ãªã¼ãã¹ããå®è¡ããããã®ããããã£ã§ãããã®ããã«è¦ã¦ããã¾ãã
if (window.matchMedia("(max-width: 480px)").matches) {
// run JavaScript in here.
}
ä¾ãã°ã Snapshot ãã¢ã§ã¯ã Brick JavaScript ã©ã¤ãã©ãªã¼ã鏿çã«é©ç¨ãã UI ã¬ã¤ã¢ã¦ããå¦çããããã«ä½¿ç¨ãã¦ãã¾ãããå°ããªç»é¢ã¬ã¤ã¢ã¦ãï¼480px å¹
以ä¸ï¼ã®å ´åã®ã¿ä½¿ç¨ãã¦ãã¾ããæåã« media 屿§ã使ç¨ãã¦ããã¼ã¸å¹
ã 480px 以ä¸ã®å ´åã«ã®ã¿ Brick CSS ã使ç¨ãã¾ãã
<link
href="dist/brick.css"
rel="stylesheet"
media="all and (max-width: 480px)" />
ããã¦ã JavaScript ã§ä½åº¦ã matchMedia() ã使ç¨ãããã¨ã§ãå°ããªç»é¢ã¬ã¤ã¢ã¦ãã«ããå ´åã«ã®ã¿ Brick ã®ããã²ã¼ã·ã§ã³æ©è½ãå®è¡ãããã¨ãã§ãã¾ãï¼åºãç»é¢ã¬ã¤ã¢ã¦ãã§ã¯ããã¹ã¦ãä¸åº¦ã«è¦ããã¨ãã§ããã®ã§ãç°ãªããã¥ã¼éãç§»åããå¿
è¦ã¯ããã¾ããï¼ã
if (window.matchMedia("(max-width: 480px)").matches) {
deck.shuffleTo(1);
}
ã¾ã¨ã
ãã®è¨äºã§ã¯ãæ©è½æ¤åºã«ã¤ãã¦ãããªãã«è©³ããåãä¸ããä¸»ãªæ¦å¿µãèªã¿ãèªåèªèº«ã§æ©è½æ¤åºãã¹ããå®è£ ããæ¹æ³ã示ãã¾ããã
次ã¯èªåãã¹ãã«ã¤ãã¦è¦ã¦ããã¾ãã