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

重庆网站建设求职简历建设厅网站企业诚信分值

重庆网站建设求职简历,建设厅网站企业诚信分值,建立网站 优帮云,用dw做的网站怎么上传来源 | http://www.ruanyifeng.com/blog/2019/08/web_components.html组件是前端的发展方向#xff0c;现在流行的React和Vue都是组件框架。谷歌公司由于掌握了Chrome浏览器#xff0c;一直在推动浏览器的原生组件#xff0c;即Web组件API。部分第三方框架#xff0c;原生组… 来源 | http://www.ruanyifeng.com/blog/2019/08/web_components.html组件是前端的发展方向现在流行的React和Vue都是组件框架。谷歌公司由于掌握了Chrome浏览器一直在推动浏览器的原生组件即Web组件API。部分第三方框架原生组件简单直接符合直觉不用加载任何外部模块代码量小。因此它还在不断发展但已经可用于生产环境。Web组件API内容很多这里不是全面的教程只是一个简单的演示让大家看一下怎么用它开发组件。1、自定义元素下图是一个用户卡片。本文演示如何把这个卡片写成Web Components组件这里是最后的完整代码。网页只要插入以下的代码就会显示用户卡片。这种自定义的HTML标签称为自定义元素(custom element)。根据规范自定义元素的名称必须包含连词线用与区别原生的HTML元素。所以不能写成。2、customElements.define()自定义元素需要使用JavaScript定义一个类所有都会是这个类的实例。class UserCard extends HTMLElement {constructor() {super(); }}上面代码中UserCard就是自定义元素的类。注意这个类的父类是HTMLElement因此继承了HTML元素的特性。接着使用浏览器原生的customElements.define()方法告诉浏览器元素与这个类关联。window.customElements.define(user-card, UserCard);3、自定义元素的内容自定义元素目前还是空的下面在类里面称为这个元素的内容。class UserCard extends HTMLElement {constructor() {super();var image document.createElement(img); image.src https://semantic-ui.com/images/avatar2/large/kristy.png; image.classList.add(image);var container document.createElement(div); container.classList.add(container);var name document.createElement(p); name.classList.add(name); name.innerText User Name;var email document.createElement(p); email.classList.add(email); email.innerText yourmailsome-email.com;var button document.createElement(button); button.classList.add(button); button.innerText Follow; container.append(name, email, button);this.append(image, container); }}上面的代码最后一行this.append()的this表示自定义元素实例。完成这一步以后自定义元素内部的DOM结构就已经生成了。4、标签使用JavaScript写上一级的DOM结构很麻烦Web Components API提供了标签可以在它里面使用HTML定义的DOM。User Nameyourmailsome-email.comFollow然后改写一下自定义元素的类为自定义元素加载。class UserCard extends HTMLElement {constructor() {super();var templateElem document.getElementById(userCardTemplate);var content templateElem.content.cloneNode(true);this.appendChild(content); }} 上面的代码中获取上游以后克隆了它的所有子元素这是因为可能有多个自定义元素的实例这个模板还要留给其他实例使用所以不能直接移动它的子元素。到这一步为止完整的代码如下。...class UserCard extends HTMLElement {constructor() {super();var templateElem document.getElementById(userCardTemplate);var content templateElem.content.cloneNode(true);this.appendChild(content); } }window.customElements.define(user-card, UserCard); 5、添加样式自定义元素还没有样式可以给它指定细分样式类似下面这样。user-card {/* ... */}但是组件的样式应该与代码封装在一起只对自定义元素实施不影响外部的布局样式。所以可以把样式写在里面。:host {display: flex;align-items: center;width: 450px;height: 180px;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;font-family: Poppins, sans-serif; }.image {flex: 0 0 auto;width: 160px;height: 160px;vertical-align: middle;border-radius: 5px; }.container {box-sizing: border-box;padding: 20px;height: 160px; }.container .name {font-size: 20px;font-weight: 600;line-height: 1;margin: 0;margin-bottom: 5px; }.container .email {font-size: 12px;opacity: 0.75;line-height: 1;margin: 0;margin-bottom: 15px; }.container .button {padding: 10px 25px;font-size: 12px;border-radius: 5px;text-transform: uppercase; }User Nameyourmailsome-email.comFollow上方代码中样式里面的:host伪类指代自定义元素本身。6、自定义元素的参数内容现在是在里面设定的为了方便使用把它改成参数。imagehttps://semantic-ui.com/images/avatar2/large/kristy.pngnameUser Nameemailyourmailsome-email.com代码也相应改造。Follow John最后改一下类的代码把参数加到自定义元素里面。class UserCard extends HTMLElement {constructor() {super();var templateElem document.getElementById(userCardTemplate);var content templateElem.content.cloneNode(true); content.querySelector(img).setAttribute(src, this.getAttribute(image)); content.querySelector(.container.name).innerText this.getAttribute(name); content.querySelector(.container.email).innerText this.getAttribute(email);this.appendChild(content); }}window.customElements.define(user-card, UserCard); 7、影子DOM我们不希望用户能够看到的内部代码Web组件允许内部代码隐藏起来这叫做Shadow DOM即这部分DOM默认与外部DOM隔离内部任何代码都无法影响外部。自定义元素的this.attachShadow()方法开启Shadow DOM详见下面的代码。class UserCard extends HTMLElement {constructor() {super();var shadow this.attachShadow( { mode: closed } );var templateElem document.getElementById(userCardTemplate);var content templateElem.content.cloneNode(true); content.querySelector(img).setAttribute(src, this.getAttribute(image)); content.querySelector(.container.name).innerText this.getAttribute(name); content.querySelector(.container.email).innerText this.getAttribute(email); shadow.appendChild(content); }}window.customElements.define(user-card, UserCard);上面的代码中this.attachShadow()方法的参数{ mode: closed }表示Shadow DOM是封闭的永久外部访问。至此这个Web组件组件就完成了完整代码可以访问这里。可以看到整个过程还是很简单的不像第三方框架那样有复杂的API。8、组件的扩展在前面的基础上可以对组件进行扩展。(1)与用户互动用户卡片是一个静态组件如果要与用户互动也很简单就是在类里面监听各种事件。this.$button shadow.querySelector(button);this.$button.addEventListener(click, () {// do something});(2)组件的封装上面的例子中与网页代码放在一起可以其实用脚本把注入|网页。这样的话JavaScript的跟脚本就能封装一个分类中翻译JS文件成为独立的组件文件。网页只要加载这个脚本使用就能组件。这里就不展开了更多Web Components的高级用法可以接着学习下面两篇文章。Web组件初学者教程自定义元素v1可重用的Web组件九参考链接Web组件剖析Uday Hiwarale(完)
http://wiki.neutronadmin.com/news/418824/

相关文章:

  • 分类信息网站开发教程长沙网络营销类岗位
  • 做网站技术好学嘛福州网络营销推广产品优化
  • 美食类网站开发说明书长沙做网站推荐
  • 网站存在的问题及改进措施烟台网站建设 制作 推广
  • 化工外贸网站建设企业怎么做自己的网站
  • 网站空间一定要买吗大学生兼职网站开发
  • 泉州免费做网站搜索引擎的设计与实现
  • wordpress 中国企业seo网址查询
  • 网站开发需求分析说明东莞厚街国际大酒店
  • 制作网站专业做学校网站的目的
  • 网站长尾关键词优化兰州中川国际机场招聘
  • 网站中文名注册邯郸建设网站
  • 高德地图为什么没有国外的地图宁波seo推荐运营培训
  • 自己怎么做优惠卷网站网站内容规划流程
  • 有什么做酒和水果茶教程的网站seo薪资
  • 建设网站怎么挣钱百度seo优化教程免费
  • 模板网站价格表字体设计软件 免费
  • 网站虚拟主机里的内容强制删除如何免费自己做个网站
  • 织梦绿色企业网站模板 苗木企业网站源码 dedecms5.7内核黄骅港招聘贴吧最新招聘
  • 做网站需要懂什么卖机器的网站怎么做
  • 个人网站建设合同范本wordpress $query
  • 做网站后台数据库建设网站logo例子
  • 城市建设网站调查问卷wordpress媒体库在哪
  • 网站添加文章之后更新缓存访问网站就需要输入账号密码山东省建设厅网站一体化平台
  • 青海建设兵团青岛战友网站做红k线网站
  • 毕业设计网站只做前端行不行石家庄做网站比较好的公司有哪些
  • 衡水医院网站建设网站建设合作品牌
  • 宁波市住房与城乡建设部网站企顺网网站建设
  • 公司网站平台的作用如何申请商业服务器
  • 网站域名怎么写好wordpress 视频格式