构图是一个赞助人,它允许我们在组件中定义某些部分由组件外部元素占据的部分。
这使我们的组件更加灵活,因为更难分离责任,从而避免创建将所有内容都封装在一行中的组件,因为黑色收银员系统
即使用户没有为组件提供必要的元素,我们有时需要组件来满足某些功能,但是我们这样做了吗?后备输入这一点。
我们将从一个基本示例开始,我们将创建一个称为ImageFilter的组件,该组件将某些过滤器应用于图像。
要使这个元素起作用,他需要一个图像,然后我们去看它。
import { LitElement, css, html } from 'lit';
export class ImageFilter extends LitElement {
static get properties() {
return {
filter: { type: String },
};
}
constructor() {
super();
this.filter = 'gray';
}
render() {
return html`
<div class="filter-${this.filter}">
<slot></slot>
</div>
`;
}
static get styles() {
return css`
:host {
min-width: 98%;
margin: 0 auto;
padding: 2rem;
text-align: center;
}
.filter-gray {
filter: grayscale(100%);
}
`;
}
}
window.customElements.define('image-filter', ImageFilter);
您可以看到的是一个组件网络,其最大的宽限于应用过滤器并声明一个允许我们制作构图的插槽。您可以看到完整的代码aquí
现在使用它,我们只需使用以下行
<image-filter>
<img style=" width: 50%;" src="./public/vite.svg" alt="vite logo"/>
</image-filter>
我们会得到以下结果
但是,如果我们没有图像,我们看不到组件所应用的效果,那么如果不存在,我们需要占据SON元素位置的东西,因此我们将使用火焰。 p>
要在我们的老虎机中创建火焰,我们应该simp
render() {
return html`
<div class="filter-${this.filter}">
<slot>
<img style="width: 50%" src="./src/assets/lit.svg" alt="Vite logo" />
</slot>
</div>
`;
}
如果未提供插槽外部内容,则内部内容将位于其位置,这些故障可行。因此,当我们以这种方式使用组件
<image-filter></image-filter>
我们可以看到以下结果
我希望您喜欢它,并且对许多事情来说都是Ostil,我已经在更复杂的组件(例如男人和Bysae Inputs)中使用了它此示例的示例是aquí