自定义组件之选项卡效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <xzy-tab data = '{"aaa" : "我是aaa的内容","bbb" : "我是bbb的内容","ccc" : "我是ccc的内容"}'></xzy-tab>
    <script>
        class XzyTab extends HTMLElement{
            constructor(){
                super();
                const shadom = this.attachShadow ({
                    mode : "open"
                })
                var data = JSON.parse(this.getAttribute("data"));
                var oWrap = document.createElement("div");
                var oCtrl = document.createElement("div");
                var oCon = document.createElement("div");
                shadom.appendChild(oWrap);
                oWrap.appendChild(oCtrl);
                oWrap.appendChild(oCon);
                var arr = Object.keys(data);
                console.log(arr);
                for(var i=0;i<arr.length;i++){
                    oCtrl.innerHTML += `<button>${arr[i]}</button>`
                }
                oCon.innerHTML = data["aaa"];
                var aBtn = oCtrl.getElementsByTagName("button");
                for(var i=0;i<aBtn.length;i++){
                    aBtn[i].onclick = function (){
                        oCon.innerHTML = data[this.innerHTML];
                    }
                }
                var oStyle = document.createElement("style");
                oStyle.innerHTML = `
                    .wrap{
                        width: 500px;
                        height: 500px;
                        border: 1px solid black;
                    }
                    .wrap .ctrl{
                        width: 500px;
                        height: 100px;
                    }
                    .wrap button{
                        width: 160px;
                        height: 100px;
                    }
                    .wrap .content{
                        width: 500px;
                        height: 400px;
                    }
                `
                    }
                }
                customElements.define('xzy-tab',XzyTab);
    </script>
</body>
</html>

结果如下

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值