自定义Web组件图像未显示



我一直在学习Brad Traversy关于Web组件的yt教程,他是一位内容丰富的好老师,我相信你们很多人都知道:(

我已经到了17分钟,尽管我遇到的问题是图像没有像教程中那样显示。。。

它们正在添加到文档流中。。。我能说出这一点是因为布局重新调整以适应图像的空间。。。只是图像没有显示。。。

为了进行比较,我直接在html中添加了一个类似性质的图像,效果很好。

不管怎样,这是我的代码。。。

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Web Components Example</title>
<style>
h3 {
color: purple;
}
</style>
</head>
<body>
<h3>Hello World... where's the images?!?!?</h3>

<!-- <user-card name="you oddo" avatar="https://randomuser.me/api/portraits/men/1.jpg"></user-card> -->
<user-card name="huik popp" avatar="38.jpg"></user-card>
<user-card name="som otha"></user-card>
<img src="95.jpg">
<style>h3 {color: green}</style>
<script src="userCard.js"></script>
</body>
</html>

和Javascript。。。UserCard.js:

const template = document.createElement('template');
template.innerHTML = `
<style>
h3 {
color: coral;
}
</style>
<div class="user-card">
<img />
<div>
<h3></h3>
</div>  
</div>
`;
class UserCard extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: 'open'});
this.shadowRoot.appendChild(template.content.cloneNode(true));
this.shadowRoot.querySelector('h3').innerText = this.getAttribute('name');
this.shadowRoot.querySelector('img').innerText = this.getAttribute('avatar');
}
}
window.customElements.define('user-card', UserCard);

我非常感谢在这方面的任何帮助。到目前为止,我一直很喜欢跟随本教程,我想了解视频中的情况。

非常感谢。

我在这里回答我的问题。。。

在userCard.js中,我有:

this.shadowRoot.querySelector('img').innerText = this.getAttribute('avatar');

应该是:

this.shadowRoot.querySelector('img').src = this.getAttribute('avatar');

告诉Brad他可以将代码缩短为:

class UserCard extends HTMLElement {
constructor() {
super()
.attachShadow({ mode: 'open'})
.innerHTML = `
<style>
h3 {
color: coral;
}
</style>
<div class="user-card">
<img />
<div>
<h3></h3>
</div>  
</div>
`;
...
}
);

相关内容

  • 没有找到相关文章

最新更新