影子dom风格没有显示

问题描述 投票:1回答:1

通过此实例化的Web组件未正确设置样式:

connectedCallback() {
  const shadowRoot = this.attachShadow({ mode: 'open' });
  this.svg = document.createElement('svg');
  this.svg.style = `
    height: 80px;
    width: 80px;
    background-color: beige;
  `;
  shadowRoot.appendChild(this.svg);
}

但是,style属性会在Chrome DevTools中显示正确的数据。如果我以这种方式重写逻辑,那么样式就会出现。

connectedCallback() {
  const shadowRoot = this.attachShadow({ mode: 'open' });
  let htmlHolder = document.createElement('template');
  htmlHolder.innerHTML = `<svg></svg>`;
  shadowRoot.appendChild(htmlHolder.content.cloneNode(true));
  this.svg = shadowRoot.querySelector('svg');
  this.svg.style = `
      height: 80px;
      width: 80px;
      background-color: beige;
  `;
}

我不确定为什么这两个表现不同。

css web-component shadow-dom
1个回答
1
投票

如果使用createElement定义SVG元素,则应设置特定的SVG名称空间,即http://www.w3.org/2000/svg

然后你必须使用createElementNS()方法:

this.svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
© www.soinside.com 2019 - 2024. All rights reserved.