标签: web-component

什么是:: shadow和/ deep /的替代品?

https://www.chromestatus.com/features/6750456638341120中所述,这两个穿孔阴影的组合器已经被弃用了.
那么实现同样的东西是什么,或者这个阴影穿透功能已被完全抛弃了?

web-component web shadow-dom

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

如何在多个Angular 2项目之间共享Angular 2组件?

理想情况下,我想创建一个独立的Angular 2组件(带有测试),然后在两个或三个不同的Angular 2站点之间重用它.实现这一目标的好方法是什么?还有一个额外的问题 - 是否存在任何第三方Angular 2组件?

javascript web-component angular

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

仅在父元素上指定维度时继承维度

我正在使用Web组件polyfill为API开发一堆自定义元素,我遇到了麻烦.

其中一个元素可能包含一个<img>或一个<canvas>元素.如果没有为自定义元素指定维度,则它应该是子元素的默认大小.如果指定了一个或多个维度,则它们应由子元素继承.

对于我的第一次努力,我认为CSS inherit值足够好:

my-el img, my-el canvas {
    width: inherit;
    height: inherit;
    max-width: inherit;
    min-width: inherit;
    max-height: inherit;
    min-height: inherit;
}
Run Code Online (Sandbox Code Playgroud)

但是,当百分比应用于宽度或高度时,这不起作用<my-el>.相反,子元素占用其父元素的相同百分比.

我已经尝试了各种其他尝试解决方案,并且搜索得无处可寻.我认为一个纯粹的CSS解决方案可能是不可能的,但我希望有人可以证明不是这样.

为了澄清,最终结果应该是<my-el>行为类似于内联替换元素本身,就像它<img>具有自己的内部维度一样.如果未在这些元素上设置宽度或高度,则默认为其内部尺寸.设置宽度或高度时,优先级和任何"内部"内容都会相应调整大小. (至少,我希望澄清!)

css web-component custom-element

25
推荐指数
2
解决办法
2399
查看次数

如何使用 swiper 9 和 Angular

我实际上正在迁移到 Angular 15,并看到swiper 9 已经退出了

它被写为一个简单npm i swiper且应该有效的方法,因为

所有主要浏览器和几乎所有框架都支持自定义元素。

但我有点迷失了,因为我无法再将其导入模块中

有人知道如何将最新的v9.0.0^swiper 版本与 Angular 一起使用吗?

web-component custom-element angular swiper.js

23
推荐指数
4
解决办法
3万
查看次数

框架不可知论是什么意思?

这句话我听了很久了。我也读了几篇文章,但我仍然无法理解它的实际含义。我总是看到他们给出一些框架名称。但我想了解它的含义以及它为何出现。有人能帮我一下吗?

frameworks web-component micro-frontend

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

处理聚合物元素遗传的最佳方法

给出如下元素:

<polymer-element name="custom-element">
    <template>
        <style>
            #container {
                color: red;
            }
        </style>
        <div id="container" on-click="{{clickContainer}}">
            ... lots of other stuff here ...
        </div>
    </template>
    <script>
        Polymer('custom-element', {
            clickContainer: function() {

            }
        });
    </script>
</polymer-element>
Run Code Online (Sandbox Code Playgroud)

我想要另一个包装第一个的元素:

<polymer-element name="my-custom-element" extends="custom-element">
    <!-- extra styling -->
    <script>
        Polymer('my-custom-element', {
            clickContainer: function() {
                this.super();
            }
        });
    </script>
</polymer-element>
Run Code Online (Sandbox Code Playgroud)

我的问题:

  • 指定其他样式的最佳方法是什么?
  • 我可以将基本元素包装在额外的标记中(比如另一个容器)吗?
  • 我可以从基本元素中选择元素吗?像<content select=".stuff">基地的阴影标记一样.

html javascript css web-component polymer

21
推荐指数
1
解决办法
1832
查看次数

如何在React.JS中实现带有受控组件的动态表单?

当我controlled form components 在react.js官方网站的参考文献中查看示例时,我想知道如何实现一个form你能够remove以及add input它们是受控组件的动态元素?这甚至可能吗?

在示例中我们可以看到:

class NameForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = {value: ''};

    this.handleChange = this.handleChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  handleChange(event) {
    this.setState({value: event.target.value});
  }

  handleSubmit(event) {
    alert('A name was submitted: ' + this.state.value);
    event.preventDefault();
  }

  render() {
    return (
      <form onSubmit={this.handleSubmit}>
        <label>
          Name:
          <input type="text" value={this.state.value} onChange={this.handleChange} />
        </label>
        <input type="submit" value="Submit" />
      </form>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

由于我的工作性质,我经常发现自己必须实施这些形式.此外,我没有addremove input直接元素 - 我正在管理自定义组件,但为了简单起见,我要求基本的表单元素.

javascript web-component reactjs

21
推荐指数
2
解决办法
3万
查看次数

聚合物元素有CDN吗?

我想知道是否有任何聚合物元素的CDN,因为你必须总是下载元素,通过cdn导入它会更方便.在谷歌找不到任何?还有什么理由它不存在或只是因为它是如此新的?

web-component polymer

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

基于Shadow DOM root的字体大小css值

问题简述:

我正在寻找一种方法来设置基于字体大小的值(类似于将一些属性设置为em值)在阴影dom内相对于阴影主机的元素内,而不管阴影dom中父元素的字体大小.类似于rem-values的工作原理,但是阴影是root而不是html root.

这样做的原因是能够在一个地方缩放像小部件(插入阴影dom)的内容.如果可以通过这种方式缩放基于字体大小的属性,则可以在每个上下文中缩放整个窗口小部件,而无需设置大量css值以使其适合每个位置.

问题的详细描述:

我正在寻找一种基于DOM中的给定元素来调整文本大小(font-size)的方法,以便能够基于此包装元素缩放该元素内的不同内容部分(适用于小部件等).这不仅仅适用于实际文本,通常很好地基于font-size来设置很多css值,因此元素的可视化布局与文本的大小(如填充,边框半径和阴影)一致.如果一切都基于em值,这可能会有点混乱.如果元素中有多个级别的字体大小继承,并且我想在不改变第二级的情况下放大第一级,我需要放大dom中第一级的em,同时减少任何二级元素(基于第一级计算)使子元素的文本保持相同的大小.在许多情况下,这不是最佳的.

一个很好的解决方案是基于Root EM(rem),因此更改dom的一个级别不会影响子元素.但是,如果我想放大/缩小这个包装元素内的所有文本的大小(在一个地方)而不影响同一页面上的其他元素,我需要放大/缩小所有字体大小的rem值.包装元素内的元素.

我最近开始研究使用Shadow DOM和模板的Web组件.在模板标签中,css是封装的,因为该框/小部件/组件的设计可以独立设计,而不必考虑设计的其余部分,不需要的继承值等.最后是制作独立组件以构建网页的好方法.但是,如果我可以为模板本身设置一种模板根字体大小,那就太好了.因此,如果我将模板中的某些元素设置为font-size 2rem(或任何其他类似单位),那么该元素的字体大小将是模板的根字体大小的2倍,而不管主机中的字体大小如何使用该模板的元素,无论页面根目录的字体大小(html元素)如何.

当我在模板中使用rem-values进行测试时,它仍然基于页面根(html标签)font-size.我也测试了vw值,但这也是基于整个视口,而不仅仅是封装区域(阴影根).

我看过很多关于Shadow DOM的文章,但我还没有找到任何关于这个问题的解决方案.有什么建议?

会发生什么(简化示例):

<html style="font-size: 16px">
    <body style="font-size: 12px">
        I am 12px large

        <!-- em, based on the body in this case -->
        <div style="font-size: 1.5em">
            I am 18px large

            <div style="font-size: 1.5em">
                I am 27px large
            </div>
        </div>

        <!-- rem, based on the styles of the html element -->
        <div style="font-size: 1.5rem">
            I am 24px large

            <div style="font-size: 1.5rem">
                I am 24px large
            </div>
        </div>
    </body>
</html> …
Run Code Online (Sandbox Code Playgroud)

html css dom css3 web-component

20
推荐指数
1
解决办法
2625
查看次数

在Shadow DOM中使用React Component时,单击事件不会触发

我有一个特殊情况,我需要使用Web组件封装React组件.设置似乎很直接.这是React代码:

// React Component
class Box extends React.Component {
  handleClick() {
    alert("Click Works");
  }
  render() {
    return (
      <div 
        style={{background:'red', margin: 10, width: 200, cursor: 'pointer'}} 
        onClick={e => this.handleClick(e)}>

        {this.props.label} <br /> CLICK ME

      </div>
    );
  }
};

// Render React directly
ReactDOM.render(
  <Box label="React Direct" />,
  document.getElementById('mountReact')
);
Run Code Online (Sandbox Code Playgroud)

HTML:

<div id="mountReact"></div>
Run Code Online (Sandbox Code Playgroud)

这样安装正常,点击事件有效.现在,当我在React Component周围创建一个Web Component包装器时,它正确呈现,但click事件不起作用.这是我的Web组件包装器:

// Web Component Wrapper
class BoxWebComponentWrapper extends HTMLElement {
  createdCallback() {
    this.el      = this.createShadowRoot();
    this.mountEl = document.createElement('div');
    this.el.appendChild(this.mountEl);

    document.onreadystatechange = () => {
      if (document.readyState …
Run Code Online (Sandbox Code Playgroud)

javascript web-component shadow-dom reactjs custom-element

20
推荐指数
3
解决办法
2925
查看次数