PC端自适应使用rem

PC端自适应使用rem做一个 PC 端的网页 设计图是 1920X1080 要在常见屏上显示正常 比如 1280XXXX1080 就要使用 REM width height margin padding left top 都采用了 REM 一 如何使用 1 PC 端当浏览器窗口变化时 内容的大小以及相对位置也会相应变化 这个依靠 JS 修改 HTML 的 FONT SIZE 值实现 如下

1、PC端
当浏览器窗口变化时,内容的大小以及相对位置也会相应变化,这个依靠JS修改HTML的FONT-SIZE值实现.如下:

;(function(win) {
    		var tid;
    		function refreshRem() {
    			let designSize = 1920; // 设计图尺寸
    			let html = document.documentElement;
    			let wW = html.clientWidth;// 窗口宽度
    			let rem = wW * 100 / designSize; 
    			document.documentElement.style.fontSize = rem + 'px';
    	    }
	     
	    win.addEventListener('resize', function() {
	    	clearTimeout(tid);
	    	tid = setTimeout(refreshRem, 300);
	    }, false);
	    win.addEventListener('pageshow', function(e) {
	    	if (e.persisted) {
	    		clearTimeout(tid);
	    		tid = setTimeout(refreshRem, 300);
	    	}
	    }, false);

	    refreshRem();

	})(window);

计算font-size的逻辑是:
当设计图是1920时,规定HTML的FONT-SIZE的值是100. 也就是,当浏览器窗口调整到1920PX时,1REM=100PX,如果要设定一个160PX(1920设计图时)的margin-top,那么REM设置值是1.6rem.

2、移动端

由于手机上一般不会调整浏览器大小,所以可以在页面载入时,设置一次即可

$(function(){

  let designSize = 750; // 设计图尺寸

  let html = document.documentElement;

  let wW = html.clientWidth;// 窗口宽度
  let rem = wW * 100 / designSize; 

  document.documentElement.style.fontSize = rem + 'px';
})

使用REM能够较好的自适应移动端

手机平板移动设备的宽度不超过1080,如果设备已经超过了这个宽度,则不应再计算html的font-size值了.因为已经是PC屏幕了.

if ( window.innerWidth>1080)

return;

3、移动端适配升级版
首先我使用sublime进行开发,可以先在github上下载css转rem工具代码:cssrem
链接:https://github.com/flashlizi/cssrem
设置px_to_rem为37.5,可以写死,意思就是使用ipone6屏幕尺寸进行开发
vscode可以使用px to rem & rpx (cssrem)进行转换。修改默认16px为18.75








rem代码:放在JS中

(function(win) { 
    var docEl = win.document.documentElement; var tid; function setRemUtils() { 
    // 获取rem基准值 var rem = docEl.clientWidth / 20;// 窗口宽度,如果是750设计图,则将10改为20 // 动态设置html根元素的font-size  docEl.style.fontSize = rem + 'px'; } setRemUtils(); // 窗口变化时触发 win.addEventListener('resize', function() { 
    clearTimeout(tid); tid = setTimeout(setRemUtils, 300); }, false); win.addEventListener('pageshow', function(e) { 
    if (e.persisted) { 
    clearTimeout(tid); tid = setTimeout(setRemUtils, 300); } }, false); })(window) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213837.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午5:32
下一篇 2026年3月18日 下午5:33


相关推荐

  • 人工神经网络(ANN)及BP算法[通俗易懂]

    人工神经网络(ANN)及BP算法[通俗易懂]1什么是神经网络1.1基本结构说明:通常一个神经网络由一个inputlayer,多个hiddenlayer和一个outputlayer构成。图中圆圈可以视为一个神经元(又可以称为感知器)设计神经网络的重要工作是设计hiddenlayer,及神经元之间的权重添加少量隐层获得浅层神经网络SNN;隐层很多时就是深层神经网络DNN1.2从逻辑回归到神经元LinearRegres

    2025年10月28日
    3
  • SQL索引创建原则、创建与删除示例

    SQL索引创建原则、创建与删除示例一 索引创建原则 表的主键 外键必须有索引 数据量超过 300 的表应该有索引 经常与其他表进行连接的表 在连接字段上应该建立索引 经常出现在 Where 子句中的字段 特别是大表的字段 应该建立索引 索引应该建在选择性高的字段上 索引应该建在小字段上 对于大的文本字段甚至超长字段 例如数据类型为 text 或 ntext 的字段 不要建索引 频繁进行数据操作的表 不要建立太多的索引 删除无用的索

    2026年3月26日
    0
  • 根据IP定位用户所在城市信息

    根据IP定位用户所在城市信息

    2021年10月23日
    138
  • MSVCR110.dll缺失问题

    MSVCR110.dll缺失问题电脑出现无法启动此程序 因为计算机中丢失 MSVCR110 dll 尝试重新安装该程序以解决此问题 是此程序的成功运行需要 msvcr110 dll 文件来支持 1 下载 msvcr110 dll 文件 2 将 msvcr110 dll 文件直接拷贝到 c Windows System32 文件夹目录下 例如图

    2025年10月2日
    3
  • 小米pro显示无服务器,【解决】小米WiFi放大器pro连接不稳定/连接后无网络的问题!!!…

    小米pro显示无服务器,【解决】小米WiFi放大器pro连接不稳定/连接后无网络的问题!!!…首先说明一下 我分享的方法并不是根治问题的办法 放大器信号不稳定或者无网络连接的情况还是会有 你想要信号放大器达到线连的稳定和速度 散了吧散了吧 但是每次问题出现的时候 使用我的办法处理 绝对是相对快速且稳定的 我的办法简单概括就是 全套重启 就像电脑 90 的常见问题都能通过 重装系统 解决一样 一 提前准备 1 智能手机 2 米家 APP3 卡针 牙签 用于重置放大器 4 您的耐心 用于压制断网

    2026年3月20日
    1
  • Django(67)drf搜索过滤和排序过滤「建议收藏」

    Django(67)drf搜索过滤和排序过滤「建议收藏」前言当我们需要对后台的数据进行过滤的时候,drf有两种,搜索过滤和排序过滤。搜索过滤:比如我们想返回sex=1的,那么我们就可以从所有数据中进行筛选排序过滤:比如我们想对价格进行升序排列,就可以

    2022年7月29日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号