Files
meeting-room/frontend/node_modules/@csstools/selector-specificity/README.md
flying-hero 96f6318101 📦 添加虚拟环境和启动脚本
新增:
- backend/venv/ - Python 虚拟环境
- backend/start.sh - 启动脚本(使用虚拟环境)
- backend/requirements.txt - 依赖列表
- .gitignore - 忽略虚拟环境和缓存文件

说明:
- 每个项目使用独立虚拟环境
- 避免依赖冲突
- 启动脚本自动创建和激活虚拟环境
2026-04-04 18:29:02 +08:00

2.1 KiB

Selector Specificity

npm version Build Status Discord

Usage

Add Selector Specificity to your project:

npm install postcss @csstools/selector-specificity --save-dev
import parser from 'postcss-selector-parser';
import { selectorSpecificity } from '@csstools/selector-specificity';

const selectorAST = parser().astSync('#foo:has(> .foo)');
const specificity = selectorSpecificity(selectorAST);

console.log(specificity.a); // 1
console.log(specificity.b); // 1
console.log(specificity.c); // 0

selectorSpecificity takes a single selector, not a list of selectors (not : a, b, c). To compare or otherwise manipulate lists of selectors you need to call selectorSpecificity on each part.

Comparing

The package exports a utility function to compare two specificities.

import { selectorSpecificity, compare } from '@csstools/selector-specificity';

const s1 = selectorSpecificity(ast1);
const s2 = selectorSpecificity(ast2);
compare(s1, s2); // -1 | 0 | 1
  • if s1 < s2 then compare(s1, s2) returns a negative number (< 0)
  • if s1 > s2 then compare(s1, s2) returns a positive number (> 0)
  • if s1 === s2 then compare(s1, s2) returns zero (=== 0)

Prior Art

For CSSTools we always use postcss-selector-parser and want to calculate specificity from this AST.