# LESS 使用指南 ## 概述 本项目已全面从 CSS 转换为 LESS,使用 LESS 的嵌套结构、变量、混合等特性来提高代码的可维护性和复用性。 ## 🎯 LESS 的优势 ### 1. **嵌套结构** - 更清晰的代码层次结构 - 减少选择器重复 - 提高代码可读性 ### 2. **变量系统** - 统一的颜色、字体、间距管理 - 快速修改全局样式 - 减少重复值 ### 3. **混合(Mixins)** - 可复用的样式块 - 参数化样式 - 减少代码重复 ### 4. **函数和运算** - 动态计算尺寸 - 颜色混合和透明度 - 响应式断点管理 ## 📁 文件结构 ``` src/assets/css/ ├── variables.less # 全局变量定义 ├── common.less # 通用样式 ├── animations.less # 动画效果 ├── mobile_responsive.less # 移动端响应式 └── common_mobile.less # 通用移动端适配 ``` ## 🔧 已配置的 LESS 功能 ### 1. **全局变量** - 颜色系统(主色、成功、警告、错误等) - 字体系统(大小、行高、字重) - 间距系统(内边距、外边距) - 断点系统(移动端、平板、桌面) - 动画系统(时长、缓动、延迟) ### 2. **响应式混合** ```less .mobile({ // 移动端样式 }); .tablet({ // 平板端样式 }); .desktop({ // 桌面端样式 }); ``` ### 3. **设备检测混合** ```less .touch-device({ // 触摸设备样式 }); .high-dpi({ // 高分辨率屏幕样式 }); .landscape({ // 横屏模式样式 }); ``` ## 📝 使用方法 ### 1. **引入变量文件** ```less @import './variables.less'; ``` ### 2. **使用变量** ```less .button { background-color: @primary-color; padding: @padding-md; border-radius: @border-radius-base; font-size: @font-size-base; } ``` ### 3. **嵌套结构** ```less .card { padding: @card-padding-base; border: @border-width-base solid @border-color; .card-header { padding: @padding-md; border-bottom: @border-width-base solid @border-color-light; .card-title { font-size: @font-size-h4; color: @heading-color; margin: 0; } } .card-body { padding: @padding-md; .card-text { color: @text-color; line-height: @line-height-base; } } } ``` ### 4. **使用混合** ```less .responsive-button { .mobile({ width: 100%; padding: @padding-sm; font-size: @font-size-sm; }); .tablet({ width: auto; padding: @padding-md; font-size: @font-size-base; }); .desktop({ padding: @padding-lg; font-size: @font-size-lg; }); } ``` ### 5. **颜色操作** ```less .button { background-color: @primary-color; &:hover { background-color: lighten(@primary-color, 10%); } &:active { background-color: darken(@primary-color, 10%); } &.disabled { background-color: fade(@primary-color, 50%); } } ``` ## 🎨 颜色系统 ### 主色调 - `@primary-color`: #3498db - `@primary-light`: #5dade2 - `@primary-dark`: #2980b9 - `@primary-lighter`: #ebf3fd ### 功能色 - `@success-color`: #52c41a - `@warning-color`: #faad14 - `@error-color`: #f5222d - `@info-color`: #1890ff ### 中性色 - `@white`: #ffffff - `@black`: #000000 - `@gray-1` 到 `@gray-10`: 从浅到深的灰色 ## 📱 响应式断点 ### 断点变量 - `@screen-xs`: 480px - `@screen-sm`: 576px - `@screen-md`: 768px - `@screen-lg`: 992px - `@screen-xl`: 1200px - `@screen-xxl`: 1600px ### 设备断点 - `@mobile-breakpoint`: 768px - `@tablet-breakpoint`: 992px - `@desktop-breakpoint`: 1200px ## 🔄 动画系统 ### 动画时长 - `@animation-duration-base`: 0.2s - `@animation-duration-fast`: 0.1s - `@animation-duration-slow`: 0.3s - `@animation-duration-slower`: 0.5s ### 动画缓动 - `@animation-timing-base`: ease - `@animation-timing-ease-in`: ease-in - `@animation-timing-ease-out`: ease-out - `@animation-timing-ease-in-out`: ease-in-out - `@animation-timing-linear`: linear ## 🛠️ 开发工具 ### 1. **Vue CLI 配置** 项目已配置 LESS 支持,包括: - LESS 编译器 - 全局变量注入 - 自动前缀处理 ### 2. **构建命令** ```bash # 开发模式 yarn serve # 生产构建 yarn build ``` ## 📋 最佳实践 ### 1. **变量命名** - 使用语义化名称 - 遵循 BEM 命名规范 - 保持命名一致性 ### 2. **嵌套深度** - 避免超过 3 层嵌套 - 使用 `&` 符号引用父选择器 - 保持选择器简洁 ### 3. **混合使用** - 创建可复用的混合 - 参数化常用样式 - 避免过度抽象 ### 4. **文件组织** - 按功能模块组织文件 - 使用 `@import` 引入依赖 - 保持文件结构清晰 ## 🚀 性能优化 ### 1. **变量缓存** - 减少重复计算 - 使用预定义值 - 避免运行时计算 ### 2. **选择器优化** - 避免过深嵌套 - 使用类选择器 - 减少选择器复杂度 ### 3. **媒体查询优化** - 使用混合管理断点 - 避免重复的媒体查询 - 合并相似的样式规则 ## 🔍 调试技巧 ### 1. **浏览器开发工具** - 查看编译后的 CSS - 检查选择器优先级 - 调试响应式样式 ### 2. **LESS 编译错误** - 检查语法错误 - 验证变量引用 - 确认文件路径 ### 3. **样式冲突** - 使用 `!important` 谨慎 - 检查选择器特异性 - 验证样式继承 ## 📚 学习资源 ### 1. **官方文档** - [LESS 官网](http://lesscss.org/) - [LESS 语言特性](http://lesscss.org/features/) - [LESS 函数参考](http://lesscss.org/functions/) ### 2. **在线工具** - [LESS 在线编译器](http://lesscss.org/less-preview/) - [LESS 语法检查器](https://github.com/less/less.js) ### 3. **社区资源** - [LESS GitHub](https://github.com/less/less.js) - [LESS 论坛](https://github.com/less/less.js/discussions) ## 🎉 总结 通过使用 LESS,我们实现了: 1. **更好的代码组织**:嵌套结构和模块化文件 2. **统一的样式管理**:全局变量和混合系统 3. **高效的开发流程**:快速修改和样式复用 4. **响应式设计**:断点管理和设备适配 5. **维护性提升**:清晰的代码结构和语义化命名 LESS 为项目提供了强大的样式管理能力,让开发更加高效,维护更加简单。