CSS格式化工具

专业的CSS代码格式化工具,支持美化、压缩、属性排序等多种功能

输入CSS代码

粘贴需要格式化的CSS代码

0 字符 0 行

格式化选项

选择格式化方式

格式化类型

缩进方式

缩进大小

其他选项

格式化结果

格式化后的CSS代码

原始大小: 0 字符
格式化后: 0 字符
压缩率: 0%

选择器提取

提取CSS中的所有选择器

代码示例

以下是在不同编程语言中格式化CSS的代码示例:

JavaScript CSS格式化

// CSS压缩
function minifyCSS(css) {
    return css
        .replace(/\/\*[\s\S]*?\*\//g, '') // 移除注释
        .replace(/\s+/g, ' ') // 合并空白
        .replace(/\s*([{}:;,])\s*/g, '$1') // 移除符号周围的空白
        .replace(/;\}/g, '}') // 移除最后一个分号
        .trim();
}

// CSS美化
function beautifyCSS(css, indent = '    ') {
    let formatted = '';
    let indentLevel = 0;
    
    // 移除多余空白
    css = css.replace(/\s+/g, ' ');
    
    // 处理每个字符
    for (let i = 0; i < css.length; i++) {
        const char = css[i];
        
        if (char === '{') {
            formatted += ' {\n' + indent.repeat(indentLevel + 1);
            indentLevel++;
        } else if (char === '}') {
            indentLevel--;
            formatted += '\n' + indent.repeat(indentLevel) + '}';
        } else if (char === ';') {
            formatted += ';\n' + indent.repeat(indentLevel);
        } else if (char === ',') {
            formatted += ', ';
        } else {
            formatted += char;
        }
    }
    
    return formatted.trim();
}

// 提取CSS选择器
function extractSelectors(css) {
    const selectorRegex = /([^{]+){/g;
    const selectors = [];
    let match;
    
    while ((match = selectorRegex.exec(css)) !== null) {
        const selector = match[1].trim();
        if (selector) {
            selectors.push(selector);
        }
    }
    
    return selectors;
}

// 提取CSS属性
function extractProperties(css) {
    const propertyRegex = /([^{}:]+):\s*([^{};]+);/g;
    const properties = [];
    let match;
    
    while ((match = propertyRegex.exec(css)) !== null) {
        properties.push({
            property: match[1].trim(),
            value: match[2].trim()
        });
    }
    
    return properties;
}

// 按字母排序属性
function sortCSSProperties(css) {
    const blocks = css.split('}');
    const sortedBlocks = blocks.map(block => {
        const parts = block.split('{');
        if (parts.length !== 2) return block;
        
        const selector = parts[0].trim();
        const properties = parts[1].split(';').filter(p => p.trim());
        
        // 按字母排序属性
        properties.sort((a, b) => {
            const propA = a.split(':')[0].trim();
            const propB = b.split(':')[0].trim();
            return propA.localeCompare(propB);
        });
        
        return `${selector} {\n${properties.map(p => `    ${p.trim()}`).join(';\n')};\n}`;
    });
    
    return sortedBlocks.join('\n');
}

// 颜色格式转换 HEX → RGB
function hexToRGB(hex) {
    const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
    return result ? {
        r: parseInt(result[1], 16),
        g: parseInt(result[2], 16),
        b: parseInt(result[3], 16)
    } : null;
}

function convertHexToRGBString(hex) {
    const rgb = hexToRGB(hex);
    return rgb ? `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})` : hex;
}

Python CSS处理

import re

# CSS压缩
def minify_css(css):
    # 移除注释
    css = re.sub(r'/\*[\s\S]*?\*/', '', css)
    # 合并空白
    css = re.sub(r'\s+', ' ', css)
    # 移除符号周围的空白
    css = re.sub(r'\s*([{}:;,])\s*', r'\1', css)
    # 移除最后一个分号
    css = css.replace(';}', '}')
    return css.strip()

# CSS美化
def beautify_css(css, indent='    '):
    formatted = ''
    indent_level = 0
    
    # 移除多余空白
    css = re.sub(r'\s+', ' ', css)
    
    i = 0
    while i < len(css):
        char = css[i]
        
        if char == '{':
            formatted += ' {\n' + indent * (indent_level + 1)
            indent_level += 1
        elif char == '}':
            indent_level -= 1
            formatted += '\n' + indent * indent_level + '}'
        elif char == ';':
            formatted += ';\n' + indent * indent_level
        elif char == ',':
            formatted += ', '
        else:
            formatted += char
        
        i += 1
    
    return formatted.strip()

# 提取CSS选择器
def extract_selectors(css):
    pattern = r'([^{]+){'
    selectors = re.findall(pattern, css)
    return [s.strip() for s in selectors if s.strip()]

# 提取CSS属性
def extract_properties(css):
    pattern = r'([^{}:]+):\s*([^{};]+);'
    matches = re.findall(pattern, css)
    return [{'property': m[0].strip(), 'value': m[1].strip()} for m in matches]

# 按字母排序属性
def sort_css_properties(css):
    blocks = css.split('}')
    sorted_blocks = []
    
    for block in blocks:
        parts = block.split('{')
        if len(parts) != 2:
            sorted_blocks.append(block)
            continue
        
        selector = parts[0].strip()
        properties = parts[1].split(';')
        properties = [p.strip() for p in properties if p.strip()]
        
        # 按字母排序
        properties.sort(key=lambda x: x.split(':')[0].strip())
        
        formatted_props = '\n    '.join([f'{p};' for p in properties])
        sorted_blocks.append(f'{selector} {{\n    {formatted_props}\n}}')
    
    return '\n'.join(sorted_blocks)

# HEX 转 RGB
def hex_to_rgb(hex_color):
    hex_color = hex_color.lstrip('#')
    return tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4))

def hex_to_rgb_string(hex_color):
    r, g, b = hex_to_rgb(hex_color)
    return f'rgb({r}, {g}, {b})'

关于CSS格式化

为什么要格式化CSS?

CSS格式化是指将CSS代码按照一定的规范进行排版和缩进,使代码更易读、易维护。良好的代码格式可以提高团队协作效率,减少代码审查时间,便于后续维护。

CSS压缩 vs 美化

  • CSS美化(展开格式):增加缩进、换行,使代码易于阅读和编辑。适合开发环境。
  • CSS压缩(精简格式):移除所有不必要的空白、注释,减少文件大小。适合生产环境,可以加快页面加载速度。

CSS属性排序

按照一定规则对CSS属性进行排序,可以让样式表更加规范。常见的排序方式包括:

  • 字母顺序:按属性名称的字母顺序排列
  • 功能分组:按属性功能分组(定位、盒模型、排版、视觉效果等)
  • IE浏览器顺序:按IE浏览器的渲染顺序排列

常见的CSS代码风格

多行格式(推荐用于开发):

.container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
}

单行格式(适合压缩):

.container{width:100%;max-width:1200px;margin:0 auto}

CSS最佳实践

  • 使用有意义的类名和ID名
  • 避免使用 !important
  • 使用CSS变量(自定义属性)
  • 保持选择器简洁
  • 使用缩写属性(如 margin、padding)
  • 考虑使用预处理器(Sass、Less)