找回密码
 立即注册
首页 业界区 业界 Less中实现响应式设计的4种高效方案(手机、平板、电脑 ...

Less中实现响应式设计的4种高效方案(手机、平板、电脑端)

左丘平莹 2025-6-6 09:52:59
下是4种纯Less实现的响应式方案,均封装成可复用方法。
方案1:基础设备混合封装
  1. // 定义设备断点变量
  2. @mobile-max: 767px;
  3. @tablet-min: 768px;
  4. @tablet-max: 1024px;
  5. @desktop-min: 1025px;
  6. // 设备混合
  7. .mobile(@rules) {
  8.   @media (max-width: @mobile-max) {
  9.     @rules();
  10.   }
  11. }
  12. .tablet(@rules) {
  13.   @media (min-width: @tablet-min) and (max-width: @tablet-max) {
  14.     @rules();
  15.   }
  16. }
  17. .desktop(@rules) {
  18.   @media (min-width: @desktop-min) {
  19.     @rules();
  20.   }
  21. }
  22. // 使用示例
  23. .header {
  24.   font-size: 16px;
  25.   
  26.   .mobile({
  27.     font-size: 14px;
  28.     padding: 8px;
  29.   });
  30.   
  31.   .tablet({
  32.     font-size: 15px;
  33.     padding: 12px;
  34.   });
  35.   
  36.   .desktop({
  37.     font-size: 18px;
  38.     padding: 20px;
  39.   });
  40. }
复制代码
方案2:参数化设备查询
  1. // 参数化混合
  2. .device(@type, @rules) {
  3.   & when (@type = mobile) {
  4.     @media (max-width: 767px) { @rules(); }
  5.   }
  6.   & when (@type = tablet) {
  7.     @media (min-width: 768px) and (max-width: 1024px) { @rules(); }
  8.   }
  9.   & when (@type = desktop) {
  10.     @media (min-width: 1025px) { @rules(); }
  11.   }
  12. }
  13. // 使用示例
  14. .navbar {
  15.   height: 40px;
  16.   
  17.   .device(mobile, {
  18.     height: auto;
  19.     flex-direction: column;
  20.   });
  21.   
  22.   .device(tablet, {
  23.     height: 50px;
  24.     padding: 0 15px;
  25.   });
  26. }
复制代码
方案3:可配置断点混合
  1. // 通用响应式混合
  2. .responsive(@min, @max, @rules) {
  3.   & when not (@min = 0) and not (@max = 0) {
  4.     @media (min-width: @min) and (max-width: @max) { @rules(); }
  5.   }
  6.   & when (@min = 0) {
  7.     @media (max-width: @max) { @rules(); }
  8.   }
  9.   & when (@max = 0) {
  10.     @media (min-width: @min) { @rules(); }
  11.   }
  12. }
  13. // 使用示例
  14. .card {
  15.   width: 100%;
  16.   
  17.   // 手机
  18.   .responsive(0, 767px, {
  19.     margin: 5px;
  20.   });
  21.   
  22.   // 平板
  23.   .responsive(768px, 1024px, {
  24.     width: 48%;
  25.     margin: 8px;
  26.   });
  27.   
  28.   // PC
  29.   .responsive(1025px, 0, {
  30.     width: 23%;
  31.     margin: 10px;
  32.   });
  33. }
复制代码
方案4:设备方向增强版
  1. // 带设备方向检测
  2. .orientation(@device, @dir, @rules) {
  3.   & when (@device = mobile) and (@dir = portrait) {
  4.     @media (max-width: 767px) and (orientation: portrait) { @rules(); }
  5.   }
  6.   & when (@device = mobile) and (@dir = landscape) {
  7.     @media (max-width: 767px) and (orientation: landscape) { @rules(); }
  8.   }
  9.   & when (@device = tablet) {
  10.     @media (min-width: 768px) and (max-width: 1024px) { @rules(); }
  11.   }
  12. }
  13. // 使用示例
  14. .gallery {
  15.   grid-template-columns: 1fr;
  16.   
  17.   .orientation(mobile, landscape, {
  18.     grid-template-columns: repeat(2, 1fr);
  19.   });
  20.   
  21.   .orientation(tablet, _, {
  22.     grid-template-columns: repeat(3, 1fr);
  23.   });
  24. }
复制代码
方案选择建议:

  • 基础混合:适合明确的三段式断点需求
  • 参数化混合:需要动态选择设备类型时使用
  • 可配置断点:适合需要灵活调整断点的项目
  • 方向增强:需要处理横竖屏差异时使用

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册