【发布时间】:2019-12-31 20:25:42
【问题描述】:
我有一个自定义元素,其中包含一个包含插槽的 div。
在那个插槽中,我有 JS 脚本,我想在其中获取插槽父 div 的宽度。
我知道单词非常令人困惑:)。
<!doctype html>
<body>
<script>
customElements.define('user-card', class extends HTMLElement {
connectedCallback() {
this.attachShadow({mode: 'open'});
this.shadowRoot.innerHTML = `
<style>
.name {
font-size: 24px;
width:200px;
background-color: yellow
}
</style>
<div class="name">Name:
<slot name="username"></slot>
</div>
<div class="dob">Birthday:
<slot name="birthday"></slot>
</div>
`;
this.shadowRoot.styles = `
`
}
});
</script>
<user-card>
<span slot="username">
<script>
function abc(event) {
console.log('Expected: ', this.document.getElementsByTagName('user-card')[0].shadowRoot.querySelectorAll('div.name')[0].offsetWidth)
console.log('Result: ',event.target.parentElement.offsetWidth);
}
</script>
<div onclick="abc(event)">
Ritesh Rajput
</div>
</span>
<span slot="birthday">01.01.2001</span>
</user-card>
</body>
理想情况下两者都应该返回相同的值
console.log('Expected: ', this.document.getElementsByTagName('user-card')[0].shadowRoot.querySelectorAll('div.name')[0].offsetWidth)
console.log('Result: ',event.target.parentElement.offsetWidth);
【问题讨论】:
标签: javascript dom web-component shadow-dom custom-element