You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历页面未使用的text-style-开头CSS类名?(HTML/JS/CSS/SASS)

解决方案:找出未被页面使用的text-style-前缀CSS类

要解决这个问题,核心思路是先获取所有定义的text-style-类,再对比页面实际用到的类,找出差集。以下是两种适合你的实现方案,均基于HTML/JS/CSS/SASS,无需shell脚本:

方案一:纯前端JS实时检测(无需构建工具)

直接在浏览器端解析样式表,提取目标类并与页面已用类对比,适合快速验证。

步骤1:提取所有定义的text-style-类

遍历页面所有样式表,筛选出以.text-style-开头的类选择器:

function getAllTextStyleClasses() {
  const styleClasses = new Set();
  // 遍历所有样式表
  for (const sheet of document.styleSheets) {
    try {
      // 跳过跨域无法访问的样式表
      for (const rule of sheet.cssRules) {
        if (rule.type === CSSRule.STYLE_RULE) {
          // 拆分多选择器(比如 .a, .b { ... })
          const selectors = rule.selectorText.split(',').map(s => s.trim());
          selectors.forEach(selector => {
            if (selector.startsWith('.text-style-')) {
              const className = selector.slice(1); // 移除开头的.
              styleClasses.add(className);
            }
          });
        }
      }
    } catch (e) {
      console.warn('无法读取样式表:', sheet.href, e);
    }
  }
  return styleClasses;
}

步骤2:收集页面已使用的所有类

遍历页面所有元素,提取并去重类名:

function getUsedClasses() {
  const usedClasses = new Set();
  document.querySelectorAll('*').forEach(el => {
    el.classList.forEach(cls => usedClasses.add(cls));
  });
  return usedClasses;
}

步骤3:对比得出未使用的类

function findUnusedTextStyleClasses() {
  const allTextStyle = getAllTextStyleClasses();
  const used = getUsedClasses();
  const unused = [...allTextStyle].filter(cls => !used.has(cls));
  
  console.log('未使用的text-style类:', unused);
  // 也可以把结果渲染到页面上方便查看
  const resultEl = document.createElement('div');
  resultEl.style.cssText = 'position:fixed;top:10px;right:10px;background:white;padding:10px;border:1px solid #ccc;z-index:9999';
  resultEl.innerHTML = `<h3>未使用的text-style类</h3><ul>${unused.map(cls => `<li>${cls}</li>`).join('')}</ul>`;
  document.body.appendChild(resultEl);
  
  return unused;
}

// 页面加载完成后执行
window.addEventListener('load', findUnusedTextStyleClasses);

注意点

  • 无法读取跨域加载的样式表(CDN样式等),这类样式表的类需要手动补充或用方案二处理
  • 动态添加的类(比如JS交互后才挂载的类)需在类添加完成后重新调用检测函数

方案二:结合SASS构建时生成类列表(更可靠)

利用SASS的变量管理能力,提前收集所有text-style-类,编译时导出给JS使用,避免解析样式表的问题。

步骤1:在SASS中统一管理类列表

将所有text-style-类存入SASS列表,通过:export导出为JS可读取的变量(需构建工具支持,比如Webpack的sass-loader):

// 统一管理所有text-style类
$text-style-classes: (
  text-style-primary,
  text-style-secondary,
  text-style-muted,
  text-style-highlight,
  // 新增类直接添加到这里
);

// 导出为JS变量
:export {
  textStyleClasses: $text-style-classes;
}

// 原有样式定义
@each $class in $text-style-classes {
  .#{$class} {
    // 原样式逻辑
    color: #000;
  }
}

步骤2:JS中导入并对比

// 导入SASS导出的类列表
import { textStyleClasses } from './your-styles.scss';

// 转换为Set便于对比
const allTextStyle = new Set(textStyleClasses.split(','));

// 复用方案一的getUsedClasses函数
const used = getUsedClasses();
const unused = [...allTextStyle].filter(cls => !used.has(cls));

console.log('未使用的text-style类:', unused);

优势

  • 无需解析样式表,避免跨域问题
  • SASS统一管理类,新增/删除类时自动同步,不会遗漏
  • 构建阶段即可提前发现问题,配合CI/CD可自动化检测

内容的提问来源于stack exchange,提问作者Daniel Kaplan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 07:35:14