断点系统
断点系统定义了项目的响应式设计规范,确保应用在不同设备上都能提供良好的用户体验。
📏 断点定义
SCSS 变量
scss
/* 响应式断点变量 */
$sm: 768px; // 小屏幕断点 (平板)
$md: 992px; // 中等屏幕断点 (小桌面)
$lg: 1200px; // 大屏幕断点 (桌面)
$xl: 1920px; // 超大屏幕断点 (宽屏)
/* 设备断点变量 */
$device-notebook: 1600px; // 笔记本电脑
$device-ipad-pro: 1180px; // iPad Pro
$device-ipad: 800px; // 标准 iPad
$device-ipad-vertical: 900px; // iPad 竖屏
$device-phone: 500px; // 手机设备
断点映射
scss
$breakpoints: (
'sm': $sm,
'md': $md,
'lg': $lg,
'xl': $xl
) !default;
🔧 响应式 Mixin
respond-to Mixin
scss
@mixin respond-to($breakpoint) {
@if $breakpoint == 'sm' {
@media (max-width: #{$sm}) {
@content;
}
} @else if $breakpoint == 'md' {
@media (max-width: #{$md}) {
@content;
}
} @else if $breakpoint == 'lg' {
@media (max-width: #{$lg}) {
@content;
}
} @else if $breakpoint == 'xl' {
@media (max-width: #{$xl}) {
@content;
}
} @else {
@warn "Unknown breakpoint: #{$breakpoint}";
}
}
🎯 使用示例
基础用法
scss
.component {
width: 100%;
@include respond-to('md') {
width: 80%;
}
@include respond-to('sm') {
width: 100%;
}
}
侧边栏响应式
scss
.sidebar {
width: 240px;
@include respond-to('md') {
width: 200px;
}
@include respond-to('sm') {
width: 100%;
}
}
字体大小响应式
scss
h1 {
font-size: 2.5rem;
@include respond-to('md') {
font-size: 2rem;
}
@include respond-to('sm') {
font-size: 1.75rem;
}
}
📱 设备特定断点
笔记本
scss
@media (max-width: $device-notebook) {
// 笔记本特定样式
}
iPad Pro
scss
@media (max-width: $device-ipad-pro) {
// iPad Pro 特定样式
}
移动端
scss
@media (max-width: $device-phone) {
// 手机特定样式
}
🎨 UnoCSS 响应式
使用 UnoCSS 断点
html
<!-- 移动端 -->
<div class="sm:hidden">桌面端显示</div>
<!-- 桌面端 -->
<div class="hidden sm:block">移动端显示</div>
<!-- 响应式布局 -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
<!-- 内容 -->
</div>
✅ 最佳实践
- 移动优先 - 先设计移动端,再适配桌面端
- 使用 Mixin - 统一使用
respond-to
mixin - 避免硬编码 - 使用预定义的断点变量
- 测试多端 - 确保在所有断点下正常显示
断点系统为项目提供了灵活的响应式设计能力,确保了良好的多端适配。