Range: getBoundingClientRect() ã¡ã½ãã
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
Range.getBoundingClientRect() ã¡ã½ããã¯ãç¯å²ã®ã³ã³ãã³ããå²ã DOMRect ãªãã¸ã§ã¯ããè¿ãã¾ããããã¯ãç¯å²å
ã®ãã¹ã¦ã®è¦ç´ ã®å¤æ¥é·æ¹å½¢ã®åãå²ãé·æ¹å½¢ã§ãã
ãã®ã¡ã½ããã¯ãããã¹ãããã¯ã¹å
ã®ã«ã¼ã½ã«ã¾ãã¯é¸æç¯å²ã®ãã¥ã¼ãã¼ã座æ¨ã決å®ããã®ã«æçã§ããè¿å¤ã®è©³ç´°ã«ã¤ãã¦ã¯ Element.getBoundingClientRect() ãåç
§ãã¦ãã ããã
æ§æ
getBoundingClientRect()
弿°
ãªãã
è¿å¤
ç¯å²å
ã®ãã¹ã¦ã®è¦ç´ ã®å¤æ¥é·æ¹å½¢ã®åãå²ã DOMRect ãªãã¸ã§ã¯ãã§ãã
ä¾
>HTML
<div id="highlight"></div>
<p>
ãã®ä¾ã§ã¯ãç¯å²ã®ã³ã³ãã³ãã®å¾ãã«ããã¤ã©ã¤ããé·æ¹å½¢ãé
ç½®ãã¦ãã¾ãã
ç¯å²ã®ã³ã³ãã³ãã¯<em>ããããå§ã¾ã</em>ã<em>ããã§çµãã</em>ã¾ã§ç¶ãã¾ãã夿¥ã¯ã©ã¤ã¢ã³ãé·æ¹å½¢ã¯ãç¯å²å
ã§é¸æããããã¹ã¦ã®ãã®ãæ ¼ç´ãã¾ãã
</p>
CSS
#highlight {
background: yellow;
position: absolute;
z-index: -1;
}
p {
width: 200px;
}
JavaScript
const range = document.createRange();
range.setStartBefore(document.getElementsByTagName("em").item(0));
range.setEndAfter(document.getElementsByTagName("em").item(1));
const clientRect = range.getBoundingClientRect();
const highlight = document.getElementById("highlight");
highlight.style.left = `${clientRect.x}px`;
highlight.style.top = `${clientRect.y}px`;
highlight.style.width = `${clientRect.width}px`;
highlight.style.height = `${clientRect.height}px`;
çµæ
仿§æ¸
| 仿§æ¸ |
|---|
| CSSOM View Module > # dom-range-getboundingclientrect > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
Range.getClientRects()- ç©å½¢ä»¥å¤ã®ç¯å²ï¼é¸æç¯å²ã次ã®è¡ã«æãè¿ãããå ´åãªã©ï¼ã«å¯¾ãããããç´°ããçµæElement.getBoundingClientRect()Document.caretPositionFromPoint()- ãã¥ã¼ãã¼ã座æ¨ããï¼ãã¼ãããªãã»ããï¼ãåå¾