vue2中开发时通过template中的div等标签自动输出对应的less形式带层级的class,只显示带class的

文章介绍了一种在Vue2中通过遍历DOM结构自动生成对应less类名的方法,用于实现基于DOM结构的类名自动化。代码示例展示了如何从给定的domId开始,递归遍历子节点,构建带层级的class,并过滤掉特定前缀(如ant-),以适应不同UI框架的需求。
摘要由CSDN通过智能技术生成

1.写完静态不是要写less吗,自动生成一下实现

this.getLevelClass('domId');

domId是自定义的class名称,跟根据自己的需要设置

//vue2中开发时通过template中的div等标签自动输出对应的less形式带层级的class,只显示带class的
        getLevelClass(name) {
            let dom = document.getElementById(name);
            let html = dom.innerHTML;
            let str = `.${name}{`
            console.log('html', html);
            let domLIst = dom.childNodes;
            console.log(domLIst);
            domLIst.forEach(item => {
                console.log('domLIst', item);
                str = this.getdom(item, str);
            })
            str += '}'
            console.log('str', str);

        },
        getdom(dom, str) {
            if (dom.classList && dom.classList.length) {
                str += `.${Array.from(dom.classList).join('.')}{`
                if (dom.childNodes) {
                    dom.childNodes.forEach(item => {
                        str = this.getdom(item, str);
                    })
                }
                str += `}`;
                str += `       `
                return str
            } else {
                return str;
            }
        },

 查看一下效果:

<div id="domId" class="domId">

            <div class="aa abc">

                aa

                <div class="a1">

                    <div class="a1-1"></div>

                    <div class="a1-2"></div>

                </div>

                <div class="a2">

                    <div class="a2-1"></div>

                    <div class="a2-2"></div>

                </div>

                <input />

            </div>

            <div class="bb">bb</div>

        </div>

返回的class自动格式化就好了

优化:如果我们在使用ui框架如antd等组件时不想返回包括antd组件的class时可以:

if (dom.classList && dom.classList.length && Array.from(dom.classList).join('.').indexOf('ant-') == -1)

在if中多添加判断过滤 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值