标签: shadow-dom

如何在影子dom中使用全局css样式

阴影dom封装css样式,选择器不跨越阴影边界.

问题:如何在影子dom中使用全局常见的css样式?
(假设有一些常用的CSS样式将用于所有页面(例如:font-family,h1,h2,clear,reset ...),如何使它在阴影dom中工作?)

javascript web-component shadow-dom

11
推荐指数
2
解决办法
6272
查看次数

从外面影子DOM样式

我正在寻找一种从外部设计阴影DOM的方法.例如,我想将所有'span.special'元素中所有文本的颜色设置为RED.包括来自shadow DOM的'span.special'元素.我怎么能这样做?

以前为此目的有:: shadow伪元素和/ deep / combinator aka >>>.所以我可以写一些像

span.special, *::shadow span.special {
    color: red
}
Run Code Online (Sandbox Code Playgroud)

但是现在:: shadow,/ deep />>>已被弃用.那么,我们有什么替代它们?

javascript css html5 styling shadow-dom

11
推荐指数
4
解决办法
3258
查看次数

如何将ngStyle应用于:组件中的host元素?

我有这样的事情:

import { Component, OnInit, Input } from '@angular/core';

@Component({
    selector: 'column',
    template: '<ng-content></ng-content>'
})
export class ColumnComponent {

    @Input() columnWidth: string = '0';        

    constructor() {}
}
Run Code Online (Sandbox Code Playgroud)

我想申请财产columnWidth时[ngStyle]

<ng-content></ng-content>
Run Code Online (Sandbox Code Playgroud)

父元素,做这样的事情:

<div [ngStyle]="{'width': columnWidth+'px'}" > ....
Run Code Online (Sandbox Code Playgroud)

我知道如何将样式应用于主机元素:

:host {  /*styles*/  }
Run Code Online (Sandbox Code Playgroud)

但我不知道将参数传递给它.

shadow-dom angular2-template angular

11
推荐指数
2
解决办法
5123
查看次数

从 Shadow DOM 中获取 GetElementById

我有一个带有 shadow DOM 的自定义元素,它侦听属性target更改。
target应该是我的组件应该附加到的元素的 ID。

我试过使用querySelectorgetElementById来获取外部 DOM 的元素,但它总是返回null.

console.log(document.getElementById(target));
console.log(document.querySelector('#' + target));
Run Code Online (Sandbox Code Playgroud)

以上两者都返回null

有没有办法从 shadow DOM 中获取对父文档中元素的引用?

javascript web-config shadow-dom

11
推荐指数
1
解决办法
1万
查看次数

有什么方法可以使用javascript或css在firefox中删除图片中的图片?

<Video>由于某些认证要求,我想禁用我网站标签的画中画功能,但 Firefox 不允许关闭。任何帮助,将不胜感激。

注意:我还添加了disablePictureInPicture属性,但它仍然不适用于 Firefox。

 <video width="400" src="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" controls  disablePictureInPicture></video>
Run Code Online (Sandbox Code Playgroud)

javascript firefox html5-video shadow-dom firefox-developer-tools

11
推荐指数
1
解决办法
4715
查看次数

使用支持 Shadow DOM 的纯 JavaScript 模拟 Tab 键按下

注意:这里和其他地方都存在现有问题,但它们都是特定于 jQuery 的,并且没有涵盖纯 JavaScript 的规范答案,包括对 Web 组件的支持。

我想模拟按 Tab 键,以便焦点转移到 Tab 键顺序中的下一个元素。下一个元素可以是任何 HTML 可聚焦的 HTML 元素或带有tabindex="0". 这也需要在某些后代 HTML 元素可能是具有影子 DOM 的自定义 Web 组件的情况下起作用。

潜在的解决方案可能是触发按键事件或迭代后代节点以寻找可聚焦的节点。

javascript tabindex web-component focusable shadow-dom

11
推荐指数
1
解决办法
7031
查看次数

Web组件中阴影dom的外部样式表

我正在学习带阴影根的Web组件,如果可以通过开箱即用的代码加载外部样式表,似乎无法在谷歌上找到它?我还没有使用聚合物或任何其他Web组件库(还).代码如下:

<script src="../../libs/jquery-2.1.1.min.js"></script>
<script>
    var hollaProto = Object.create(HTMLElement.prototype);
    hollaProto.createdCallback = function () {
        var shadow = this.createShadowRoot();
        var content = document.querySelector('link[rel=import]').import.querySelector("div");

        $("button[data-command=holla]", content).on("click", function () { alert("Holla!"); });

        shadow.appendChild(content);
    };
    var hollaWidget = document.registerElement("holla-back", {
        prototype: hollaProto
    });
</script>
<div class="holla-back">
    <button data-command="holla">Holla!</button>
</div>
Run Code Online (Sandbox Code Playgroud)

如果我将我的链接标记放在第一个脚本标记之上,我将整个网络时代设置为样式,而不是Web组件.

如果我把它放在它下面div.holla-back没有任何风格.

如何将外部样式表与Web组件一起使用?

javascript html5 web-component shadow-dom

10
推荐指数
1
解决办法
2950
查看次数

需要帮助理解Shadow DOM

阅读有关Shadow DOM的文章和教程,我遇到了一个让我感到困惑的描述:

"Shadow DOM指的是浏览器将DOM元素子树包含在文档呈现中的能力,但不包含在主文档DOM树中."

那么影子树不是DOM树的一部分?但浏览器仍会看到它并呈现其内容?

javascript dom shadow-dom

10
推荐指数
2
解决办法
1066
查看次数

编写v1嵌套Web组件

我是webcomponents的新手.由于web组件的v1可用,我从那里开始.我已经在网上阅读了关于他们的各种帖子.我对正确编写它们特别感兴趣.我已经阅读了有关插槽并让它们正常工作的信息,尽管我的努力并未导致按照我的预期方式工作的插槽web组件.

如果我编写了这样的嵌套Web组件,嵌套/开槽web组件中的DOM不会插入父级的插槽中:

<parent-component>
  <child-component slot="child"></child-component>
</parent-component>
Run Code Online (Sandbox Code Playgroud)

这是父webcomponent HTML:

<div id="civ">
  <style>
  </style>
  <slot id="slot1" name="child"></slot>
</div>
Run Code Online (Sandbox Code Playgroud)

由于每个web组件(父组件和子组件)都是独立的,因此我一直在创建它们:

customElements.define('component-name', class extends HTMLElement {
  constructor() {
    super();
    this.shadowRoot = this.attachShadow({mode: 'open'});
    this.shadowRoot.innterHTML = `HTML markup`
  }
})
Run Code Online (Sandbox Code Playgroud)

生成的DOM包括2个阴影根.我试图编写没有阴影dom的子/槽元素,这也不会导致托管孩子的父阴影dom.

那么,构建v1嵌套web组件的正确方法是什么?

javascript web-component shadow-dom custom-element

10
推荐指数
1
解决办法
4761
查看次数

选择影子根中的元素

我想更改隐藏在影子根中的元素的属性。由于项目的性质,我无法直接引用 JS 中的文档,我只能使用自定义类(不适用于影子根)或 jQuery,但我不知道如何编写指向该文件的路径元素。

该元素没有“部分”,因此我无法在选择器中使用它。

我已经尝试过的 - 我选择了shadow上方的最后一个元素并引用了它的shadowRoot,然后我尝试通过它的id找到封装的元素。我正在devtool中测试它,到目前为止还没有成功。

$("#root_ptcschartline-7-bounding-box".shadowRoot).find("#chart-line")
  .css('padding','100px');
Run Code Online (Sandbox Code Playgroud)

html 片段:

html css jquery shadow-dom

10
推荐指数
1
解决办法
1万
查看次数