本文探讨了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'); //基于图像源的减少计数 }
带有adoptedCallback
和attributeChangedCallback
小丑检测
我们将介绍隐藏小丑的可能性,将其移至<iframe></iframe>
使用adoptedCallback
并用attributeChangedCallback
揭示它们。为简洁起见,省略了此高级示例的详细信息,但是核心概念涉及使用adoptedCallback
来检测何时将组件移至新文档,并attributeChangedCallback
属于属性更改,从而相应地更新图像。
这说明了生命周期回调如何为创建动态和上下文感知的Web组件提供强大的工具,从而使它们更加通用和响应。
以上是上下文感知的网络组件比您想象的要容易的详细内容。更多信息请关注PHP中文网其他相关文章!

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

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

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

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

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

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

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

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


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Dreamweaver CS6
视觉化网页开发工具

WebStorm Mac版
好用的JavaScript开发工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

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