HTML5中如何实现rpx布局

article/2025/10/6 6:38:19

HTML5中如何实现rpx布局

引导

我们在实际工作中会遇到很多情况会用到rpx布局,rpx布局的原理是将屏幕横向划分750份,每份即是1rpx。从原理上,rpx有很好的多端适配能力,而且比em、rem、vw、vh有更直观的表达能力,而且与百分比布局不同,它可以无视父容器的宽高,团队的新手都能看懂,设计稿转页面的时候也大多是用rpx来做布局的。有些情况下,我们必须要依赖Freemarker、Velocity等模板引擎进行服务器端渲染,或者我们只想做一个简简单单的HTML页,不希望动辄npm编译数分钟,那怎么才能实现rpx布局呢?不多说,直接上代码。

核心代码

创建一个js文件,命名为rpx4html.js,这个js文件就是用来将px翻译为rpx的工具。比如我们要有一个占满全宽的div,直接设置width:750px即可,使用该js,即可自动把750px当做750rpx来运算。

/*** 传统HTML支持RPX工具** 使用方法:* 1、引入* 2、在body之前执行** 注意事项:* 1、简写的不认(比如border:#f3f3f3 1px solid是不识别的)* 2、写的时候要用px,不要用rpx* 3、不支持不同源的link* 4、只能执行一次,否则会算错* 5、不要试图往resize事件里放** @author 杨若瑜*/(function () {var isReady = false;var readyList = [];var timer;whenDocumentReady = function (fn) {if (isReady) fn.call(document);elsereadyList.push(function () {return fn.call(this);});return this;};var onDOMReady = function () {for (var i = 0; i < readyList.length; i++) {readyList[i].apply(document);}readyList = null;};var bindReady = function (evt) {if (isReady) return;isReady = true;onDOMReady.call(window);if (document.removeEventListener) {document.removeEventListener('DOMContentLoaded', bindReady, false);} else if (document.attachEvent) {document.detachEvent('onreadystatechange', bindReady);if (window == window.top) {clearInterval(timer);timer = null;}}};if (document.addEventListener) {document.addEventListener('DOMContentLoaded', bindReady, false);} else if (document.attachEvent) {document.attachEvent('onreadystatechange', function () {if (/loaded|complete/.test(document.readyState)) bindReady();});if (window == window.top) {timer = setInterval(function () {try {isReady || document.documentElement.doScroll('left');} catch (e) {return;}bindReady();}, 5);}}
})();let rpx4html = () => {let globalWidth = document.documentElement.clientWidth;let perRpx = globalWidth / 750;for (let ssi in document.styleSheets) {let sheet = document.styleSheets[ssi];if (sheet.cssRules) {for (let cri in sheet.cssRules) {let rule = sheet.cssRules[cri];for (let si in rule.style) {let name = rule.style[si];let value = rule.style[name];if (value && value.indexOf('px') > -1 && value.search('^[0-9]+px$') > -1) {let num = new Number(value.match('[0-9]+')[0]);rule.style[name] = num * perRpx + 'px';}}}}}
};whenDocumentReady(rpx4html);

如何使用

比较稳妥的使用方式是在所有link引入css和style之后引入这个js

<script src="rpx4html.js"></script>

例如:
我们写个HTML:

<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>rpx4html-demo</title><link rel="stylesheet" href="demo.css"><script src="rpx4html.js"></script></head><body><div class="test">标题栏</div></body>
</html>

引入demo.css

html,
body {padding: 0;margin: 0;
}
.test {width: 750px;height: 100px;font-size: 32px;font-weight: bold;background-color: #2e66af;color: white;display: flex;justify-content: center;align-items: center;font-family: 'PingFangSC-Regular','微软雅黑','Arial';
}

结果测试

在这里插入图片描述
如图,在加载页面之后,各个px都会按照rpx来重新计算尺寸。很好的实现了rpx布局规则在传统html上的落地应用。


http://chatgpt.dhexx.cn/article/osTwMKNu.shtml

相关文章

前端开发_HTML5_布局-栅格布局

栅格布局 1.引入 我们之前学习了多个布局的方式&#xff0c;下面我们一起来学习一种比较重要的布局方式&#xff1a;栅格布局。栅格布局是一种较为特殊的弹性布局&#xff0c;栅格(grid)是一种自适应布局&#xff0c;能根据不同终端自动伸缩容器的宽高。flex根据轴线(axis)布…

前端开发_HTML5_布局-流式布局

流式布局 1.引入 上一次课中我们讲解了表格布局&#xff0c;但是我们也可以看出表格布局存在着很大的局限性&#xff0c;那就是当页面的内容比较多的时候我们发现是无法使用表格布局实现的&#xff0c;那么接下来我们学习一个比较重要的布局方式——流式布局。 2.流式布局 流…

HTML——flex布局

学习flex布局的知识要点 flex盒子的布局原理 flex布局的常用属性 flex布局体验 与传统布局相比&#xff1a; 传统布局&#xff1a; 兼容性好&#xff0c;但布局繁琐&#xff0c;有局限性&#xff0c;不能很好的在移动端完成布局。 flex弹性布局&#xff1a; 操作方便&…

HTML布局之grid布局

1. 关于grid布局 1.1 什么是grid布局 grid布局&#xff1a;grid布局是非常强大的css布局&#xff0c;它将容器划分成"行"和"列"&#xff0c;产生单元格&#xff0c;然后指定"项目所在"的单元格&#xff0c;可以看作是二维布局。 1.2 容器和项…

html5手机端页面布局,移动端H5常见的布局方式有哪些

随着智能手机的普及以及社会的发展,传统的网站布局已经无法适应现状,我们编写的网页不仅仅要展示在电脑上, 也要展示在移动设备上,而移动设备种类繁多,苹果、小米、三星等等很不好适配 移动端设备屏幕尺寸非常多,碎片化严重,Android和苹果设备有多种分辨率:480x800, 48…

HTML表格布局

HTML中可以在网页上制作表格 表格标签 <table> ------- 用于定义一个表格 &#xff1b; <thead> ---- 定义表头&#xff1b; <tr> ---- 行&#xff1b; <td> ---- 列 单元格 必须放在 tr&#xff1b; <tbody> --- 主干&#xff1b; <tfo…

HTML5学习(三):布局标签、列表、超链接和id

1、布局标签 header表示网页的头部&#xff08;页眉&#xff09;main表示网页的主体部分&#xff08;一个页面中只会有一个main&#xff09;footer表示网页的底部&#xff08;页脚&#xff09;nav表示网页中的导航aside和主体相关的其他内容&#xff08;侧边栏&#xff09;art…

网页整体布局基本模板

一、效果 二、代码 1、html文件 <!DOCTYPE> <html><head><meta charset"utf-8"/><title>网页名称</title><link rel"stylesheet" href"html5.css"></head><body><header><h1&…

前端开发_HTML5_布局-响应式布局

响应式布局 1.引入 我们通过之前的学习&#xff0c;学习了多种不同的布局方式。我们学习布局是为了解决页面样式的问题。我们知道HTML5不仅仅可以在电脑端显示&#xff0c;而且它还可以在手机端和平板端显示&#xff0c;但是我们会发现一个问题&#xff0c;当我们在电脑端调整…

html的表格布局

一、表格的属性 在 HTML 中&#xff0c;我们使用 <table> 标签来定义表格。HTML 中的表格和 Excel 中的表格是类似的&#xff0c;都包括行、列、单元格、表头等元素。除此之外还可以为你的制作有更好的呈现效果。 定义表头thead行tr列td主干tbody尾tfoot边框border表格宽…

HTML5 弹性布局

弹性布局 弹性布局相关属性 flex-direction相关属性 flex-wrap相关属性 justify-content相关属性 align-items相关属性 align-content相关属性 样例Demo 弹性布局相关属性 属性说明display值为flex时&#xff0c; 创建弹性布局容器flex-direct…

MySQL的缓存使用

MySQL的缓存功能,在开启时,执行相同的SQL查询语句时,会直接中获取结果集返回,当数据被修改,删除,新增等操作后, 缓存被清除. 1 MySQL语句执行的流程 1 客户端向服务端发起查询, 将查询SQL发给MySQL服务器. 2 服务器先查看缓存中是否存在,缓存命中,则直接返回. 3 服务器进行SQ…

缓存(本地缓存、分布式缓存)与数据库之间的数据一致性问题

点击上方“Java基基”&#xff0c;选择“设为星标” 做积极的人&#xff0c;而不是积极废人&#xff01; 每天 14:00 更新文章&#xff0c;每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路&#xff0c;很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应…

MySQL缓存机制

1. MySQL缓存简介 MySQL缓存机制说明 MySQL缓存机制即缓存sql 文本及缓存结果&#xff0c;用KV形式保存再服务器内存中&#xff0c;如果运行相同的sql&#xff0c;服务器直接从缓存中去获取结果&#xff0c;不需要再去解析、优化、执行sql MySQL缓存失效 在表的结构或数据发生…

为什么数据库缓存如此重要?

您在数据库中拥有的信息越多&#xff0c;它随着时间的推移就会越慢。即使是为支持许多并发请求而精心设计的数据库管理系统也将最终达到极限。 数据库缓存是处理这些性能问题的最常见策略之一。缓存涉及将数据库查询的结果保存在更快&#xff0c;更容易访问的位置。正确完成后…

缓存 (模拟两种:数据库提供数据到缓存、外界提供数据到缓存)

一、缓存的作用 因此就有了缓存的作用&#xff1a; 代码模拟上面缓存的作用如下所示&#xff1a; 就拿以前我们做的通过id查询单条数据功能&#xff1a; 当开启服务器后&#xff0c;客户端访问该通过id查询单条数据功能时&#xff08;假设连续访问两次&#xff09;&#xff1a…

mysql的查询缓存

提高单台节点的性能无外乎就那么几种方式&#xff0c;缓存是首当其冲的&#xff0c;因为内存的性能比磁盘高的太多。缓存也是一种典型的空间换时间的策略 缓存的实现也有太多的方式&#xff0c;从静态页面缓存到服务端动态缓存&#xff0c;再到数据库级别缓存等等。随着大数据的…

缓存(本地缓存、分布式缓存)与数据库之间的数据一致性问题?

在现在的系统架构中&#xff0c;缓存的地位可以说是非常高的。因为在互联网的时代&#xff0c;请求的并发量可能会非常高&#xff0c;但是关系型数据库对于高并发的处理能力并不是非常强&#xff0c;而缓存由于是在内存中处理&#xff0c;并不需要磁盘的IO&#xff0c;所以非常…

mysql数据库缓存

一、开启缓存 mysql 开启查询缓存可以有两种方法来开启一种是使用set命令来进行开启&#xff0c;另一种是直接修改my.ini文件来直接设置都是非常的简单的哦。 开启缓存&#xff0c;设置缓存大小&#xff0c;具体实施如下&#xff1a; 1、修改配置文件my.ini windows下是my.i…

mysql 缓存机制

mysql缓存机制就是缓存sql 文本及缓存结果&#xff0c;用KV形式保存再服务器内存中&#xff0c;如果运行相同的sql,服务器直接从缓存中去获取结果&#xff0c;不需要在再去解析、优化、执行sql。 如果这个表修改了&#xff0c;那么使用这个表中的所有缓存将不再有效&#xff0c…