当前位置: 首页 > news >正文

网站建设一般需要什么功能建程网工程平台

网站建设一般需要什么功能,建程网工程平台,做购物网站的目的,wordpress可视化不显示Web Component是一种用于构建可重用的UI组件的技术。它使用标准化的浏览器API#xff0c;包括Custom Elements、Shadow DOM和HTML Templates来实现组件化开发方式。这些API都是现代浏览器原生支持的#xff0c;因此不需要引入第三方库或框架即可使用。 在这篇博客中#xf…Web Component是一种用于构建可重用的UI组件的技术。它使用标准化的浏览器API包括Custom Elements、Shadow DOM和HTML Templates来实现组件化开发方式。这些API都是现代浏览器原生支持的因此不需要引入第三方库或框架即可使用。 在这篇博客中我们将介绍如何使用Web Component技术构建一个名为UserCard的UI组件。这个组件可以显示用户的头像、姓名和电子邮件地址并提供一个关注按钮。当用户点击关注按钮时组件会触发一个自定义事件允许开发者处理按钮点击事件。 在线例子和源码点击我 首先让我们来看看这个组件的代码 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /head body!-- 使用template写模板 --template idcard-templatediv classuser-card-containerimg /div classcontentdiv classname/divdiv classemail/divbutton classfollow-btn/button/div/div/templateuser-cardiduser-card-iduserId1imagehttps://semantic-ui.com/images/avatar2/large/kristy.pngnameUser NameemailyourMailsome-email.comhasFollowfalsehandleFollowEventhandleFollowEvent/user-cardscript src./user-card.js/scriptscriptconst userCard document.getElementById(user-card-id)/** 监听组件事件 */userCard.addEventListener(follow-event, (e) {const functionName e.detail.methodthis[functionName] this[functionName](e.detail.data)})/** 修改按钮状态 */function handleFollowEvent(data) {userCard.setAttribute(hasFollow, userCard.getAttribute(hasFollow) true ? false : true)}/script /body /htmlclass UserCard extends HTMLElement {constructor() {super();this.shadow this.attachShadow({ mode: open });}/** 内容挂载时候回调 */connectedCallback() {this.render();}/** 指定监听的属性列表 */static get observedAttributes() {return [hasfollow];}/** 监听属性变化 */attributeChangedCallback(name, newValue, oldValue) {// 加上newValue判断是防止第一次传属性就执行了if (newValue newValue ! oldValue) {this.processDomRender();}}/** 具体的渲染函数 */render() {const link document.createElement(link);link.rel stylesheet;link.href ./user-card.css;// css加载完才开始渲染内容避免页面错乱问题link.onload () {// 把模板内容挂在上shadow domthis.processDomRender();};this.shadowRoot.appendChild(link);}/** 仅render dom */processDomRender() {const userCardContainer this.shadowRoot.querySelector(.user-card-container);userCardContainer this.shadowRoot.removeChild(userCardContainer);this.shadowRoot.appendChild(this.getContent());this.setContent();}/** 获取模板 */getContent() {const template document.getElementById(card-template);// 拷贝模板但是不改动模板的内容const content template.content.cloneNode(true);return content;}/** 把组件传下来的属性挂载到shadow dom上 */setContent() {this.shadowRoot.querySelector(img).setAttribute(src, this.getAttribute(image));this.shadowRoot.querySelector(.name).innerHTML this.getAttribute(name);this.shadowRoot.querySelector(.email).innerHTML this.getAttribute(email);this.shadowRoot.querySelector(.follow-btn).innerHTML this.getAttribute(hasFollow) true ? 已关注 : 关注;// 按钮点击事件this.shadowRoot.querySelector(.follow-btn).addEventListener(click, () {const event new CustomEvent(follow-event, {detail: {method: this.getAttribute(handleFollowEvent),data: {id: this.getAttribute(userId),},},});this.dispatchEvent(event);});} }customElements.define(user-card, UserCard); .user-card-container {height: 120px;display: flex;background-color: #d4d4d4;border: 1px solid #d5d5d5;box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.1);border-radius: 3px;overflow: hidden;padding: 10px;box-sizing: border-box; }.user-card-container img {height: 100px;width: 100px; }.user-card-container .content {margin: 10px;flex: 1;display: flex;flex-direction: column; }.user-card-container .content .name {font-size: 20px;font-weight: 600;line-height: 1;margin: 0;margin-bottom: 5px; } .user-card-container .content .email {padding: 5px 0;font-size: 12px;opacity: 0.75;line-height: 1;margin: 0;margin-bottom: 15px; } .user-card-container .content .follow-btn {width: 100px;font-size: 12px;border-radius: 5px;text-transform: uppercase; }这个组件使用了三个Web Component的APICustom Elements、Shadow DOM和HTML Templates。Custom Elements用于定义一个自定义元素UserCardShadow DOM用于封装组件内部的样式和结构防止外部样式干扰组件HTML Templates则用于定义组件的模板。 在构造函数中我们使用attachShadow方法创建了一个shadowRoot并将其挂载到自定义元素上。接着在connectedCallback方法中我们调用了render方法来渲染组件。 在render方法中我们首先将组件的CSS样式引入到shadowRoot中。接着我们调用processDomRender方法来渲染组件的结构和内容。 在processDomRender方法中我们首先使用querySelector方法查找user-card-container元素是否已经存在如果存在则将其从shadowRoot中删除。接着我们调用getContent方法获取组件的模板并将其添加到shadowRoot中。最后我们调用setContent方法将组件的属性挂载到shadowRoot中。 在getContent方法中我们使用querySelector方法获取id为card-template的模板并使用cloneNode方法创建一个模板副本。由于模板是HTML5的新特性因此我们需要为HTML文件添加声明来确保浏览器正确解析模板。 在setContent方法中我们使用getAttribute方法获取组件的属性并将其挂载到shadowRoot中。我们还为关注按钮添加了一个点击事件并在事件处理程序中触发了一个自定义事件。 最后在JavaScript代码中我们使用addEventListener方法监听组件的follow-event事件并在事件处理程序中调用handleFollowEvent方法来处理按钮点击事件。当用户点击关注按钮时handleFollowEvent方法将切换hasFollow属性并重新渲染组件。 效果图如下 这是一个简单的Web Component示例它介绍了如何使用Custom Elements、Shadow DOM和HTML Templates API来构建可重用的UI组件。通过使用这些API我们可以将组件内部的样式和结构封装起来防止外部样式干扰组件并使开发者能够轻松地重复使用和维护组件。
http://www.pierceye.com/news/975788/

相关文章:

  • 如何做汽车团购网站学做馒头面包哪个网站好
  • 中国科技成就总结莱芜网站优化排名公司
  • 中国建设银行网站企业网银收费北京网站建设小程序开发
  • 成交型网站倡导公司网络营销课程总结1000字
  • 网站建设注册前端开发培训机构推荐
  • 遵义网站推广中国房地产app下载安装最新版
  • c语言网站建设禅城网站开发
  • 宁波品牌网站制作哪家好太平阳电脑网网站模板
  • seo网站外链工具看设计比较好的网站
  • 济南道驰网站建设有限公司怎么样某网站网站的设计与实现
  • 服装印花图案设计网站设计一个网站要多久
  • ai怎么做自己的网站getpage wordpress使用详解
  • 龙岩做网站推广龙岗网站 建设深圳信科
  • 沈阳网站建设 网络服务广告公司首页
  • 旅游网站建设导航栏中国哪里正在大开发大建设
  • 哪能建设网站建设网站需要哪些流程图
  • 网站YYQQ建设o2o型网站
  • 给客户做网站 赚钱吗赣州省住房和城乡建设厅网站
  • 营销优化型网站怎么做手机app网页制作
  • 上海网站建设服wordpress友情链接排序
  • 沈阳市和平区网站建设编程课适合多大孩子学
  • 东阳网站优化懒人图库
  • 马关县网站建设专注营销型网站建设
  • 微信公众号公众平台太原seo关键词优化
  • 沈阳网站建设方案二级网站怎样被百度收录
  • 厦门数字引擎 怎么打不开网站youku网站开发技术
  • 中小企业网站建设论文郑州网站服务公司
  • 工信部网站备案验证码文化传媒网站封面
  • 境外做网站网站百度代运营
  • 南京学校网站建设策划手机网站默认全屏