当前位置: 首页 > 知识库问答 >
问题:

Web组件-扩展本机元素的样式

莫选
2023-03-14

我想扩展原生按钮元素,但不确定如何添加样式。在Google这里的例子中,他们不使用模板,因此fancy button自定义元素本身就是按钮,而不是添加包含按钮元素的模板和阴影DOM。如果我只是直接在shadowdom中添加一个按钮,那么扩展本机元素的目标似乎失败了,但我不知道如何设置和扩展本机元素的样式。如何创建一个自定义元素,它只是扩展为红色背景的本机按钮元素?

var style = `button { background-color: red; };
class FancyButton extends HTMLButtonElement {
  constructor() {
    super();
  }
customElements.define('fancy-button', FancyButton, {extends: 'button'});

共有1个答案

干旺
2023-03-14
  1. 由于您不需要使用shadowDOM,因此可以使用全局CSS
  2. 您可以在connectedCallback中设置样式:this。风格背景=“红色”
  3. 您可以动态创建一个样式标记,其唯一标识符作用于您的元素

有关所有3个示例,请参见JSFIDLE:https://jsfiddle.net/CustomElementsExamples/Lf829wpy/

重要的是自定义内置元素的符号

正确:

不正确:

...

错误的符号在Firefox中有效,但在Chrome中无效

Firefox处理具有自治元素符号的扩展内置元素
,但仅处理定义之前在DOM中创建的元素:

<fancy-button>Hello Fancy Red Button #1</fancy-button>

<script>
    class FancyButton extends HTMLButtonElement {
        constructor() {
            super();
        }

        connectedCallback() {
            this.style.background = 'red';
        }
    }

    customElements.define('fancy-button', FancyButton, { extends: 'button' });
</script>

<fancy-button>Hello Fancy Red Button #2</fancy-button>

 类似资料:
  • 扩展 Web 组件 Vue.js 是一个独立的前端框架,在浏览器中渲染时不需要基于 Weex 容器。因此,针对 Weex 平台扩展 Vue.js 的 Web 端组件,和直接使用 Vue.js 开发一个 Web 组件是一样的。具体的组件编写方法可以参考其官方文档:组件 ,另外建议使用 .vue 格式的文件编写组件,使用方法参考:单文件组件。 扩展内置组件 目前我们提供了 Vue Render For

  • jsx 使用上面的代码,im得到控制台错误:

  • 问题内容: 我正在尝试通过将元素作为的子元素来更改元素的背景颜色,但我似乎无法使其正常工作,我尝试了使用不同元素的多种变体,但似乎没有任何效果 如果我不尝试定位元素,这将更改背景颜色 我怎样才能针对中的 元素? 问题答案: 我可以假设您的代码无法正常工作,因为&:nth-​​child(2)意味着您选择的是ImgGrid,它本身就是第二个孩子。尝试将ImgCell指定为nth- child(2):

  • 问题内容: 我最欣赏Backbone.js的一件事是简单而优雅的继承是如何工作的。我开始着手处理React,并且在React中无法真正找到类似于此Backbone代码的任何内容 在react中,我们有mixin,如果使用mixin,我们可以像上面的例子那样有点接近 与一遍又一遍地定义相同的东西相比,这没有那么重复,但是它似乎不像Backbone那样灵活。例如,如果我尝试重新定义/覆盖存在于我的一个

  • 问题内容: 我想将当前目录的文件放在一个数组中,并使用此脚本回显每个文件: 输出: 有谁知道为什么在此for循环中仅打印第一个元素? 问题答案: 扩展到数组的第一个元素。试试看,它只会打印数组的第一个元素。由于相同的原因,for循环仅打印一个元素。 要扩展到数组的所有元素,您需要编写为。 迭代Bash数组元素的正确方法:

  • 我正在visual studio中为wix v3编写一个安装项目。该项目的目的是将一组文件安装到某些目录,然后通过设置元素的值来更改XML文件。在我添加XmlFile元素来编辑XML文件之前,一切都很好。以下是该元素的代码段: 我在构建时遇到的错误是: “片段元素包含未处理的扩展元素‘util:XmlFile’。请确保已提供‘http:⁄schemas.microsoft.com⁄wix⁄Util

  • 升级到Apache Camel 2.21.1后,我的应用程序无法启动。具体来说,升级到camel-aws会导致应用程序在启动时抛出此错误: 创建名为“incomingEndpoint”的bean时出错:FactoryBean在创建对象时引发异常;嵌套的例外是java。lang.NoClassDefFoundError:org/apache/camel/component/extension/Com

  • 第十三章介绍了如何开发一个Web框架,通过介绍MVC、路由、日志处理、配置处理完成了一个基本的框架系统,但是一个好的框架需要一些方便的辅助工具来快速的开发Web,那么我们这一章将就如何提供一些快速开发Web的工具进行介绍,第一小节介绍如何处理静态文件,如何利用现有的twitter开源的bootstrap进行快速的开发美观的站点,第二小节介绍如何利用前面介绍的session来进行用户登录处理,第三小