自定义html标签教程,HTML自定义标签
背景
HTML的标签大家不陌生,都是标准定义好的,我们只管用。但是有没有想过,我们可以定义自己的标签,封装成自己的组件。
DEMO
下面的demo,用于展示浏览器版本的支持情况。查看其DOM,发现标签是browser-support,这就是自定义标签。
实现
HTMLElement
Custom Elements - browser-support
browser-support {
display: block;
}
class browserSupport extends HTMLElement {
static get observedAttributes () {
return ['chrome-version', 'opera-version', 'firefox-version', 'safari-version', 'ie-version']
}
constructor () {
super();
this.render();
}
render () {
var shadowRoot = this.shadowRoot || this.attachShadow({mode: 'open'});
var ul = document.createElement('ul');
ul.style.listStyle = 'none';
ul.style.display = 'flex';
ul.style.width = '100%';
const browserList = [
{
text: 'Chrome',
img: '../../assets/img/chrome_189x189.png',
version: this.chromeVersion
},
{
text: 'Opera',
img: '../../assets/img/opera.png',
version: this.operaVersion
},
{
text: 'Firefox',
img: '../../assets/img/ff_189x189.png',
version: this.firefoxVersion
},
{
text: 'Safari',
img: '../../assets/img/safari_189x189.png',
version: this.safariVersion
},
{
text: 'IE',
img: '../../assets/img/IE8_189x189.png',
version: this.ieVersion
}
]
var liWidth = (100 / browserList.length) + '%';
for (let i = 0; i < browserList.length; i++) {
var li = document.createElement('li');
li.style.textAlign = 'center';
li.style.width = liWidth
let logoImg = document.createElement('img');
logoImg.src = browserList[i].img;
logoImg.style.width = '60px';
logoImg.style.height = '60px';
li.appendChild(logoImg);
let p1 = document.createElement('p');
p1.style.color = '#3a3a3a';
p1.style.fontSize = 14;
p1.innerText = browserList[i].text;
li.appendChild(p1);
let p2 = document.createElement('p');
p2.style.color = '#4a4a4a';
p2.style.fontSize = 12;
p2.innerText = browserList[i].version;
li.appendChild(p2);
ul.appendChild(li)
}
shadowRoot.innerHTML = ""
shadowRoot.appendChild(ul);
}
attributeChangedCallback (attr, oldValue, newValue) {
this.render()
console.log('attributeChangedCallback trigger')
}
disconnectedCallback () {
console.log('disconnectedCallback')
}
get chromeVersion () {
return this.getAttribute('chrome-version') || ''
}
get operaVersion () {
return this.getAttribute('opera-version') || ''
}
get firefoxVersion () {
return this.getAttribute('firefox-version') || ''
}
get safariVersion () {
return this.getAttribute('safari-version') || ''
}
get ieVersion () {
return this.getAttribute('ie-version') || ''
}
}
customElements.define('browser-support', browserSupport);
自定义html标签教程,HTML自定义标签相关推荐
- 我的世界服务器怎么修改合成表,《我的世界》1.8原版自定义合成表教程 怎么自定义合成表...
<我的世界>1.8原版自定义合成方法,很多玩家还不了解,今天给大家带来玩家"真名"分享的<我的世界>1.8原版自定义合成表教程,一起来看看吧. 版本要求1. ...
- php taglib.php,thinkphp5 taglib自定义标签教程
学着写了一下,终于搞定了,顺便分享一下! taglib是tp框架自定义标签功能,如果你用过cms,肯定见过类似: {dede:arclist typeid='' row='' col='' title ...
- beautifulsoup 搜索第二个标签_自定义网站搜索教程
1.说明 自定义网站源是为了更大限度的扩展搜索结果,如果不会自定义也没关系,使用APP中推荐源就可以了,推荐源免嗅探,直接就能播放. 2.基本原理与参数 自定义站源规则,说白了就是APP直接请求所填的 ...
- OneNav一为主题魔改教程(四):自定义网址内容页的Tag标签到任意位置--洞五洞洞幺
今日主题: 自定义网址内容页的Tag标签到任意位置 声明:本篇有违"魔改"这个标题:修改之前做好笔记或备份. 在原WebStackPro的版本中, 内容页中的Tag标签块紧帖着简介 ...
- JAVA自定义标签教程及实例代码
自定义标签主要用于移除Jsp页面中的java代码 快速入门:使用自定义标签输出客户机的IP 移除jsp页面中的java代码,只需要完成两个步骤: 编写一个实现Tag接口的Java类,并覆盖doStar ...
- java标签uri,JSP自定义标签-定制URI
JSP自定义标签-定制URI 1 JSP自定义标签的定制URI 默认情况下JSP自定义标签的tld文件存放在WEB-INF目录下,但是我们可以使用自定义URI来改变tld文件存放的位置.重点是,需要在 ...
- Python使用matplotlib可视化发散棒棒糖图、发散棒棒糖图可以同时处理负值和正值、并按照大小排序区分数据、为发散棒棒糖图的特定数据点添加标签、自定义背景填充色、自定义数据点颜色
Python使用matplotlib可视化发散棒棒糖图.发散棒棒糖图可以同时处理负值和正值.并按照大小排序区分数据.为发散棒棒糖图的特定数据点添加标签.自定义背景填充色.自定义数据点颜色(Diverg ...
- pandas自定义设置dataframe每个索引的标签、自定义设置索引的列名称(customize index name and index label)
pandas自定义设置dataframe每个索引的标签.自定义设置索引的列名称(customize index name and index label) 目录
- pandas使用rename函数自定义重命名dataframe指定索引标签(位置)的名称(customize rename index value or label)
pandas使用rename函数自定义重命名dataframe指定索引标签(位置)的名称(customize rename index value or label) 目录
最新文章
- html怎么使用伪类清除浮动,JS中使用 after 伪类清除浮动实例
- python字符串补空格输出_Python去除空格,Python中常见字符串去除空格的方法总结...
- 工程设计论——如何写好工程代码
- launch images source启动图删除后上下有黑边
- CI Weekly #5 | 微服务架构下的持续部署与交付
- 如何获取到informix for linux?
- delphi.about.com 上的教材链接
- iptable之我也不知道
- 《视觉SLAM十四讲-第二版-ch8,OpenCV4报错及解决》
- 程序员面试:未来五年的规划是怎样的?
- JsDroid2开发教程
- 大数据技术之Spark(一)Spark Core
- 深度链接、延迟深度链接、App Links以及关于LinkedME实现深度链接的原理解析
- hadoop面试题 5 ---有用
- 【系统相关】远程连接,凭据不工作
- android epub 开源,EPUB SDK
- 华为MateBook16投屏设置
- linux学习11 正则表达式与文件格式化处理
- Win10蓝屏原因查找以及解决
- clojure_深入了解Clojure系列
热门文章
- LeetCode知识点总结 - 377
- TXT阅读器 C# winfrom 开发
- 对外投资全球跟踪数据、直接投资流量/存量、一带一路对外投资数据(1970-2021)
- 智慧数据助力航天梦,Smartbi为中国航天事业添砖加瓦
- 如何防止PDF内容随意分享并设定文件失效日期
- 无线干扰的20种错误说法
- PAR(Projected AR)投影增强现实系统使用Vuforia
- MySQL server PID file could not be found! 解决办法 (李作强)
- JAVA 将MultipartFile file转换成为File
- 推荐两个VS开发工具插件