Window: getComputedStyle() ã¡ã½ãã
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
Window.getComputedStyle() ã¡ã½ããã¯ãã¢ã¯ãã£ããªã¹ã¿ã¤ã«ã·ã¼ããé©ç¨ãããããã®å¤ã«å«ã¾ããå¯è½æ§ã®ããåºæ¬çãªè¨ç®ã解決ããå¾ã®ãè¦ç´ ã®ãã¹ã¦ã® CSS ããããã£ã®å¤ãå«ããªãã¸ã§ã¯ããè¿ãã¾ãã
åã
ã® CSS ããããã£ã®å¤ã¯ãè¿ããã CSSStyleDeclaration ãªãã¸ã§ã¯ãã«ãã£ã¦æä¾ããã API ãä»ãã¦ã¢ã¯ã»ã¹ãããã CSS ããããã£åã§ã¤ã³ããã¯ã¹ãå¼ããã¨ã§ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã getComputedStyle ããè¿ãããå¤ã¯è§£æ±ºå¤ã§ãã
æ§æ
getComputedStyle(element)
getComputedStyle(element, pseudoElt)
弿°
element-
ãã®
Elementã®è¨ç®ããã¹ã¿ã¤ã«ãåå¾ãã¾ãã pseudoEltçç¥å¯-
ä¸è´ãããæ¬ä¼¼è¦ç´ ãæå®ããæååãå®å¨ããè¦ç´ ã®å ´åã¯çç¥ï¼ã¾ãã¯
nullï¼ã
è¿å¤
çãã CSSStyleDeclaration ãªãã¸ã§ã¯ãã§ãè¦ç´ ã®ã¹ã¿ã¤ã«ãå¤ããã¨èªåã§æ´æ°ããã¾ãã
注æäºé :
- è¿ããã
CSSStyleDeclarationãªãã¸ã§ã¯ãã«ã¯ãCSS ããããã£ã®å奿å®åããã³çç¥åã®ã¢ã¯ãã£ããªå¤ãå«ã¾ãã¾ããä¾ãã°ãè¿ããããªãã¸ã§ã¯ãã«ã¯ãborder-widthããã³border䏿¬æå®ããããã£åã«å ãã¦border-bottom-widthã®å¤ã®é ç®ãå«ã¾ãã¾ãã - è¿å¤ã¯ãæå³çã«ä¸æ£ç¢ºã«ãããå ´åãããã¾ããã»ãã¥ãªãã£ä¸ã®èª²é¡ã§ãããCSS å±¥æ´ã®æ¼æ´©ããé¿ããããããã©ã¦ã¶ã¼ã¯ã訪åãããªã³ã¯ã®è¨ç®æ¸ã¿ã¹ã¿ã¤ã«ã«ã¤ãã¦ãã¦ã¼ã¶ã¼ããªã³ã¯å
ã® URL ã訪åãããã¨ããªããã®ããã«å¤ãè¿ãã¦å½è£
ããå ´åãããã¾ãããã®å®è£
ã®ä¾ã«ã¤ãã¦ã¯ã Plugging the CSS history leak ããã³ Privacy-related changes coming to CSS
:visitedãåç §ãã¦ãã ããã - CSS ãã©ã³ã¸ã·ã§ã³ã®éã
getComputedStyle㯠Firefox ã§ã¯å ã®ããããã£ã®å¤ãè¿ãã¾ãããWebKit ã§ã¯æçµçãªããããã£ã®å¤ãè¿ãã¾ãã - Firefox ã§ã¯ãå¤
autoã®ããããã£ã¯ãå¤autoã§ã¯ãªãã使ç¨å¤ãè¿ãã¾ãããããã£ã¦ãheight:30pxã®è¦ç´ ã«top:autoããã³bottom:0ãé©ç¨ãããã®è¦ç´ ãheight:100pxã®å å«ãããã¯ã§å²ãã å ´åã Firefox ã®topã®è¨ç®å¤ã¯ 100 â 30 = 70 ã§ããããã70pxãè¿ããã¾ãã - äºææ§ã®çç±ãããã·ãªã¢ã«åãããè²å¤ã¯ãã¢ã«ãã¡ãã£ã³ãã«ã®å¤ãæ£ç¢ºã«
1ã®å ´åã¯rgb()è²ã¨ãã¦ããã以å¤ã®å ´åã¯rgba()è²ã¨ãã¦è¡¨ç¾ããã¾ããã©ã¡ãã®å ´åããåºåãæåã¨ãã¦ã«ã³ãã使ç¨ããå¤ãæ§æã使ç¨ããã¾ãï¼ä¾ãã°rgb(255, 0, 0)ï¼ã
è¿ããããªãã¸ã§ã¯ã㯠CSSStyleDeclaration åã§ãããè¦ç´ ã® style ããããã£ããè¿ããããªãã¸ã§ã¯ãã¨åãã§ãããã ãã2 ã¤ã®ãªãã¸ã§ã¯ãã¯ç®çãç°ãªãã¾ãã
getComputedStyleããåå¾ããããªãã¸ã§ã¯ãã¯èªã¿åãå°ç¨ã§ããã<style>è¦ç´ ã¾ãã¯å¤é¨ã¹ã¿ã¤ã«ã·ã¼ãã«ãã£ã¦è¨å®ããããã®ãå«ããè¦ç´ ã®ã¹ã¿ã¤ã«ãæ¤æ»ããããã«ä½¿ç¨ãã¾ããelement.styleãªãã¸ã§ã¯ãã¯ããã®è¦ç´ ã®ã¹ã¿ã¤ã«ãè¨å®ãããã JavaScript ã«ããæä½ãã°ãã¼ãã«ã®style屿§ããç´æ¥è¿½å ãããã¹ã¿ã¤ã«ãæ¤æ»ãããããããã«ä½¿ç¨ãã¾ãã
ä¾å¤
TypeError-
渡ããããªãã¸ã§ã¯ãã
Elementã§ã¯ãªãããpseudoEltãæå¹ãªæ¬ä¼¼è¦ç´ ã»ã¬ã¯ã¿ã¼ã§ã¯ãªããã::part()ã¾ãã¯::slotted()ã§ããå ´åãã¡ã¢: æå¹ãªæ¬ä¼¼è¦ç´ ã¨ã¯ãæ§æçã«é©åã§ãããã¨ãæãã¾ããä¾ãã°
::unsupportedã¯æ¬ä¼¼è¦ç´ ã¨ãã¦ã®å¯¾å¿ã¯ããã¾ããããæå¹ã¨å¤æããã¾ããããã«ãææ°ã® W3 æ¨æºã§ã¯::beforeã¨::afterã®ã¿ãæç¤ºçã«å¯¾å¿ãã¦ãã¾ããã CSS ã® WG èæ¡ã¯ãã®å¤ãå¶éãã¦ãã¾ããããã©ã¦ã¶ã¼ã®äºææ§ã¯æ§ã ããããã¾ããã
ä¾
>è¨ç®å¤ãåãåã
ãã®ä¾ã§ã¯ã <p> ã®è¦ç´ ã®ã¹ã¿ã¤ã«ãè¨å®ãã¦ãããgetComputedStyle() ã使ç¨ãã¦ãããã®ã¹ã¿ã¤ã«ãåå¾ãããããã <p> ã®ããã¹ãã³ã³ãã³ãã«åºåãã¾ãã
HTML
<p>Hello</p>
CSS
p {
width: 400px;
margin: 0 auto;
padding: 20px;
font: 2rem/2 sans-serif;
text-align: center;
background: purple;
color: white;
}
JavaScript
const para = document.querySelector("p");
const compStyles = window.getComputedStyle(para);
para.textContent =
`ãã® font-size ã®è¨ç®å¤ã¯ ${compStyles.getPropertyValue("font-size")} ã§ãã\n` +
`ãã® line-height ã®è¨ç®å¤ã¯ ${compStyles.getPropertyValue(
"line-height",
)} ã§ãã`;
çµæ
æ¬ä¼¼è¦ç´ ã®ä½¿ç¨
getComputedStyle ã¯æ¬ä¼¼è¦ç´ (ä¾ãã° ::after, ::before, ::marker, ::line-marker â the pseudo-element spec ãåç
§ãã¦ãã ãã) ããã¹ã¿ã¤ã«æ
å ±ãåå¾ãããã¨ãã§ãã¾ãã
<style>
h3::after {
content: " rocks!";
}
</style>
<h3>çæã³ã³ãã³ã</h3>
<script>
const h3 = document.querySelector("h3");
const result = getComputedStyle(h3, ":after").content;
console.log("çæã³ã³ãã³ã: ", result); // ' rocks!' ãè¿ã
</script>
仿§æ¸
| 仿§æ¸ |
|---|
| CSS Object Model (CSSOM) > # dom-window-getcomputedstyle > |