从外部传递并应用css类到lit元素

dsf9zpds  于 2023-08-09  发布在  其他
关注(0)|答案(1)|浏览(135)

你好,我正试图从外部传递css并应用于lit-element。我在lit-element上使用了set属性,元素应该应用这个属性的样式
问题是,lit属性只将props读取为字符串,而样式对lit-element没有影响。
这里是lit代码

  1. import { LitElement, html, css } from "lit";
  2. export class MyElement extends LitElement {
  3. static properties = {
  4. classes: { type: String }
  5. };
  6. static styles = css`
  7. .root {
  8. background-color: aliceblue;
  9. color: darkgreen;
  10. }
  11. `;
  12. css;
  13. render() {
  14. return html`
  15. <div class="root ${this.classes}">
  16. <slot></slot>
  17. <p>Hello from my template.</p>
  18. </div>
  19. `;
  20. }
  21. }
  22. customElements.define("my-element", MyElement);

字符串
我使用vue来使用lit-element我创建了style“.myStyle”,这个类将被传递给lit-element属性,name作为类,代码如下所示

  1. <template>
  2. <div id="app">
  3. <my-element classes="myStyle">
  4. <p>slot of my element</p>
  5. </my-element>
  6. </div>
  7. </template>
  8. <script>
  9. import "./MyElement.js";
  10. export default {
  11. name: "App",
  12. };
  13. </script>
  14. <style scoped>
  15. .myStyle {
  16. display: flex;
  17. }
  18. my-element > .root {
  19. color: red;
  20. }
  21. </style>


我也不能在点亮元素中使用下降样式,但我注意到下降样式只影响点亮元素的1级子元素。
是否可以将风格直接从主机传递到光元素,并将风格效果从主机传递到光元素?

  • 谢谢-谢谢
j0pj023g

j0pj023g1#

其中一个解决方案可以通过使用CSS伪选择器::part()来实现

  1. import { LitElement, html, css } from "lit";
  2. export class MyElement extends LitElement {
  3. static properties = {
  4. classes: { type: String }
  5. };
  6. static styles = css`
  7. .root {
  8. background-color: aliceblue;
  9. color: darkgreen;
  10. }
  11. `;
  12. css;
  13. render() {
  14. return html`
  15. <div part="modalWrapper" class="root ${this.classes}">
  16. <slot></slot>
  17. <p>Hello from my template.</p>
  18. </div>
  19. `;
  20. }
  21. }
  22. customElements.define("my-element", MyElement);

字符串
主持人的风格

  1. <template>
  2. <div id="app">
  3. <my-element>
  4. <p>slot of my element</p>
  5. </my-element>
  6. </div>
  7. </template>
  8. <script>
  9. import "./MyElement.js";
  10. export default {
  11. name: "App",
  12. };
  13. </script>
  14. <style scoped>
  15. my-element::part(modalWrapper) {
  16. background-color: 'green';
  17. }
  18. </style>


感谢@chellappan-分享文章

展开查看全部

相关问题