搜索
首页web前端css教程上下文感知的网络组件比您想象的要容易

上下文感知的网络组件比您想象的要容易

本文探讨了Web组件的经常被忽视的生命周期回调,展示了它们如何启用上下文感知的元素。我们将构建一个对环境反应的Web组件,展示这些功能的功能。

系列概述

本文是简化Web组件开发的系列的一部分:

  • 网络组件:比您想象的要容易
  • 交互式网络组件:比您想象的要容易
  • 在WordPress中使用Web组件:比您想象的要容易
  • 带有Web组件的内置元素:比您想象的要容易
  • 上下文感知的Web组件:比您想象的要容易(本文
  • Web组件伪级和伪元素:比您想象的要容易

Web组件生命周期回调

四个关键回调管理Web组件的生命周期:

  • connectedCallback :将元素添加到DOM时发射。
  • disconnectedCallback :从DOM中删除元素时被触发。
  • adoptedCallback :将元素移至新文档时被解雇。
  • attributeChangedCallback :当观察到的属性更改时被解雇。

让我们以一个实用的例子来说明这些。

世界末日后的人组成部分

我们将创建一个<postapocalyptic-person></postapocalyptic-person>成分。每个人都是人类或僵尸,由.human.zombie班级确定其父元素。该组件将使用阴影DOM显示适当的图像。

定义(定义)(
  “昆虫世界后的人”,
  类扩展htmlelement {
    constructor(){
      极好的();
      this.shadowroot = this.attachshadow({mode:“ open”});
    }
    // ...生命周期回调将在此处添加...
  }
);

我们最初的HTML:

<div class="humans">
  <postapocalyptic-person></postapocalyptic-person>
</div>
<div class="zombies">
  <postapocalyptic-person></postapocalyptic-person>
</div>

使用connectedCallback

connectedCallback被调用<postapocalyptic-person></postapocalyptic-person>被添加到页面。我们将使用它添加图像:

 connectedCallback(){
  const image = document.createelement(“ img”);
  if(this.parentnode.classlist.contains(“人类”)){
    image.src =“ https://assets.codepen.io/1804713/lady.png”;
  } else if(this.parentnode.classlist.contains(“ Zombies”)){
    image.src =“ https://assets.codepen.io/1804713/ladyz.png”;
  }
  this.shadowroot.appendchild(image);
}

这样可以确保根据父母的类显示正确的图像。注意: connectedCallback可以发射多次;使用this.isConnected结合以检查连接状态。

计算与connectedCallback

让我们添加按钮添加/删除人员并跟踪计数:

<div>
  <button id="addbtn">添加一个人</button>
  <button id="rmvbtn">删除人</button>
  <br>人类: <span id="human-count">0</span>
  僵尸: <span id="zombie-count">0</span>
</div>

按钮事件听众:

 // ...(添加/删除人逻辑)...

更新connectedCallback以更新计数:

 connectedCallback(){
  // ...(图像逻辑)...
  //基于图像源的更新计数
}

使用disconnectedCallback计数更新计数

当一个人被删除时, disconnectedCallback折笔会减少。我们将使用图像源用作类型的代理:

 disconnectedCallback(){
  const image = this.shadowroot.queryselector('img');
  //基于图像源的减少计数
}

带有adoptedCallbackattributeChangedCallback小丑检测

我们将介绍隐藏小丑的可能性,将其移至<iframe></iframe>使用adoptedCallback并用attributeChangedCallback揭示它们。为简洁起见,省略了此高级示例的详细信息,但是核心概念涉及使用adoptedCallback来检测何时将组件移至新文档,并attributeChangedCallback属于属性更改,从而相应地更新图像。

这说明了生命周期回调如何为创建动态和上下文感知的Web组件提供强大的工具,从而使它们更加通用和响应。

以上是上下文感知的网络组件比您想象的要容易的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
链接HTML中CSS文件的最终指南链接HTML中CSS文件的最终指南May 13, 2025 am 12:02 AM

链接CSS文件到HTML可以通过在HTML的部分使用元素实现。1)使用标签链接本地CSS文件。2)多个CSS文件可通过添加多个标签实现。3)外部CSS文件使用绝对URL链接,如。4)确保正确使用文件路径和CSS文件加载顺序,优化性能可使用CSS预处理器合并文件。

CSS Flexbox与网格:全面评论CSS Flexbox与网格:全面评论May 12, 2025 am 12:01 AM

选择Flexbox还是Grid取决于布局需求:1)Flexbox适用于一维布局,如导航栏;2)Grid适合二维布局,如杂志式布局。两者在项目中可结合使用,提升布局效果。

如何包括CSS文件:方法和最佳实践如何包括CSS文件:方法和最佳实践May 11, 2025 am 12:02 AM

包含CSS文件的最佳方法是使用标签在HTML的部分引入外部CSS文件。1.使用标签引入外部CSS文件,如。2.对于小型调整,可以使用内联CSS,但应谨慎使用。3.大型项目可使用CSS预处理器如Sass或Less,通过@import导入其他CSS文件。4.为了性能,应合并CSS文件并使用CDN,同时使用工具如CSSNano进行压缩。

Flexbox vs Grid:我应该学习两者吗?Flexbox vs Grid:我应该学习两者吗?May 10, 2025 am 12:01 AM

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

轨道力学(或我如何优化CSS KeyFrames动画)轨道力学(或我如何优化CSS KeyFrames动画)May 09, 2025 am 09:57 AM

重构自己的代码看起来是什么样的?约翰·瑞亚(John Rhea)挑选了他写的一个旧的CSS动画,并介绍了优化它的思维过程。

CSS动画:很难创建它们吗?CSS动画:很难创建它们吗?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@KeyFrames CSS:最常用的技巧@KeyFrames CSS:最常用的技巧May 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingmatematingmultationmatingMultationPropertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用BombingingWithjavofofofofofoffo

CSS计数器:自动编号的综合指南CSS计数器:自动编号的综合指南May 07, 2025 pm 03:45 PM

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他们可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑战挑战InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)创造性

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),