下是4种纯Less实现的响应式方案,均封装成可复用方法。

方案1:基础设备混合封装

// 定义设备断点变量
@mobile-max: 767px;
@tablet-min: 768px;
@tablet-max: 1024px;
@desktop-min: 1025px; // 设备混合
.mobile(@rules) {
@media (max-width: @mobile-max) {
@rules();
}
}
.tablet(@rules) {
@media (min-width: @tablet-min) and (max-width: @tablet-max) {
@rules();
}
}
.desktop(@rules) {
@media (min-width: @desktop-min) {
@rules();
}
} // 使用示例
.header {
font-size: 16px; .mobile({
font-size: 14px;
padding: 8px;
}); .tablet({
font-size: 15px;
padding: 12px;
}); .desktop({
font-size: 18px;
padding: 20px;
});
}

方案2:参数化设备查询

// 参数化混合
.device(@type, @rules) {
& when (@type = mobile) {
@media (max-width: 767px) { @rules(); }
}
& when (@type = tablet) {
@media (min-width: 768px) and (max-width: 1024px) { @rules(); }
}
& when (@type = desktop) {
@media (min-width: 1025px) { @rules(); }
}
} // 使用示例
.navbar {
height: 40px; .device(mobile, {
height: auto;
flex-direction: column;
}); .device(tablet, {
height: 50px;
padding: 0 15px;
});
}

方案3:可配置断点混合

// 通用响应式混合
.responsive(@min, @max, @rules) {
& when not (@min = 0) and not (@max = 0) {
@media (min-width: @min) and (max-width: @max) { @rules(); }
}
& when (@min = 0) {
@media (max-width: @max) { @rules(); }
}
& when (@max = 0) {
@media (min-width: @min) { @rules(); }
}
} // 使用示例
.card {
width: 100%; // 手机
.responsive(0, 767px, {
margin: 5px;
}); // 平板
.responsive(768px, 1024px, {
width: 48%;
margin: 8px;
}); // PC
.responsive(1025px, 0, {
width: 23%;
margin: 10px;
});
}

方案4:设备方向增强版

// 带设备方向检测
.orientation(@device, @dir, @rules) {
& when (@device = mobile) and (@dir = portrait) {
@media (max-width: 767px) and (orientation: portrait) { @rules(); }
}
& when (@device = mobile) and (@dir = landscape) {
@media (max-width: 767px) and (orientation: landscape) { @rules(); }
}
& when (@device = tablet) {
@media (min-width: 768px) and (max-width: 1024px) { @rules(); }
}
} // 使用示例
.gallery {
grid-template-columns: 1fr; .orientation(mobile, landscape, {
grid-template-columns: repeat(2, 1fr);
}); .orientation(tablet, _, {
grid-template-columns: repeat(3, 1fr);
});
}

方案选择建议:

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

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

  1. React中的响应式设计思想和事件绑定

    这两个点是react入门非常重要的两个点,以前我们是直接操作dom的形式去做,react的设计思想和以前直接操作dom是完全不同的,react是一个响应式的框架,他在做编程的时候,强调的是我们不要直接 ...

  2. Bootstrap 响应式设计

    本教程讲解如何在网页布局中应用响应式设计.在课程中,您将学到响应式 Web 设计.随着移动设备的普及,如何让用户通过移动设备浏览您的网站获得良好的视觉效果,已经是一个不可避免的问题了.响应式 Web ...

  3. 有关CSS中字体响应式的设置

    在进行页面响应式设计中,往往需要根据屏幕分辨率来显示不同大小的字体.通常的做法是通过media queries给不同的分辨率指定不同的字体样式,例如: body { font-size: 22px; ...

  4. CSS 响应式设计

    响应式设计是指在不同分辨率的设备中,网页布局可以自适应的调整.这种弹性化的布局使网站在不同设备中的布局都比较合理,可以为不同终端的用户提供更加舒适的界面和更好的用户体验,其根本理念是使原本 PC 上的 ...

  5. CSS中字体响应式的设置

    在进行页面响应式设计中,往往需要根据屏幕分辨率来显示不同大小的字体.通常的做法是通过media queries给不同的分辨率指定不同的字体样式,例如: body { font-size: 22px; ...

  6. css响应式设计

    响应式设计是指在不同分辨率的设备中,网页布局可以自适应的调整.这种弹性化的布局使网站在不同设备中的布局都比较合理,可以为不同终端的用户提供更加舒适的界面和更好的用户体验,其根本理念是使原本 PC 上的 ...

  7. 前端响应式设计中@media等的相关运用

    现在做前端响应式网站特别,响应式成为现在前端设计一个热点,它成为热点的最主要的原因就是,移动端设备屏幕的种类多样,那么如何设置响应式屏幕. /*打印样式*/ @mediaprint{color:red ...

  8. css新单位vw,vh在响应式设计中的应用

    考虑到未来响应式设计的开发,如果你需要,浏览器的高度也可以基于百分比值调整.但使用基于百分比值并不总是相对于浏览器窗口的大小定义的最佳方式,比如字体大小不会随着你窗口改变而改变,如今css3引入的新单 ...

  9. Windows10 UWP开发 - 响应式设计

      Windows10 UWP开发 - 响应式设计 本篇随笔与大家简单讨论一下在开发适配不同分辨率.宽高比的Windows10 Universal App布局时的可行方式与小技巧.经验均从实践中总结, ...

  10. HTML5实践 -- 使用CSS3 Media Queries实现响应式设计

    CSS3 Media用法介绍:http://www.w3cplus.com/content/css3-media-queries 转载请注明原创地址:http://www.cnblogs.com/so ...

随机推荐

  1. 使用 SOUI 开发高 DPI 桌面应用程序[转载]

    原文:使用 SOUI 开发高 DPI 桌面应用程序_吹泡泡的小猫的博客-CSDN博客 补充说明:soui3以后版本对dpi的支持更完善了,用起来也更简单了. 1 应用程序感知 DPI 变化 在 Win ...

  2. 容器的优势,在Docker中运行Tomcat

    本文分享自天翼云开发者社区<容器的优势,在Docker中运行Tomcat>,作者:d****e 一.容器与虚拟机的区别是什么 虚拟机:虚拟机是通过Hypervisor(虚拟机管理系统,常见 ...

  3. linux下创建idea的桌面快捷方式

    !!!使用linux系统安装idea才会用到: 在桌面上,新建文件,命名为:idea.desktop , (或者在别的地方创建后再放到桌面) 使用 vim 编辑该文件(或者不新建,直接vi idea. ...

  4. [JOISC2019] 聚会 题解

    随机化好题,但是不会证. 考虑把树看成一条链,链的每个点上缀了一棵树. 那么先随机出两个点 \(x,y\)(实际上随机一个点,另一个点固定似乎更好?),然后对于当前这棵树上的任意点 \(z\),都让他 ...

  5. WPF .Net Core 3.1遇到Satellite Assemblies无法正常加载的处理

    1.原因 加载的时候没有调取 AssemblyLoadContext.Default 2.解决方案: 在程序启动的时候,手动调用 /// <summary> /// Interaction ...

  6. Ansible - [04] 关于sudo的一些配置

    sudo sudo,以超级管理员或其他人的身份执行命令 基本流程 管理员需要先授权(修改/etc/sudoers文件) 普通用户以sudo的形式执行命令 可以通过sudo -l查看授权情况 配置sud ...

  7. Selenium IDE工具:火狐浏览器实例讲解IDE命令

    在本文中,通过Firefox浏览器上的示例学习Selenium IDE: 我们将使用的网址是"https://accounts.google.com"作为测试程序,通过本文你会 了 ...

  8. 🧠ChatGPT 中文提示语大全【超全 Prompt 用法】- 已分类

    基于 awesome-chatgpt-prompts 进行分类,更方便查找自己所需,炼制适合自己的ChatGPT法宝. 工作 简历写手 我需要你写一份<2年工作经验的前端工程师>的简历,你 ...

  9. 第十八届全国大学生信息安全竞赛暨第二届“长城杯”铁人三项赛web方向部分wp

    第十八届全国大学生信息安全竞赛暨第二届"长城杯"铁人三项赛web方向部分wp hello_web 查看源代码发现有两个文件,访问一下 Tips是phpinfo 里面可以看到disa ...

  10. Xshell连接VMware虚拟机中的CentOS

    步骤: 1. 检查Linux虚拟机的网络连接模式,确保它是NAT模式.(由于只在本机进行连接,所以没有选择桥接模式.当然,桥接模式的配置会有所不同,在此不做深入分析) 2. 在VMware works ...