1. class MyTab extends HTMLElement{ //创建一个类名MyTab
  2. constructor(){ //构造函数
  3. super(); //指向父类构造函数,必须要有的
  4.  
  5. const shadow = this.attachShadow({ //影子dom
  6. mode : 'open' //开放的封装模式
  7. })
  8.  
  9. let n = 0;
  10. let titles = ['标题1','标题2','标题3'];
  11. let inners = ['内容1','内容2','内容3'];
  12.  
  13. for(let i=0;i<3;i++){
  14. let button = document.createElement('button');
  15. button.innerHTML = titles[i];
  16.  
  17. if(i == n){
  18. button.classList.add('active');
  19. }
  20.  
  21. button.onclick = function () {
  22. let aButton = shadow.querySelectorAll('button');
  23. let aP = shadow.querySelectorAll('p');
  24.  
  25. for(let i=0;i<3;i++){
  26. aButton[i].classList.remove('active');
  27. aP[i].classList.remove('active');
  28. }
  29. this.classList.add('active');
  30. aP[i].classList.add('active');
  31. }
  32.  
  33. shadow.appendChild(button);
  34. }
  35.  
  36. for(let i=0;i<3;i++){
  37. let p = document.createElement('p');
  38. p.innerHTML = inners[i];
  39.  
  40. if(i == n){
  41. p.classList.add('active');
  42. }
  43.  
  44. shadow.appendChild(p);
  45. }
  46.  
  47. const style = document.createElement('style');
  48.  
  49. style.textContent = `
  50. button.active{
  51. background : yellow;
  52. }
  53. p{
  54. display:none;
  55. }
  56. p.active{
  57. display:block;
  58. }
  59. `;
  60.  
  61. shadow.appendChild(style);
  62.  
  63. let div = document.createElement('div'); //插槽
  64. div.innerHTML = '<slot></slot>';
  65.  
  66. shadow.appendChild(div);
  67.  
  68. }
  69. }
  70.  
  71. customElements.define('my-tab',MyTab); //注册组件

然后在html文件里面写入<my-tab></my-tab>就可以使用组件了

Js原生封装选项卡组件的更多相关文章

  1. 基于js原生封装的点击显示完整文字

    基于js原生封装的点击显示完整文字 (function(window) { var inner = ''; var showCont_s = function(ele) { this.init.app ...

  2. js原生实现选项卡功能

    选项卡在js中是一个重要的知识点.他没有那么难,但在工作中却有重要的位置.几乎在每一个网站都能看到选项卡的实例.所以今天写一下选项卡的实现. 我们设想有三个按钮分别来控制三个盒子当我们点击当前的按钮的 ...

  3. 在Vue将第三方JS库封装为组件使用

    第三方JS库地址:https://github.com/inorganik/CountUp.js 使用NPM进行安装: npm install --save countup 根据官方回答,CountU ...

  4. js原生封装自定义滚动条

    /* * @Author: dothin前端 * @Date: 2015-11-21 00:12:15 * @Last Modified by: dothin前端 * @Last Modified t ...

  5. js原生封装getClassName()方法-ie不支持getElementsByClassName,所以要自己实现获取类名为className的所有元素

    <html> <head> <script type="text/javascript"> window.onload = function() ...

  6. js原生函数一些封装

    这是一些js原生封装的函数,主要是为了兼容IE浏览器,如下 获取css样式 function getStyle(ele, prop) { if(window.getComputedStyle) { r ...

  7. Blazor组件自做五 : 使用JS隔离封装Google地图

    Blazor组件自做五: 使用JS隔离封装Google地图 运行截图 演示地址 正式开始 1. 谷歌地图API 谷歌开发文档 开始学习 Maps JavaScript API 的最简单方法是查看一个简 ...

  8. 原生js实现tab选项卡里内嵌图片滚动特效代码

    <!DOCTYPE HTML><html lang="en-US"><head><meta charset="UTF-8&quo ...

  9. EUI ViewStack实现选项卡组件 (封装了一个UI类)

    封装一个选项卡的UI,用来应付游戏中各种需要选项卡的界面. 例如背包,背包界面的选项卡可以切换装备.物品.符文.宝箱. 下图方法的实现参考:EUI ViewStack实现选项卡组件 假如在主页Home ...

随机推荐

  1. office word memo

    显示左侧目录树 office 和 wps 的差异 wps 的版本:视窗 ->文档结构图 office 的版本: 视图 ->导航窗格

  2. 我对MVC的理解

    1.    MVC :M模型  V视图  C控制器 1.1  模型是用来处理业务逻辑的,里面由许多类构成 1.2  视图是用来显示界面的 1.3  控制器是一个中间人,它通过视图的提交方式(post, ...

  3. RCNN的流程

    步骤一: 找到一个CNN分类模型 步骤二: 对于这个模型修改最后的分类层,为21类,去掉最后一个全连接层 步骤三: 根据选择性搜索提取图像的候选区域(框) 对于候选框修改大小以适应CNN输入,然后得出 ...

  4. linux基本命令之stat

    我们在开始接触到linux系统时一般会首先接触ls命令,但是ls命令一来有众多参数,二来所能显示的文件描述也极为有限,仅仅是stat的一部分,那么我们来看下我们的stat命令如图 stat  /etc ...

  5. Zepto源码分析之一(代码结构及初始化)

    关于读源码,读jQuery自然是不错,但太过于庞大不易解读,对于小白,最好从Zepto,Lodash这样的小库入手. 这里使用的是zepto1.1.6版本为例. 自执行函数 在阅读之前,先弄清楚闭包和 ...

  6. mac下mysql安装及配置启动

    ---恢复内容开始--- 原始链接:https://segmentfault.com/q/1010000000475470 按照如下方法成功安装并启动: mysql.server start//启动服 ...

  7. 使用Shader制作loading旋转动画

    效果图: 1.绕Z轴旋转的旋转矩阵 2.UV旋转的步骤 (1) 由于旋转矩阵是绕原点旋转的,要把要旋转的UV坐标平移到原点 i.uv -= float2(0.5, 0.5); float2 tempU ...

  8. C#-----线程安全的ConcurrentQueue<T>队列

     ConcurrentQueue<T>队列是一个高效的线程安全的队列,是.Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数据 ...

  9. ajax 防止重复提交

    参考链接:http://www.hollischuang.com/archives/931 http://blog.csdn.net/everything1209/article/details/52 ...

  10. django进阶开发(一)--session

    基于cookie做用户验证时:敏感信息不适合放在cookie中 session依赖cookie session原理 cookie是保存在用户浏览器端的键值对 session是保存在服务器端的键值对 s ...