<details>
<summary>요약</summary>
<p>요약 내용 계속 보기 <br/> 요약 내용 계속 보기 </p>
</details>
<div>
<p>요약 내용 계속 설명보기 <br/> 요약 내용 계속 설명보기 </p>
</div>
HTML로 위와 같이 마크업을 하면, details는 위와 같은 Shadow DOM 구성을 가지고 있기 때문에 아래와 같이 가상돔의 내용이 보여지게 됩니다.
<details>
#shadow-root (user-agent)
<slot name="user-agent-custom-assign-slot" id="details-summary">
<summary>세부정부</summary>
<summary> reveal
</slot>
<slot name="user-agent-default-slot" id="details-content">
<p> reveal
</slot>
<summary>요약</summary>
<p>요약 내용 계속 보기 <br> 요약 내용 계속 보기 </p>
</details>
개발자 도구의 요소검사(F12)에서 위와 같은 Shadow DOM들을 보신적이 있으실 겁니다.
여기서 신기한 점은 CSS를 다음과 같이 선언해도 box-sizing: border-box가 적용되지 않고 content-box로 적용된다는 점입니다.
* { box-sizing: border-box; }
이유
<details> → shadow root → <slot> → <summary> 와 같이 상속이 이어지지만 일반적으로 box-sizing: border-box는 상속 속성이 아닐 뿐더러 *로 찾아내는 속성에 <slot>은 포함되어 있지 않기 때문입니다.
해결방법
https://github.com/whatwg/html/issues/3748 웹와치 공식 이슈에서 계속해서 논의되고 있습니다.
파이어폭스에서는 예상되로 상속이 진행되어 적용되며, details > *와 같은 방법으로 우회하기도 합니다.
감사합니다.
출처 : https://kittygiraudel.com/2021/08/23/shadow-roots-and-inheritance/
'HTML' 카테고리의 다른 글
HTML5 <details> 태그를 사용해서 Q&A 만들기 (0) | 2023.10.09 |
---|---|
strong 태그와 em 태그의 차이 (0) | 2021.06.27 |
당신이 모르는 유용한 HTML5 기능 4 가지 (0) | 2021.01.30 |
Template 엘리먼트 사용 (0) | 2020.07.25 |
닫기 이벤트 버튼에 대하여.. button vs a (0) | 2020.05.31 |
댓글