Files
official_network/docs/LESS使用指南.md
张成 3ed48736b6 1
2025-08-25 15:57:54 +08:00

313 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 为项目提供了强大的样式管理能力,让开发更加高效,维护更加简单。