JavaScriptã§ã¹ã¿ã¤ã«ã¨ã¯ã©ã¹ãæ±ãæ¹æ³ãç¿å¾ããåã«ãããã«ã¯éè¦ãªã«ã¼ã«ãããã¾ããååçè§£ãã¦ãããã¨ã ã¨æãã¾ãããããã§ãè¨ã£ã¦ãããªããã°ãªããªããã¨ãããã¾ãã
ä¸è¬çã«ã¯è¦ç´ ãã¹ã¿ã¤ã«ããæ¹æ³ã2ã¤ããã¾ã:
- CSS ã§ã¯ã©ã¹ãçæããããã追å ãã¾ã:
<div class="..."> styleã«ç´æ¥ããããã£ãæ¸ãã¾ã:<div style="...">.
JavaScript ã¯ã¯ã©ã¹ã¨ style ããããã£ã®å¤æ´ä¸¡æ¹ãå¯è½ã§ãã
常㫠style ããã CSS ã¯ã©ã¹ãåªå
ãã¹ãã§ããå¾è
ã¯ãã¯ã©ã¹ã§ã¯ âå¦çããããªãâ å ´åã«ã®ã¿ä½¿ç¨ãã¹ãã§ãã
ä¾ãã°ãè¦ç´ ã®åº§æ¨ãåçã«è¨ç®ããJavaScript ãããããè¨å®ããå ´åã«ã¯ style ã¯åãå
¥ãããã¾ãã:
let top = /* è¤éãªè¨ç® */;
let left = /* è¤éãªè¨ç® */;
elem.style.left = left; // e.g '123px'
elem.style.top = top; // e.g '456px'
ããã¹ãã赤ã«ããããèæ¯ã¢ã¤ã³ã³ã追å ãããããªä»ã®ã±ã¼ã¹ã®å ´åã¯ãCSS ã§ã¹ã¿ã¤ã«ãè¨è¿°ããå¾ã«ããã®ã¯ã©ã¹ãé©ç¨ãã¾ãããã®ã»ããæè»ã§ãµãã¼ããããããªãã¾ãã
className 㨠classList
ã¯ã©ã¹ã®å¤æ´ã¯ãã¹ã¯ãªããã§æãé »ç¹ã«è¡ãããæä½ã®1ã¤ã§ãã
ãã£ã¨æãJavaScript ã«ã¯å¶éãããã¾ãã: "class" ã®ãããªäºç´èªã¯ãªãã¸ã§ã¯ãããããã£ã«ã¯ã§ãã¾ããã§ããããã®å¶éã¯ä»ã¯åå¨ãã¾ãããããã®å½æã¯ elem.class ã«ããã« "class" ããããã£ã¯æã¦ã¾ããã§ããã
ãããã£ã¦ãã¯ã©ã¹ã«å¯¾ãã¦ã¯é¡ä¼¼ããããããã£å "className" ãå°å
¥ããã¾ãã: elem.className 㯠"class" 屿§ã«å¯¾å¿ãã¾ãã
ä¾:
<body class="main page">
<script>
alert(document.body.className); // main page
</script>
</body>
ããä½ãã elem.className ã«å²ãå½ã¦ãå ´åãã¯ã©ã¹ã®æååå
¨ä½ãç½®ãæãã¾ãããããå¿
è¦ãªã¨ããããã¾ãããå¤ãã®å ´åã¯1ã¤ã®ã¯ã©ã¹ã®è¿½å /åé¤ããããã§ãã
ãã®ããã®å¥ã®ããããã£ãããã¾ã: elem.classList ã§ãã
elem.classList ã¯ã¯ã©ã¹ã 追å /åé¤/ãã°ã« ããããã®ã¡ã½ãããæã¤ç¹å¥ãªãªãã¸ã§ã¯ãã§ãã
ä¾:
<body class="main page">
<script>
// ã¯ã©ã¹ã追å ãã¾ã
document.body.classList.add('article');
alert(document.body.className); // main page article
</script>
</body>
ãããã£ã¦ãclassName ã§å®å
¨ãªã¯ã©ã¹æååå
¨ä½ãæä½ããããclassList ã§åã
ã®ã¯ã©ã¹ãæä½ãããã¨ãã§ãã¾ããã±ã¼ã¹ã«å¿ãã¦å¿
è¦ãªç©ã使ãã¾ãã
classList ã®ã¡ã½ãã:
elem.classList.add/remove("class")â ã¯ã©ã¹ã®è¿½å /åé¤ããã¾ããelem.classList.toggle("class")â ã¯ã©ã¹ãåå¨ããå ´åã¯åé¤ãã¾ãããªããã°è¿½å ãã¾ããelem.classList.contains("class")â ã¯ã©ã¹ãã®æç¡ããã§ãã¯ããtrue/falseãè¿ãã¾ãã
ããã«å ããclassList ã¯å復å¯è½ã§ãããªã®ã§ã以ä¸ã®ããã« for..of ã§ãã¹ã¦ã®ã¯ã©ã¹ã®åæãã§ãã¾ã:
<body class="main page">
<script>
for(let name of document.body.classList) {
alert(name); // main, and then page
}
</script>
</body>
è¦ç´ ã®ã¹ã¿ã¤ã«
ãããã㣠elem.style 㯠"style" 屿§ã«æ¸ããããã®ã«å¯¾å¿ãããªãã¸ã§ã¯ãã§ããelem.style.width="100px" ã®è¨å®ã¯ã屿§ style="width:100px" ãæã£ã¦ãããã®ããã«æ©è½ãã¾ãã
è¤æ°èªã®ããããã£ã¯ããã£ã¡ã«ã±ã¼ã¹ã使ããã¾ã:
background-color => elem.style.backgroundColor
z-index => elem.style.zIndex
border-left-width => elem.style.borderLeftWidth
ä¾:
document.body.style.backgroundColor = prompt('background color?', 'green');
-moz-border-radius ã -webkit-border-radius ã®ãããªãã©ã¦ã¶ãã¬ãã£ãã¯ã¹ãä»ããããããã£ãã¾ãåãã«ã¼ã«ã«å¾ãã¾ãã
ä¾ãã°:
button.style.MozBorderRadius = '5px';
button.style.WebkitBorderRadius = '5px';
ã¹ã¿ã¤ã«ããããã£ã®ãªã»ãã
ã¹ã¿ã¤ã«ããããã£ãå²ãå½ã¦ãå¾ãåé¤ãããå ´åãããã¾ãã
ä¾ãã°ãè¦ç´ ãé ãã«ã¯ elem.style.display = "none" ã¨ãã¾ãã
ããã¦ãå¾ã§ãããã»ããããã¦ããªãã£ããã®ããã«ãstyle.display ãåé¤ãããããããã¾ããããã®å ´åãdelete elem.style.display ãè¡ã代ããã«ç©ºè¡ãå²ãå½ã¦ãã¹ãã§ã: elem.style.display = "".
// ãã®ã³ã¼ããå®è¡ããã¨ã<body> ã "ç¹æ»
" ãã¾ã
document.body.style.display = "none"; // é ãã¾ã
setTimeout(() => document.body.style.display = "", 1000); // éå¸¸ã«æ»ãã¾ã
display ã空æååã«è¨å®ããå ´åããã©ã¦ã¶ã¯é常 CSS ã¯ã©ã¹ã¨çµã¿è¾¼ã¿ã®ã¹ã¿ã¤ã«ãé©ç¨ãã¾ããã¾ãã§ style ããããã£ãå
¨ããªããã®ããã«æ¯ãèãã¾ãã
ã¾ãããã®ããã®ç¹å¥ãªã¡ã½ãããããã¾ã, elem.style.removeProperty('style property'). 次ã®ããã«ãã¦ããããã£ã®åé¤ãã§ãã¾ãã:
document.body.style.background = 'red'; //background ã red ã«ãã¾ã
setTimeout(() => document.body.style.removeProperty('background'), 1000); // 1ç§å¾ã« background ãåé¤ãã¾ã
style.cssText ã§å®å
¨ã«æ¸ãç´ãé常ãåã
ã®ã¹ã¿ã¤ã«ããããã£ãå²ãå½ã¦ãããã« style.* ã使ãã¾ããdiv.style ã¯ãªãã¸ã§ã¯ãã§ãããèªã¿åãå°ç¨ã§ãããããdiv.style="color: red; width: 100px" ã®ãããªå®å
¨ãªã¹ã¿ã¤ã«ãè¨å®ãããã¨ã¯ã§ãã¾ããã
æååã§å®å
¨ãªã¹ã¿ã¤ã«ãè¨å®ããããã®ç¹å¥ãªããããã£style.cssText ãããã¾ã:
<div id="div">Button</div>
<script>
// ããã§ "important" ã®ãããªç¹å¥ãªã¹ã¿ã¤ã«ã®ãã©ã°ãè¨å®ãããã¨ãåºæ¥ã¾ã
div.style.cssText=`color: red !important;
background-color: yellow;
width: 100px;
text-align: center;
`;
alert(div.style.cssText);
</script>
ãã®ãããªä»£å ¥ã¯æ¢åã®ãã¹ã¦ã®ã¹ã¿ã¤ã«ãåé¤ããã®ã§ããã£ãã«ä½¿ããã¾ããã: ããã¯è¿½å ã§ã¯ãªãç½®æã§ããå ´åã«ãã£ã¦ã¯å¿ è¦ãªãã®ãåé¤ããå¯è½æ§ãããã¾ããããããéè¦ãªãã®ãåé¤ããªãã¨åãã£ã¦ããã¨ããä¾ãã°æ°ããè¦ç´ ã«å¯¾ãã¦ã¯å®å ¨ã«ä½¿ç¨ã§ãã¾ãã
屿§ãè¨å®ãããã¨ã§åããã¨ãã§ãã¾ãã: div.setAttribute('style', 'color: red...').
åä½ã«çæãã¾ããã
å¤ã« CSS ã®åä½ã追å ããã®ãå¿ããªãããã«ã¾ãããã
ä¾ãã°ãelem.style.top 㯠10 ã§ã¯ãªã 10px ã¨ããå¿
è¦ãããã¾ããããã§ãªãå ´ååä½ãã¾ãã:
<body>
<script>
// åä½ãã¾ãã!
document.body.style.margin = 20;
alert(document.body.style.margin); // '' (空æååããã®ä»£å
¥ã¯ç¡è¦ããã¾ã)
// ä» CSS ã®åä½(px) ã追å -- ããã¯åä½ãã¾ã
document.body.style.margin = '20px';
alert(document.body.style.margin); // 20px
alert(document.body.style.marginTop); // 20px
alert(document.body.style.marginLeft); // 20px
</script>
</body>
ãã©ã¦ã¶ãæå¾ã®è¡ã§ style.margin ã âã¢ã³ããã¯â ããstyle.marginLeft㨠style.marginTop ãã©ã®ããã«æ¨æ¸¬ãããæ³¨æãã¦ãã ããã
ç®åºã¹ã¿ã¤ã«: getComputedStyle
ã¹ã¿ã¤ã«ã夿´ããã®ã¯ç°¡åã§ãããããã©ããã£ã¦ããã åç § ãã¾ããï¼
ä¾ãã°ãè¦ç´ ã®ãµã¤ãºããã¼ã¸ã³ãè²ãç¥ãããã§ããã©ãããã¾ããï¼
style ããããã£ã¯ CSS ã«ã¹ã±ã¼ããªãã§ããã® "style" 屿§ã®å¤ã ããæä½ãã¾ãã
ãã®ãããelem.style ã§ã¯ CSS ã¯ã©ã¹ããæ¥ãã¹ã¿ã¤ã«ãåç
§ãããã¨ã¯ã§ãã¾ããã
ä¾ãã°ãããã§ã¯ style ã¯ãã¼ã¸ã³ãè¦ã¾ãã:
<head>
<style> body { color: red; margin: 5px } </style>
</head>
<body>
The red text
<script>
alert(document.body.style.color); // 空
alert(document.body.style.marginTop); // 空
</script>
</body>
â¦ã§ãããä»®ã«ãã¼ã¸ã³ã 20px å¢ããå¿
è¦ãããå ´åã¯ã©ãããã°ããã§ãããï¼ ãã®ããã«ç¾å¨ã®å¤ãå¿
è¦ã§ãã
ãã®ããã®ããï¼ã¤ã®ã¡ã½ãããããã¾ã: getComputedStyle.
æ§æã¯æ¬¡ã®éãã§ã:
getComputedStyle(element[, pseudo])
- element
- å¤ãèªã¿åãè¦ç´
- pseudo
- çä¼¼è¦ç´ (å¿
è¦ãªå ´åã«æå®)ãä¾ãã°
::beforeã空æååã¾ãã¯å¼æ°ãªãã¯è¦ç´ èªèº«ãæå³ãã¾ãã
çµæã¯ãelem.style ã®ããã«ã¹ã¿ã¤ã«ããããã£ãæã¤ãªãã¸ã§ã¯ãã§ãããããã§ã¯ãã¹ã¦ã® CSS ã¯ã©ã¹ã«é¢ãã¦ã®ãã®ã§ãã
ä¾:
<head>
<style> body { color: red; margin: 5px } </style>
</head>
<body>
<script>
let computedStyle = getComputedStyle(document.body);
// ä»ããããããã¼ã¸ã³ãè²ãèªã¿åãäºãã§ãã¾ã
alert( computedStyle.marginTop ); // 5px
alert( computedStyle.color ); // rgb(255, 0, 0)
</script>
</body>
CSS ã«ã¯2ã¤ã®ã³ã³ã»ãããããã¾ã:
- ç®åº ã¹ã¿ã¤ã«å¤(computed style value)ã¯ãCSS ã«ã¹ã±ã¼ãã®çµæã¨ãã¦ããã¹ã¦ã® CSS ã«ã¼ã«ã¨ CSS ç¶æ¿ãé©ç¨ãããå¾ã®å¤ã§ãã
height:1emã¾ãã¯font-size:125%ã®ããã«è¦ãã¾ãã - 解決 ã¹ã¿ã¤ã«å¤(resolved style value)ã¯è¦ç´ ã«æçµçã«é©ç¨ãããå¤ã§ãã
1emor125%ã®ãããªå¤ã¯ç¸å¯¾çãªãã®ã§ãããã©ã¦ã¶ã¯è¨ç®ãããå¤ãåããheight: 20pxãfont-size: 16pxã®ããã«ãã¹ã¦ã®åä½ãåºå®ã絶対çã«ãã¾ããã¸ãªã¡ã㪠ããããã£ã®å ´åãè§£æãããå¤ã¯widthï¼50.5pxã®ãããªæµ®åå°æ°ç¹ãæã¡ã¾ãã
ãã£ã¨ä»¥åã«ãgetComputedStyle ã¯ç®åºå¤ãåå¾ããããã«ä½ããã¾ãããã解決å¤ãã¯ããã«ä¾¿å©ã§ãããã¨ãåãããæ¨æºã夿´ããã¾ããã
ãããã£ã¦ãæè¿ã§ã¯ getComputedStyle ã¯å®éã«ã¯ããããã£ã®è§£æ±ºãããå¤ãè¿ãã¾ããé常ãã¸ãªã¡ã㪠ã«å¯¾ãã¦ã¯ px ã§ãã
getComputedStyle ã«ã¯å®å
¨ãªããããã£åãå¿
è¦ã§ãpaddingLeft ã marginTop ã borderTopWidth ã®ããã«ãå¸¸ã«æ£ç¢ºãªããããã£ã®æå®ãå¿
è¦ã§ãã ããããªãã¨ãæ£ããçµæãä¿è¨¼ããã¾ããã
ä¾ãã°ãpaddingLeft/paddingTop ããããã£ãããå ´åãgetComputedStyle(elem).padding ã§ã¯ä½ãåå¾ãããã§ããããï¼ä½ããªããã¾ãã¯ç¥ããã¦ããããã£ã³ã°ãã"çæããã" å¤ãããã§ããããï¼ããã«æ¨æºçãªã«ã¼ã«ã¯ããã¾ããã
ä»ã«ãçç¾ãããã¾ãã ãã¨ãã°ãä¸é¨ã®ãã©ã¦ã¶ï¼Chromeï¼ã§ã¯ä¸è¨ã®ããã¥ã¡ã³ãã«"10px" ã¨è¡¨ç¤ºããã¦ãã¾ãããä»ã®ä¸é¨ã®ãã©ã¦ã¶ï¼Firefoxï¼ã§ã¯ â ããã§ã¯ããã¾ãã:
<style>
body {
margin: 10px;
}
</style>
<script>
let style = getComputedStyle(document.body);
alert(style.margin); // Firefox ã§ã¯ç©ºæåã§ã
</script>
:visited ãªã³ã¯ãé©ç¨ãããã¹ã¿ã¤ã«ã¯è¡¨ç¤ºããã¾ãã!訪åããããªã³ã¯ã¯ :visited CSS çä¼¼ã¯ã©ã¹ã使ã£ã¦è²ä»ããããããããã¾ããã
ããããgetComputedStyle ã¯ãã®è²ã¸ã®ã¢ã¯ã»ã¹ãæä¾ãã¾ããããªããªããã¢ã¯ã»ã¹ã§ããã¨ãä»»æã®ãã¼ã¸ä¸ã§ãããä½ãã¹ã¿ã¤ã«ããã§ãã¯ãããã¨ã«ãã£ã¦ãã¦ã¼ã¶ããªã³ã¯ã訪ãããã©ãããç¥ããã¨ãã§ããããã§ãã
JavaScriptã§ã¯ã :visited ã«ãã£ã¦é©ç¨ãããã¹ã¿ã¤ã«ã¯è¦ãã¾ãããã¾ãã:visited ã«ã¸ãªã¡ããªã®å¤æ´ã¹ã¿ã¤ã«ãé©ç¨ãããã¨ãç¦æ¢ããã¨ããå¶éã CSS ã«ã¯ããã¾ããããã¯ããªã³ã¯ã訪åãããå ´åã«æªæã®ãããã¼ã¸ããã¹ããã¦ãã©ã¤ãã·ã¼ãç ´ãæ¹æ³ããªããã¨ãä¿è¨¼ããããã§ãã
ãµããª
ã¯ã©ã¹ã管çããããã«ã2ã¤ã®DOMããããã£ãããã¾ã:
classNameâ æååå¤ã§ãã¯ã©ã¹ã®ã»ããå ¨ä½ã管çããã®ã«è¯ãã§ããclassListâ ã¡ã½ããadd/remove/toggle/containsãæã¤ãªãã¸ã§ã¯ãã§, åã ã®ã¯ã©ã¹ã管çããã®ã«è¯ãã§ãã
ã¹ã¿ã¤ã«ã夿´ããããã«ä»¥ä¸ã®æ¹æ³ãããã¾ã:
-
styleããããã£ã¯ãã£ã¡ã«ã±ã¼ã¹åãããã¹ã¿ã¤ã«ãæã¤ãªãã¸ã§ã¯ãã§ããããã¸ã®èªã¿æ¸ãã¯ã"style"屿§ã®åã ã®ããããã£ã夿´ããã®ã¨åãæå³ãæã¡ã¾ããimportantãä»ã®çãããã®ãé©ç¨ããæ¹æ³ãç¥ãã«ã¯ â MDN ã«ã¡ã½ããã®ãªã¹ããããã¾ãã -
style.cssTextããããã£ã¯"style"屿§å ¨ä½ã«å¯¾å¿ããã¹ã¿ã¤ã«ã®å®å ¨ãªæååã§ãã
è§£æãããã¹ã¿ã¤ã«(ãã¹ã¦ã®ã¯ã©ã¹ã«é¢ãã¦ããã¹ã¦ã®CSSãé©ç¨ãããæçµçãªå¤ãè¨ç®ãããå¾)ãèªãããã«:
getComputedStyle(elem[, pseudo])ã¯ãããã®ã¹ã¿ã¤ã«ã©ã¤ã¯ãªãªãã¸ã§ã¯ããè¿ãã¾ããèªã¿åãå°ç¨ã§ãã

ã³ã¡ã³ã
<code>ã¿ã°ã使ã£ã¦ãã ãããè¤æ°è¡ã®å ´åã¯<pre>ãã10è¡ãè¶ ããå ´åã«ã¯ãµã³ãããã¯ã¹ã使ã£ã¦ãã ãã(plnkr, JSBin, codepenâ¦)ã