Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/web-widget/vite-plugin-shadow-dom-css

Use CSS files in shadow dom
https://github.com/web-widget/vite-plugin-shadow-dom-css

Last synced: 3 months ago
JSON representation

Use CSS files in shadow dom

Lists

README

        

# vite-plugin-shadow-dom-css

Vite Shadow DOM CSS 插件。

虽然 Web Components 充满了希望,但如今要在工程中使用它将会面临非非常多的问题,而样式的工程化首当其冲。Vite 与其他流行构建工具并没有很好的解决这样的问题,而开发社区中只有零星的文章讨论到它,所以这个插件是一次解决问题的尝试。

- 能够将 CSS 插入到 Shadow DOM 中
- 开发环境支持热更新
- 可与 Vite 内置的 CSS 插件配合工作

## Web Components 技术下的 CSS 工程化问题

当你试图使用 Vite 作为构建工具来编写和 Web Components 相关的组件的时候,你会发现样式永远无法生效:

```js
import myStyle from './my-style.css';
export class MyElement extends HTMLElement {
constructor() {
this.attachShadow({ mode: 'open' });
myStyle(this.shadowRoot).mount();
this.shadowRoot.innerHTML = `

Hello world


`;
}
}
customElements.define('my-element', MyElement);
```

```html



/*...*/




#shadow-root

Hello world



```

在开发模式中,我们会在 `` 中得到由 Vite 生成的 ``;在生产模式中,我们将得到 .css 文件,这些 .css 文件需要有我们额外通过 `<link>` 标签输出。这两种模式都不能让 CSS 工作在 Shadow DOM 中,因为 Shadow DOM 是一个隔离的样式环境。

使用这个插件你可以让 CSS 按预期插入到 Shadow DOM 中:

```html
<html>
<head></head>
<body>
<my-element>
#shadow-root
<h1>Hello world</h1>
<style>
/*...*/