gpt4 book ai didi

css - 如何设置 Web 组件中最后一个开槽元素的样式

转载 作者:行者123 更新时间:2023-12-04 01:36:06 26 4
gpt4 key购买 nike

我有一个 web 组件,它有一个看起来像这样的模板......

<template>
<div class="jrg-app-header">
<slot name="jrg-app-header-1"></slot>
<slot name="jrg-app-header-2"></slot>
<slot name="jrg-app-header-3"></slot>
</div>
</template>

我基本上是想将最后一个插槽的内容设置为 flex:1;很有型。是否有一个 CSS 查询可以做到这一点?我试过一些 list
::slotted(*):last-child{
flex:1;
}

但它没有用。如何设置最后一个开槽对象的样式?

最佳答案

有关::slotted 的长答案,请参阅:::slotted CSS selector for nested children in shadowDOM slot

来自文档:https://developer.mozilla.org/en-US/docs/Web/CSS/::slotted

::slotted( <compound-selector-list> )


伪选择器放在方括号内: ::slotted(*:last-child)
注: :slotted(...)需要一个 简单 选择器 ( https://vegibit.com/css-selectors-tutorial/ )

  customElements.define('my-table', class extends HTMLElement {
constructor() {
let template = document.cloneNode(document.querySelector('#t1').content, true);
super()
.attachShadow({ mode: 'open' })
.append(template);
}
})
<template id="t1">
<style>
:host {
display: flex;
padding:1em;
}
::slotted(*:first-child) {
background: green;
}
::slotted(*:last-child) {
background: yellow;
flex:1;
}
::slotted(*:first-of-type) {
border: 2px solid red;
}
::slotted(*:last-of-type) {
border: 2px dashed red;
}
</style>
<slot name="column"></slot>
</template>

<my-table>
<div slot="column">Alpha</div><div slot="column">Bravo</div><div slot="column">Charlie</div>
</my-table>
<my-table>
<div slot="column">Delta</div><div slot="column">Echo</div>
</my-table>

JSFiddle游乐场: https://jsfiddle.net/CustomElementsExamples/whtjen3k/

使用 StackOverflow Search 可以找到更多与 SLOT 相关的答案: Custom Elements SLOTs

关于css - 如何设置 Web 组件中最后一个开槽元素的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59506128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com